@spinajs/queue 2.0.86 → 2.0.88
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/lib/{BlackHoleQueueClient.d.ts → cjs/BlackHoleQueueClient.d.ts} +0 -0
- package/lib/cjs/BlackHoleQueueClient.d.ts.map +1 -0
- package/lib/cjs/BlackHoleQueueClient.js +30 -0
- package/lib/cjs/BlackHoleQueueClient.js.map +1 -0
- package/lib/{config → cjs/config}/queue.d.ts +0 -0
- package/lib/cjs/config/queue.d.ts.map +1 -0
- package/lib/cjs/config/queue.js +18 -0
- package/lib/cjs/config/queue.js.map +1 -0
- package/lib/{decorators.d.ts → cjs/decorators.d.ts} +0 -0
- package/lib/cjs/decorators.d.ts.map +1 -0
- package/lib/cjs/decorators.js +36 -0
- package/lib/cjs/decorators.js.map +1 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +168 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{interfaces.d.ts → cjs/interfaces.d.ts} +0 -0
- package/lib/cjs/interfaces.d.ts.map +1 -0
- package/lib/cjs/interfaces.js +169 -0
- package/lib/cjs/interfaces.js.map +1 -0
- package/lib/{migrations → cjs/migrations}/Queue_2022_10_18_01_13_00.d.ts +0 -0
- package/lib/cjs/migrations/Queue_2022_10_18_01_13_00.d.ts.map +1 -0
- package/lib/cjs/migrations/Queue_2022_10_18_01_13_00.js +36 -0
- package/lib/cjs/migrations/Queue_2022_10_18_01_13_00.js.map +1 -0
- package/lib/{models → cjs/models}/JobModel.d.ts +0 -0
- package/lib/cjs/models/JobModel.d.ts.map +1 -0
- package/lib/cjs/models/JobModel.js +47 -0
- package/lib/cjs/models/JobModel.js.map +1 -0
- package/lib/mjs/BlackHoleQueueClient.d.ts +12 -0
- package/lib/mjs/BlackHoleQueueClient.d.ts.map +1 -0
- package/lib/{BlackHoleQueueClient.js → mjs/BlackHoleQueueClient.js} +0 -0
- package/lib/mjs/BlackHoleQueueClient.js.map +1 -0
- package/lib/mjs/config/queue.d.ts +11 -0
- package/lib/mjs/config/queue.d.ts.map +1 -0
- package/lib/{config → mjs/config}/queue.js +0 -0
- package/lib/mjs/config/queue.js.map +1 -0
- package/lib/mjs/decorators.d.ts +17 -0
- package/lib/mjs/decorators.d.ts.map +1 -0
- package/lib/{decorators.js → mjs/decorators.js} +0 -0
- package/lib/mjs/decorators.js.map +1 -0
- package/lib/mjs/index.d.ts +39 -0
- package/lib/mjs/index.d.ts.map +1 -0
- package/lib/{index.js → mjs/index.js} +0 -0
- package/lib/mjs/index.js.map +1 -0
- package/lib/mjs/interfaces.d.ts +208 -0
- package/lib/mjs/interfaces.d.ts.map +1 -0
- package/lib/{interfaces.js → mjs/interfaces.js} +1 -1
- package/lib/mjs/interfaces.js.map +1 -0
- package/lib/mjs/migrations/Queue_2022_10_18_01_13_00.d.ts +6 -0
- package/lib/mjs/migrations/Queue_2022_10_18_01_13_00.d.ts.map +1 -0
- package/lib/{migrations → mjs/migrations}/Queue_2022_10_18_01_13_00.js +0 -0
- package/lib/mjs/migrations/Queue_2022_10_18_01_13_00.js.map +1 -0
- package/lib/mjs/models/JobModel.d.ts +20 -0
- package/lib/mjs/models/JobModel.d.ts.map +1 -0
- package/lib/{models → mjs/models}/JobModel.js +0 -0
- package/lib/mjs/models/JobModel.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +17 -8
- package/lib/BlackHoleQueueClient.d.ts.map +0 -1
- package/lib/BlackHoleQueueClient.js.map +0 -1
- package/lib/config/queue.d.ts.map +0 -1
- package/lib/config/queue.js.map +0 -1
- package/lib/decorators.d.ts.map +0 -1
- package/lib/decorators.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/interfaces.d.ts.map +0 -1
- package/lib/interfaces.js.map +0 -1
- package/lib/migrations/Queue_2022_10_18_01_13_00.d.ts.map +0 -1
- package/lib/migrations/Queue_2022_10_18_01_13_00.js.map +0 -1
- package/lib/models/JobModel.d.ts.map +0 -1
- package/lib/models/JobModel.js.map +0 -1
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlackHoleQueueClient.d.ts","sourceRoot":"","sources":["../../src/BlackHoleQueueClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3E;;;GAGG;AACH,qBAEa,oBAAqB,SAAQ,WAAW;IAC5C,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAG1C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpK,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI;CACvE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.BlackHoleQueueClient = void 0;
|
|
10
|
+
const di_1 = require("@spinajs/di");
|
|
11
|
+
const interfaces_js_1 = require("./interfaces.js");
|
|
12
|
+
/**
|
|
13
|
+
* Empty queue, does nothing.
|
|
14
|
+
* Use it, if you want to route or dismiss messages sent by queue service
|
|
15
|
+
*/
|
|
16
|
+
let BlackHoleQueueClient = class BlackHoleQueueClient extends interfaces_js_1.QueueClient {
|
|
17
|
+
emit(_event) {
|
|
18
|
+
return Promise.resolve();
|
|
19
|
+
}
|
|
20
|
+
subscribe(_channel, _callback, _subscriptionId, _durable) {
|
|
21
|
+
return Promise.resolve();
|
|
22
|
+
}
|
|
23
|
+
unsubscribe(_channel) { }
|
|
24
|
+
};
|
|
25
|
+
BlackHoleQueueClient = __decorate([
|
|
26
|
+
(0, di_1.NewInstance)(),
|
|
27
|
+
(0, di_1.Injectable)(interfaces_js_1.QueueClient)
|
|
28
|
+
], BlackHoleQueueClient);
|
|
29
|
+
exports.BlackHoleQueueClient = BlackHoleQueueClient;
|
|
30
|
+
//# sourceMappingURL=BlackHoleQueueClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlackHoleQueueClient.js","sourceRoot":"","sources":["../../src/BlackHoleQueueClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oCAAmE;AACnE,mDAA2E;AAE3E;;;GAGG;AAGI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,2BAAW;IAC5C,IAAI,CAAC,MAAqB;QAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACM,SAAS,CAAC,QAA4C,EAAE,SAA8C,EAAE,eAAwB,EAAE,QAAkB;QACzJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACM,WAAW,CAAC,QAA4C,IAAS,CAAC;CAC1E,CAAA;AARY,oBAAoB;IAFhC,IAAA,gBAAW,GAAE;IACb,IAAA,eAAU,EAAC,2BAAW,CAAC;GACX,oBAAoB,CAQhC;AARY,oDAAoB"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;CAaV,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const queue = {
|
|
4
|
+
queue: {
|
|
5
|
+
// by default, all messages are sent to black hole
|
|
6
|
+
// becouse some modules use queues to pass events eg. user login
|
|
7
|
+
// but not always in project we want to use queue or have queue server
|
|
8
|
+
default: 'black-hole',
|
|
9
|
+
connections: [
|
|
10
|
+
{
|
|
11
|
+
name: 'black-hole',
|
|
12
|
+
service: 'BlackHoleQueueClient',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
exports.default = queue;
|
|
18
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE;QACL,kDAAkD;QAClD,gEAAgE;QAChE,sEAAsE;QACtE,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,sBAAsB;aAChC;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,aACD,GAAG,UAWpB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,YAC1B,GAAG,UAYpB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Event = exports.Job = void 0;
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* Mark class as job
|
|
7
|
+
*
|
|
8
|
+
* @param connection - job connection name for use, if not set default connection is used
|
|
9
|
+
*/
|
|
10
|
+
function Job() {
|
|
11
|
+
return (target) => {
|
|
12
|
+
if (!Reflect.hasMetadata('queue:options', target)) {
|
|
13
|
+
Reflect.defineMetadata('queue:options', {
|
|
14
|
+
type: 'job',
|
|
15
|
+
}, target);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.Job = Job;
|
|
20
|
+
/**
|
|
21
|
+
* Mark class as event
|
|
22
|
+
*
|
|
23
|
+
* @param connection - event connection name for use, if not set default connection is used
|
|
24
|
+
*/
|
|
25
|
+
function Event(options) {
|
|
26
|
+
return (target) => {
|
|
27
|
+
if (!Reflect.hasMetadata('queue:options', target)) {
|
|
28
|
+
Reflect.defineMetadata('queue:options', {
|
|
29
|
+
...options,
|
|
30
|
+
type: 'event',
|
|
31
|
+
}, target);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
exports.Event = Event;
|
|
36
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":";;;AAIA;;;;;GAKG;AACH,SAAgB,GAAG;IACjB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE;YACjD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,IAAI,EAAE,KAAK;aACZ,EACD,MAAM,CACP,CAAC;SACH;IACH,CAAC,CAAC;AACJ,CAAC;AAZD,kBAYC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAC,OAAsB;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE;YACjD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO;aACd,EACD,MAAM,CACP,CAAC;SACH;IACH,CAAC,CAAC;AACJ,CAAC;AAbD,sBAaC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAS,MAAM,iBAAiB,CAAC;AAMtH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2CAA2C,CAAC;AAE1D,qBACa,mBAAoB,SAAQ,YAAY;IAEnD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEnC,OAAO;IAQP,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ;IAuBjD,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC;IAI3D;;;;;;;;;;;;;;;OAeG;IACU,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAuFnK;;;;OAIG;IACI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM;CAG/B"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
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;
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
};
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
23
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DefaultQueueService = void 0;
|
|
27
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
28
|
+
const di_1 = require("@spinajs/di");
|
|
29
|
+
const log_1 = require("@spinajs/log");
|
|
30
|
+
const interfaces_js_1 = require("./interfaces.js");
|
|
31
|
+
const JobModel_js_1 = require("./models/JobModel.js");
|
|
32
|
+
const uuid_1 = require("uuid");
|
|
33
|
+
const configuration_1 = require("@spinajs/configuration");
|
|
34
|
+
const luxon_1 = require("luxon");
|
|
35
|
+
__exportStar(require("./BlackHoleQueueClient.js"), exports);
|
|
36
|
+
__exportStar(require("./interfaces.js"), exports);
|
|
37
|
+
__exportStar(require("./decorators.js"), exports);
|
|
38
|
+
__exportStar(require("./models/JobModel.js"), exports);
|
|
39
|
+
__exportStar(require("./migrations/Queue_2022_10_18_01_13_00.js"), exports);
|
|
40
|
+
let DefaultQueueService = class DefaultQueueService extends interfaces_js_1.QueueService {
|
|
41
|
+
async dispose() {
|
|
42
|
+
this.Connections.forEach(async (val) => {
|
|
43
|
+
await val.dispose();
|
|
44
|
+
});
|
|
45
|
+
this.Connections.clear();
|
|
46
|
+
}
|
|
47
|
+
async emit(event) {
|
|
48
|
+
const connections = this.getConnectionsForMessage(event);
|
|
49
|
+
for (let c of connections) {
|
|
50
|
+
if ((0, interfaces_js_1.isJob)(event)) {
|
|
51
|
+
const jModel = new JobModel_js_1.JobModel();
|
|
52
|
+
jModel.JobId = (0, uuid_1.v4)();
|
|
53
|
+
jModel.Name = event.Name;
|
|
54
|
+
jModel.Status = 'created';
|
|
55
|
+
jModel.Progress = 0;
|
|
56
|
+
jModel.Connection = c;
|
|
57
|
+
await jModel.insert();
|
|
58
|
+
event.JobId = jModel.JobId;
|
|
59
|
+
}
|
|
60
|
+
this.Connections.get(c).emit(event);
|
|
61
|
+
this.Log.trace(`Emitted message ${event.Name}, type: ${event.Type} to connection ${c}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async stopConsuming(event) {
|
|
65
|
+
this.getConnectionsForMessage(event).forEach((c) => this.Connections.get(c).unsubscribe(event));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
*
|
|
69
|
+
* Starts to consume events/jobs from connection
|
|
70
|
+
*
|
|
71
|
+
* NOTE: When consuming events, we can have multiple event types on same channel, couse
|
|
72
|
+
* subscribe function filters it out, and event can be handled in another subscription
|
|
73
|
+
*
|
|
74
|
+
* When consuming jobs, multiple jobs on same channel can have unpredictible behavior becouse
|
|
75
|
+
* job can be executed once even with multiple subscribers, so filtering it out
|
|
76
|
+
* prevents from executing it on other subscriptions
|
|
77
|
+
*
|
|
78
|
+
* @param event - event type to consume
|
|
79
|
+
* @param callback - optional callback when job is consumet, mandatory for events
|
|
80
|
+
* @param subscriptionId - optional subscription id if consuming durable events
|
|
81
|
+
* @param durable - is durable event, if not set, this value default to event decorator options
|
|
82
|
+
*/
|
|
83
|
+
async consume(event, callback, subscriptionId, durable) {
|
|
84
|
+
const options = Reflect.getMetadata('queue:options', event);
|
|
85
|
+
const self = this;
|
|
86
|
+
if (!options) {
|
|
87
|
+
throw new exceptions_1.InvalidArgument(`Type ${event.name} is not defined as Job or Event type. Use proper decorator to configure queue events`);
|
|
88
|
+
}
|
|
89
|
+
const { durable: eDurable } = options;
|
|
90
|
+
const connections = this.getConnectionsForMessage(event);
|
|
91
|
+
if ((eDurable || durable) && !subscriptionId) {
|
|
92
|
+
throw new exceptions_1.InvalidArgument('subscriptionId should be set when using durable events');
|
|
93
|
+
}
|
|
94
|
+
for (let c of connections) {
|
|
95
|
+
const conn = this.Connections.get(c);
|
|
96
|
+
if (!conn) {
|
|
97
|
+
throw new di_1.ServiceNotFound(`Queue connection ${c} not found. Please check your configuration before consuming events from this connection.`);
|
|
98
|
+
}
|
|
99
|
+
await conn.subscribe(event, async (e) => {
|
|
100
|
+
if (e.Name === event.name) {
|
|
101
|
+
const ev = di_1.DI.resolve(event);
|
|
102
|
+
ev.hydrate(e);
|
|
103
|
+
/**
|
|
104
|
+
* Handle job type of message
|
|
105
|
+
* To preserve result & handle delay, errors etc..
|
|
106
|
+
*/
|
|
107
|
+
if (ev instanceof interfaces_js_1.QueueJob) {
|
|
108
|
+
let jobResult = null;
|
|
109
|
+
const jModel = await JobModel_js_1.JobModel.where({ JobId: ev.JobId }).firstOrThrow(new exceptions_1.UnexpectedServerError(`No model found for jobId ${ev.JobId}`));
|
|
110
|
+
jModel.Status = 'executing';
|
|
111
|
+
jModel.ExecutedAt = luxon_1.DateTime.now();
|
|
112
|
+
try {
|
|
113
|
+
// update executing state
|
|
114
|
+
await jModel.update();
|
|
115
|
+
jobResult = await ev.execute(onProgress);
|
|
116
|
+
jModel.Result = jobResult;
|
|
117
|
+
jModel.Status = 'success';
|
|
118
|
+
jModel.FinishedAt = luxon_1.DateTime.now();
|
|
119
|
+
jModel.Progress = 100;
|
|
120
|
+
this.Log.trace(`Job ${event.name} processed with result ${JSON.stringify(jModel.Result)}`);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
this.Log.error(err, `Cannot execute job ${event.name}`);
|
|
124
|
+
jModel.Result = {
|
|
125
|
+
message: err.message,
|
|
126
|
+
};
|
|
127
|
+
jModel.Status = 'error';
|
|
128
|
+
}
|
|
129
|
+
await jModel.update();
|
|
130
|
+
async function onProgress(p) {
|
|
131
|
+
jModel.Progress = p;
|
|
132
|
+
await jModel.update();
|
|
133
|
+
self.Log.trace(`Job ${event.name}:${jModel.JobId} progress: ${p}%`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (!callback && ev instanceof interfaces_js_1.QueueEvent) {
|
|
137
|
+
throw new exceptions_1.InvalidArgument('when subscribing to events, callback cannot be null. Subscriber should handle event in callback function !');
|
|
138
|
+
}
|
|
139
|
+
this.Log.trace(`Queue message ${event.name} processed`);
|
|
140
|
+
if (callback) {
|
|
141
|
+
return callback(ev);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}, subscriptionId, durable ?? eDurable ?? false);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get specific queue client connection. If no connection param is provided, default is returned.
|
|
149
|
+
* @param connection - connection name to obtain
|
|
150
|
+
* @returns
|
|
151
|
+
*/
|
|
152
|
+
get(connection) {
|
|
153
|
+
return this.Connections.get(`${connection ?? this.Configuration.default}`);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
__decorate([
|
|
157
|
+
(0, log_1.Logger)('queue'),
|
|
158
|
+
__metadata("design:type", log_1.Log)
|
|
159
|
+
], DefaultQueueService.prototype, "Log", void 0);
|
|
160
|
+
__decorate([
|
|
161
|
+
(0, configuration_1.AutoinjectService)('queue.connections', interfaces_js_1.QueueClient),
|
|
162
|
+
__metadata("design:type", Map)
|
|
163
|
+
], DefaultQueueService.prototype, "Connections", void 0);
|
|
164
|
+
DefaultQueueService = __decorate([
|
|
165
|
+
(0, di_1.Injectable)(interfaces_js_1.QueueService)
|
|
166
|
+
], DefaultQueueService);
|
|
167
|
+
exports.DefaultQueueService = DefaultQueueService;
|
|
168
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.QueueClient = exports.QueueJob = exports.QueueEvent = exports.QueueMessage = exports.isJob = exports.QueueService = exports.QueueMessageType = void 0;
|
|
16
|
+
const di_1 = require("@spinajs/di");
|
|
17
|
+
const luxon_1 = require("luxon");
|
|
18
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
19
|
+
const log_1 = require("@spinajs/log");
|
|
20
|
+
const configuration_1 = require("@spinajs/configuration");
|
|
21
|
+
var QueueMessageType;
|
|
22
|
+
(function (QueueMessageType) {
|
|
23
|
+
QueueMessageType["Job"] = "JOB";
|
|
24
|
+
QueueMessageType["Event"] = "EVENT";
|
|
25
|
+
})(QueueMessageType = exports.QueueMessageType || (exports.QueueMessageType = {}));
|
|
26
|
+
class QueueService extends di_1.AsyncService {
|
|
27
|
+
getConnectionsForMessage(event) {
|
|
28
|
+
const option = this.Configuration.routing[event.Name ?? event.name] ?? this.Configuration.default;
|
|
29
|
+
if (lodash_1.default.isString(option)) {
|
|
30
|
+
return [this.Configuration.default];
|
|
31
|
+
}
|
|
32
|
+
if (lodash_1.default.isArray(option)) {
|
|
33
|
+
return lodash_1.default.uniq(option.map((x) => {
|
|
34
|
+
if (lodash_1.default.isString(x)) {
|
|
35
|
+
return this.Configuration.default;
|
|
36
|
+
}
|
|
37
|
+
if (x.connection) {
|
|
38
|
+
return x.connection;
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, configuration_1.Config)('queue'),
|
|
46
|
+
__metadata("design:type", Object)
|
|
47
|
+
], QueueService.prototype, "Configuration", void 0);
|
|
48
|
+
exports.QueueService = QueueService;
|
|
49
|
+
function isJob(event) {
|
|
50
|
+
return event.Type === QueueMessageType.Job;
|
|
51
|
+
}
|
|
52
|
+
exports.isJob = isJob;
|
|
53
|
+
/**
|
|
54
|
+
* Events are messages send via queue, we do not want to track it, dont care about result, no retry policy on failed execution etc.
|
|
55
|
+
*/
|
|
56
|
+
class QueueMessage {
|
|
57
|
+
constructor() {
|
|
58
|
+
this.CreatedAt = luxon_1.DateTime.now();
|
|
59
|
+
}
|
|
60
|
+
hydrate(payload) {
|
|
61
|
+
Object.assign(this, payload);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.QueueMessage = QueueMessage;
|
|
65
|
+
/**
|
|
66
|
+
* events provides a simple observer implementation, allowing you to subscribe and listen
|
|
67
|
+
* for various events that occur in your application. Events serve as a great way to decouple
|
|
68
|
+
* various aspects of your application, since a single event can have multiple listeners that do not depend on each other.
|
|
69
|
+
*
|
|
70
|
+
* we can register multiple listeners for a single event and the event helper will dispatch the event to all of its registered
|
|
71
|
+
* listeners without us calling them explicitly. where in case of Jobs we would have to call them each one explicitly.
|
|
72
|
+
*/
|
|
73
|
+
class QueueEvent extends QueueMessage {
|
|
74
|
+
constructor() {
|
|
75
|
+
super();
|
|
76
|
+
this.Type = QueueMessageType.Event;
|
|
77
|
+
}
|
|
78
|
+
static async emit(val, options) {
|
|
79
|
+
const queue = await di_1.DI.resolve(QueueService);
|
|
80
|
+
const message = {
|
|
81
|
+
...val,
|
|
82
|
+
Type: QueueMessageType.Event,
|
|
83
|
+
CreatedAt: val.CreatedAt ?? luxon_1.DateTime.now(),
|
|
84
|
+
Name: this.name,
|
|
85
|
+
...options,
|
|
86
|
+
};
|
|
87
|
+
// partial of queue job always is queue message
|
|
88
|
+
await queue.emit(message);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.QueueEvent = QueueEvent;
|
|
92
|
+
/**
|
|
93
|
+
* Jobs are executed only once even if multiple listeners waiting for it. usually used for single method call
|
|
94
|
+
* or time consuming tasks, that need to checked for result and tracked
|
|
95
|
+
*
|
|
96
|
+
* Job results are preserved
|
|
97
|
+
*/
|
|
98
|
+
class QueueJob extends QueueMessage {
|
|
99
|
+
constructor() {
|
|
100
|
+
super();
|
|
101
|
+
this.Type = QueueMessageType.Job;
|
|
102
|
+
this.Name = this.constructor.name;
|
|
103
|
+
}
|
|
104
|
+
static async emit(val, options) {
|
|
105
|
+
const queue = await di_1.DI.resolve(QueueService);
|
|
106
|
+
const message = {
|
|
107
|
+
...val,
|
|
108
|
+
Type: QueueMessageType.Job,
|
|
109
|
+
CreatedAt: val.CreatedAt ?? luxon_1.DateTime.now(),
|
|
110
|
+
Name: this.name,
|
|
111
|
+
...options,
|
|
112
|
+
};
|
|
113
|
+
// partial of queue job always is queue message
|
|
114
|
+
await queue.emit(message);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.QueueJob = QueueJob;
|
|
118
|
+
class QueueClient extends di_1.AsyncService {
|
|
119
|
+
get Name() {
|
|
120
|
+
return this.Options.name;
|
|
121
|
+
}
|
|
122
|
+
get ServiceName() {
|
|
123
|
+
return this.Options.name;
|
|
124
|
+
}
|
|
125
|
+
constructor(Options) {
|
|
126
|
+
super();
|
|
127
|
+
this.Options = Options;
|
|
128
|
+
}
|
|
129
|
+
__checkInstance__(creationOptions) {
|
|
130
|
+
return this.Options.name === creationOptions[0].name;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
*
|
|
134
|
+
* Gets event channel from routing table or default if non is set
|
|
135
|
+
*
|
|
136
|
+
* @param event - event to check
|
|
137
|
+
*/
|
|
138
|
+
getChannelForMessage(event) {
|
|
139
|
+
const options = Reflect.getMetadata('queue:options', event);
|
|
140
|
+
const eName = event.Name ?? event.name;
|
|
141
|
+
const isJob = event.Type ? event.Type === QueueMessageType.Job : options ? options.type === 'job' : false;
|
|
142
|
+
const rOption = this.Routing[eName];
|
|
143
|
+
if (!rOption) {
|
|
144
|
+
return [isJob ? this.Options.defaultQueueChannel : this.Options.defaultTopicChannel];
|
|
145
|
+
}
|
|
146
|
+
if (lodash_1.default.isString(rOption)) {
|
|
147
|
+
return [rOption];
|
|
148
|
+
}
|
|
149
|
+
if (lodash_1.default.isArray(rOption)) {
|
|
150
|
+
return lodash_1.default.uniq(rOption.map((x) => {
|
|
151
|
+
if (lodash_1.default.isString(x)) {
|
|
152
|
+
return x;
|
|
153
|
+
}
|
|
154
|
+
return x.channel ?? isJob ? this.Options.defaultQueueChannel : this.Options.defaultTopicChannel;
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
return [rOption.channel ?? isJob ? this.Options.defaultQueueChannel : this.Options.defaultTopicChannel];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
__decorate([
|
|
161
|
+
(0, log_1.Logger)('queue'),
|
|
162
|
+
__metadata("design:type", log_1.Log)
|
|
163
|
+
], QueueClient.prototype, "Log", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
(0, configuration_1.Config)('queue.routing'),
|
|
166
|
+
__metadata("design:type", Object)
|
|
167
|
+
], QueueClient.prototype, "Routing", void 0);
|
|
168
|
+
exports.QueueClient = QueueClient;
|
|
169
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Queue_2022_10_18_01_13_00.d.ts","sourceRoot":"","sources":["../../../src/migrations/Queue_2022_10_18_01_13_00.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAElE,qBACa,yBAA0B,SAAQ,YAAY;IAC5C,EAAE,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CACzD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Queue_2022_10_18_01_13_00 = void 0;
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
11
|
+
const orm_1 = require("@spinajs/orm");
|
|
12
|
+
let Queue_2022_10_18_01_13_00 = class Queue_2022_10_18_01_13_00 extends orm_1.OrmMigration {
|
|
13
|
+
async up(connection) {
|
|
14
|
+
await connection.schema().createTable('queue_jobs', (table) => {
|
|
15
|
+
table.int('Id').primaryKey().autoIncrement();
|
|
16
|
+
table.uuid('JobId').notNull();
|
|
17
|
+
table.string('Name', 32).notNull();
|
|
18
|
+
table.string('Result');
|
|
19
|
+
table.enum('Status', ['error', 'success', 'created', 'executing']).notNull().default().value('created');
|
|
20
|
+
table.int('Progress').notNull().default().value(0);
|
|
21
|
+
table.string('Connection').notNull();
|
|
22
|
+
table.timestamp('CreatedAt').notNull().default().dateTime();
|
|
23
|
+
table.timestamp('ExecutedAt');
|
|
24
|
+
table.timestamp('FinishedAt');
|
|
25
|
+
});
|
|
26
|
+
await connection.index().unique().table('queue_jobs').name('queue_jobs_job_id').columns(['JobId']);
|
|
27
|
+
}
|
|
28
|
+
// tslint:disable-next-line: no-empty
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
30
|
+
async down(_connection) { }
|
|
31
|
+
};
|
|
32
|
+
Queue_2022_10_18_01_13_00 = __decorate([
|
|
33
|
+
(0, orm_1.Migration)('queue')
|
|
34
|
+
], Queue_2022_10_18_01_13_00);
|
|
35
|
+
exports.Queue_2022_10_18_01_13_00 = Queue_2022_10_18_01_13_00;
|
|
36
|
+
//# sourceMappingURL=Queue_2022_10_18_01_13_00.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Queue_2022_10_18_01_13_00.js","sourceRoot":"","sources":["../../../src/migrations/Queue_2022_10_18_01_13_00.ts"],"names":[],"mappings":";;;;;;;;;AAAA,sDAAsD;AACtD,sCAAkE;AAG3D,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,kBAAY;IAClD,KAAK,CAAC,EAAE,CAAC,UAAqB;QACnC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5D,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC9B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,qCAAqC;IACrC,gEAAgE;IACzD,KAAK,CAAC,IAAI,CAAC,WAAsB,IAAkB,CAAC;CAC5D,CAAA;AArBY,yBAAyB;IADrC,IAAA,eAAS,EAAC,OAAO,CAAC;GACN,yBAAyB,CAqBrC;AArBY,8DAAyB"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JobModel.d.ts","sourceRoot":"","sources":["../../../src/models/JobModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAA+D,MAAM,cAAc,CAAC;AAEtG;;;;GAIG;AACH,qBAEa,QAAQ,CAAC,CAAC,CAAE,SAAQ,SAAS;IAEjC,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,CAAC,CAAC;IAEV,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAEtD,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,QAAQ,CAAC;IAGpB,UAAU,EAAE,QAAQ,CAAC;IAGrB,UAAU,EAAE,QAAQ,CAAC;CAC7B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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.JobModel = void 0;
|
|
13
|
+
const luxon_1 = require("luxon");
|
|
14
|
+
const orm_1 = require("@spinajs/orm");
|
|
15
|
+
/**
|
|
16
|
+
* Base modele for users used by ACL
|
|
17
|
+
*
|
|
18
|
+
* To add / extend fields simply extend this model and register as default user model in ACL service
|
|
19
|
+
*/
|
|
20
|
+
let JobModel = class JobModel extends orm_1.ModelBase {
|
|
21
|
+
};
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, orm_1.Primary)(),
|
|
24
|
+
__metadata("design:type", Number)
|
|
25
|
+
], JobModel.prototype, "Id", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, orm_1.Json)(),
|
|
28
|
+
__metadata("design:type", Object)
|
|
29
|
+
], JobModel.prototype, "Result", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, orm_1.CreatedAt)(),
|
|
32
|
+
__metadata("design:type", luxon_1.DateTime)
|
|
33
|
+
], JobModel.prototype, "CreatedAt", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, orm_1.DateTime)(),
|
|
36
|
+
__metadata("design:type", luxon_1.DateTime)
|
|
37
|
+
], JobModel.prototype, "ExecutedAt", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, orm_1.DateTime)(),
|
|
40
|
+
__metadata("design:type", luxon_1.DateTime)
|
|
41
|
+
], JobModel.prototype, "FinishedAt", void 0);
|
|
42
|
+
JobModel = __decorate([
|
|
43
|
+
(0, orm_1.Connection)('queue'),
|
|
44
|
+
(0, orm_1.Model)('queue_jobs')
|
|
45
|
+
], JobModel);
|
|
46
|
+
exports.JobModel = JobModel;
|
|
47
|
+
//# sourceMappingURL=JobModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JobModel.js","sourceRoot":"","sources":["../../../src/models/JobModel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAiC;AACjC,sCAAsG;AAEtG;;;;GAIG;AAGI,IAAM,QAAQ,GAAd,MAAM,QAAY,SAAQ,eAAS;CAyBzC,CAAA;AAxBC;IAAC,IAAA,aAAO,GAAE;;oCACQ;AAMlB;IAAC,IAAA,UAAI,GAAE;;wCACU;AAQjB;IAAC,IAAA,eAAS,GAAE;8BACM,gBAAQ;2CAAC;AAE3B;IAAC,IAAA,cAAE,GAAE;8BACc,gBAAQ;4CAAC;AAE5B;IAAC,IAAA,cAAE,GAAE;8BACc,gBAAQ;4CAAC;AAxBjB,QAAQ;IAFpB,IAAA,gBAAU,EAAC,OAAO,CAAC;IACnB,IAAA,WAAK,EAAC,YAAY,CAAC;GACP,QAAQ,CAyBpB;AAzBY,4BAAQ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Constructor } from '@spinajs/di';
|
|
2
|
+
import { IQueueMessage, QueueClient, QueueMessage } from './interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Empty queue, does nothing.
|
|
5
|
+
* Use it, if you want to route or dismiss messages sent by queue service
|
|
6
|
+
*/
|
|
7
|
+
export declare class BlackHoleQueueClient extends QueueClient {
|
|
8
|
+
emit(_event: IQueueMessage): Promise<void>;
|
|
9
|
+
subscribe(_channel: string | Constructor<QueueMessage>, _callback: (e: IQueueMessage) => Promise<void>, _subscriptionId?: string, _durable?: boolean): Promise<void>;
|
|
10
|
+
unsubscribe(_channel: string | Constructor<QueueMessage>): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BlackHoleQueueClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlackHoleQueueClient.d.ts","sourceRoot":"","sources":["../../src/BlackHoleQueueClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3E;;;GAGG;AACH,qBAEa,oBAAqB,SAAQ,WAAW;IAC5C,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAG1C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpK,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI;CACvE"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlackHoleQueueClient.js","sourceRoot":"","sources":["../../src/BlackHoleQueueClient.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAe,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAiB,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AAE3E;;;GAGG;AAGI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,WAAW;IAC5C,IAAI,CAAC,MAAqB;QAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACM,SAAS,CAAC,QAA4C,EAAE,SAA8C,EAAE,eAAwB,EAAE,QAAkB;QACzJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACM,WAAW,CAAC,QAA4C,IAAS,CAAC;CAC1E,CAAA;AARY,oBAAoB;IAFhC,WAAW,EAAE;IACb,UAAU,CAAC,WAAW,CAAC;GACX,oBAAoB,CAQhC;SARY,oBAAoB"}
|