@spinajs/tasks 2.0.288

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +11 -0
  2. package/lib/cjs/config/tasks.d.ts +25 -0
  3. package/lib/cjs/config/tasks.d.ts.map +1 -0
  4. package/lib/cjs/config/tasks.js +37 -0
  5. package/lib/cjs/config/tasks.js.map +1 -0
  6. package/lib/cjs/decorators.d.ts +18 -0
  7. package/lib/cjs/decorators.d.ts.map +1 -0
  8. package/lib/cjs/decorators.js +98 -0
  9. package/lib/cjs/decorators.js.map +1 -0
  10. package/lib/cjs/events/TaskFailed.d.ts +6 -0
  11. package/lib/cjs/events/TaskFailed.d.ts.map +1 -0
  12. package/lib/cjs/events/TaskFailed.js +17 -0
  13. package/lib/cjs/events/TaskFailed.js.map +1 -0
  14. package/lib/cjs/events/TaskSuccess.d.ts +5 -0
  15. package/lib/cjs/events/TaskSuccess.d.ts.map +1 -0
  16. package/lib/cjs/events/TaskSuccess.js +17 -0
  17. package/lib/cjs/events/TaskSuccess.js.map +1 -0
  18. package/lib/cjs/index.d.ts +5 -0
  19. package/lib/cjs/index.d.ts.map +1 -0
  20. package/lib/cjs/index.js +21 -0
  21. package/lib/cjs/index.js.map +1 -0
  22. package/lib/cjs/migrations/Task_2024_12_03_11_41_00.d.ts +6 -0
  23. package/lib/cjs/migrations/Task_2024_12_03_11_41_00.d.ts.map +1 -0
  24. package/lib/cjs/migrations/Task_2024_12_03_11_41_00.js +53 -0
  25. package/lib/cjs/migrations/Task_2024_12_03_11_41_00.js.map +1 -0
  26. package/lib/cjs/models/__task.d.ts +19 -0
  27. package/lib/cjs/models/__task.d.ts.map +1 -0
  28. package/lib/cjs/models/__task.js +34 -0
  29. package/lib/cjs/models/__task.js.map +1 -0
  30. package/lib/cjs/models/__task_history.d.ts +16 -0
  31. package/lib/cjs/models/__task_history.d.ts.map +1 -0
  32. package/lib/cjs/models/__task_history.js +38 -0
  33. package/lib/cjs/models/__task_history.js.map +1 -0
  34. package/lib/cjs/package.json +1 -0
  35. package/lib/mjs/config/tasks.d.ts +25 -0
  36. package/lib/mjs/config/tasks.d.ts.map +1 -0
  37. package/lib/mjs/config/tasks.js +35 -0
  38. package/lib/mjs/config/tasks.js.map +1 -0
  39. package/lib/mjs/decorators.d.ts +18 -0
  40. package/lib/mjs/decorators.d.ts.map +1 -0
  41. package/lib/mjs/decorators.js +94 -0
  42. package/lib/mjs/decorators.js.map +1 -0
  43. package/lib/mjs/events/TaskFailed.d.ts +6 -0
  44. package/lib/mjs/events/TaskFailed.d.ts.map +1 -0
  45. package/lib/mjs/events/TaskFailed.js +14 -0
  46. package/lib/mjs/events/TaskFailed.js.map +1 -0
  47. package/lib/mjs/events/TaskSuccess.d.ts +5 -0
  48. package/lib/mjs/events/TaskSuccess.d.ts.map +1 -0
  49. package/lib/mjs/events/TaskSuccess.js +14 -0
  50. package/lib/mjs/events/TaskSuccess.js.map +1 -0
  51. package/lib/mjs/index.d.ts +5 -0
  52. package/lib/mjs/index.d.ts.map +1 -0
  53. package/lib/mjs/index.js +5 -0
  54. package/lib/mjs/index.js.map +1 -0
  55. package/lib/mjs/migrations/Task_2024_12_03_11_41_00.d.ts +6 -0
  56. package/lib/mjs/migrations/Task_2024_12_03_11_41_00.d.ts.map +1 -0
  57. package/lib/mjs/migrations/Task_2024_12_03_11_41_00.js +50 -0
  58. package/lib/mjs/migrations/Task_2024_12_03_11_41_00.js.map +1 -0
  59. package/lib/mjs/models/__task.d.ts +19 -0
  60. package/lib/mjs/models/__task.d.ts.map +1 -0
  61. package/lib/mjs/models/__task.js +31 -0
  62. package/lib/mjs/models/__task.js.map +1 -0
  63. package/lib/mjs/models/__task_history.d.ts +16 -0
  64. package/lib/mjs/models/__task_history.d.ts.map +1 -0
  65. package/lib/mjs/models/__task_history.js +35 -0
  66. package/lib/mjs/models/__task_history.js.map +1 -0
  67. package/lib/mjs/package.json +1 -0
  68. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  69. package/lib/tsconfig.mjs.tsbuildinfo +1 -0
  70. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # `@spinajs/cli`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const cli = require('@spinajs/cli');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -0,0 +1,25 @@
1
+ declare const cli: {
2
+ system: {
3
+ dirs: {
4
+ cli: string[];
5
+ };
6
+ };
7
+ queue: {
8
+ routing: {
9
+ TaskFailed: {
10
+ connection: string;
11
+ };
12
+ TaskSuccess: {
13
+ connection: string;
14
+ };
15
+ };
16
+ connections: {
17
+ name: string;
18
+ service: string;
19
+ defaultQueueChannel: string;
20
+ defaultTopicChannel: string;
21
+ }[];
22
+ };
23
+ };
24
+ export default cli;
25
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/config/tasks.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;CAwBR,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path_1 = require("path");
4
+ function dir(path) {
5
+ const inCommonJs = typeof module !== 'undefined';
6
+ return [
7
+ (0, path_1.resolve)((0, path_1.normalize)((0, path_1.join)(process.cwd(), 'node_modules', '@spinajs', 'tasks', 'lib', inCommonJs ? 'cjs' : 'mjs', path))),
8
+ // one up if we run from app or build folder
9
+ (0, path_1.resolve)((0, path_1.normalize)((0, path_1.join)(process.cwd(), '../', 'node_modules', '@spinajs', 'tasks', 'lib', inCommonJs ? 'cjs' : 'mjs', path))),
10
+ ];
11
+ }
12
+ const cli = {
13
+ system: {
14
+ dirs: {
15
+ cli: [...dir('tasks')],
16
+ },
17
+ },
18
+ queue: {
19
+ routing: {
20
+ // task module events - inform when task fails or succeeds
21
+ TaskFailed: { connection: 'task-empty-queue' },
22
+ TaskSuccess: { connection: 'task-empty-queue' },
23
+ },
24
+ // by default all events from rbac module are routed to rbac-user-empty-queue
25
+ // and is using empty sink ( no events are sent )
26
+ connections: [
27
+ {
28
+ name: 'task-empty-queue',
29
+ service: 'BlackHoleQueueClient',
30
+ defaultQueueChannel: 'task-jobs',
31
+ defaultTopicChannel: 'task-events',
32
+ },
33
+ ],
34
+ },
35
+ };
36
+ exports.default = cli;
37
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/config/tasks.ts"],"names":[],"mappings":";;AAAA,+BAAgD;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IACjD,OAAO;QACL,IAAA,cAAO,EACL,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAC7G;QAED,4CAA4C;QAC5C,IAAA,cAAO,EACL,IAAA,gBAAS,EACP,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CACzG,CACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,GAAG,GAAG;IACV,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;SACvB;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,0DAA0D;YAC1D,UAAU,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;YAC9C,WAAW,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;SAChD;QAED,6EAA6E;QAC7E,iDAAiD;QACjD,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,sBAAsB;gBAC/B,mBAAmB,EAAE,WAAW;gBAChC,mBAAmB,EAAE,aAAa;aACnC;SACF;KACF;CACF,CAAC;AAEF,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare const TASK_COMMAND = "task:command";
2
+ interface TaskOptions {
3
+ taskStacking: boolean;
4
+ }
5
+ /**
6
+ * Cli command, wrapper for lib commander. For more docs on command options & args check
7
+ * https://github.com/tj/commander.js
8
+ *
9
+ * It allows to use all features that spinajs provides eg. DI, logging, intl support etc.
10
+ * inside command functions without hassle.
11
+ *
12
+ * @param nameAndArgs - name of command with optional args defined
13
+ * @param description - short description
14
+ * @param opts - additional options, see https://github.com/tj/commander.js
15
+ */
16
+ export declare function Task(taskName: string, description: string, opts?: TaskOptions): (_target: any, _propertyKey: string | symbol, descriptor: PropertyDescriptor) => void;
17
+ export {};
18
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,UAAU,WAAW;IAInB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,aAIlD,GAAG,gBAAgB,MAAM,GAAG,MAAM,cAAc,kBAAkB,UA4E7F"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Task = exports.TASK_COMMAND = void 0;
4
+ const threading_1 = require("@spinajs/threading");
5
+ const util_1 = require("@spinajs/util");
6
+ const di_1 = require("@spinajs/di");
7
+ const __task_js_1 = require("./models/__task.js");
8
+ const luxon_1 = require("luxon");
9
+ const __task_history_js_1 = require("./models/__task_history.js");
10
+ const TaskSuccess_js_1 = require("./events/TaskSuccess.js");
11
+ const TaskFailed_js_1 = require("./events/TaskFailed.js");
12
+ exports.TASK_COMMAND = 'task:command';
13
+ /**
14
+ * Cli command, wrapper for lib commander. For more docs on command options & args check
15
+ * https://github.com/tj/commander.js
16
+ *
17
+ * It allows to use all features that spinajs provides eg. DI, logging, intl support etc.
18
+ * inside command functions without hassle.
19
+ *
20
+ * @param nameAndArgs - name of command with optional args defined
21
+ * @param description - short description
22
+ * @param opts - additional options, see https://github.com/tj/commander.js
23
+ */
24
+ function Task(taskName, description, opts) {
25
+ const _name = (0, util_1._check_arg)((0, util_1._trim)(), (0, util_1._non_empty)())(taskName, 'Task name is empty');
26
+ const _description = (0, util_1._check_arg)((0, util_1._trim)(), (0, util_1._non_empty)())(description, 'Task description is empty');
27
+ return function (_target, _propertyKey, descriptor) {
28
+ const oldFunction = descriptor.value;
29
+ descriptor.value = async function (...args) {
30
+ const log = di_1.DI.resolve('__log__', ['TASKS']);
31
+ log.info(`Executing task ${_name} ...`);
32
+ try {
33
+ const task = await __task_js_1.__task.getOrCreate(null, {
34
+ Name: _name,
35
+ Description: _description,
36
+ State: 'stopped',
37
+ });
38
+ if (!opts.taskStacking) {
39
+ const lock = await (0, threading_1.mutex_acquire)({
40
+ Name: `task-${_name}`,
41
+ });
42
+ if (!lock.Locked) {
43
+ log.warn(`Cannot acquire mutex for task ${_name}, already locked !`);
44
+ return;
45
+ }
46
+ }
47
+ task.State = 'running';
48
+ task.LastRunAt = luxon_1.DateTime.now();
49
+ await task.update();
50
+ let taskResult = null;
51
+ const start = luxon_1.DateTime.now();
52
+ try {
53
+ taskResult = await oldFunction.apply(this, args);
54
+ await TaskSuccess_js_1.TaskSuccess.emit({
55
+ TaskName: taskName,
56
+ });
57
+ log.success(`Task ${taskName} executed !`);
58
+ }
59
+ catch (err) {
60
+ log.error(err, `Cannot execute task ${taskName}`);
61
+ taskResult = {
62
+ error: true,
63
+ message: err.Message,
64
+ };
65
+ await TaskFailed_js_1.TaskFailed.emit({
66
+ TaskName: taskName,
67
+ Reason: err.Message,
68
+ });
69
+ }
70
+ finally {
71
+ try {
72
+ await (0, threading_1.mutext_release)({
73
+ Name: `task-${name}`,
74
+ });
75
+ await task.update({
76
+ State: 'stopped',
77
+ });
78
+ await __task_history_js_1.__task_history.insert({
79
+ TaskId: task.Id,
80
+ Result: taskResult,
81
+ Duration: luxon_1.DateTime.now().diff(start).milliseconds,
82
+ });
83
+ }
84
+ catch (err) {
85
+ log.error(err, `Cannot finalize task`);
86
+ }
87
+ return taskResult;
88
+ }
89
+ }
90
+ catch (err) {
91
+ log.error(err, `Cannot start task ${taskName}`);
92
+ throw err;
93
+ }
94
+ };
95
+ };
96
+ }
97
+ exports.Task = Task;
98
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { QueueEvent } from '@spinajs/queue';
2
+ export declare class TaskFailed extends QueueEvent {
3
+ TaskName: string;
4
+ Reason: string;
5
+ }
6
+ //# sourceMappingURL=TaskFailed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskFailed.d.ts","sourceRoot":"","sources":["../../../src/events/TaskFailed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGnD,qBACa,UAAW,SAAQ,UAAU;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,17 @@
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.TaskFailed = void 0;
10
+ const queue_1 = require("@spinajs/queue");
11
+ let TaskFailed = class TaskFailed extends queue_1.QueueEvent {
12
+ };
13
+ exports.TaskFailed = TaskFailed;
14
+ exports.TaskFailed = TaskFailed = __decorate([
15
+ (0, queue_1.Event)()
16
+ ], TaskFailed);
17
+ //# sourceMappingURL=TaskFailed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskFailed.js","sourceRoot":"","sources":["../../../src/events/TaskFailed.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0CAAmD;AAI5C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,kBAAU;CAGzC,CAAA;AAHY,gCAAU;qBAAV,UAAU;IADtB,IAAA,aAAK,GAAE;GACK,UAAU,CAGtB"}
@@ -0,0 +1,5 @@
1
+ import { QueueEvent } from '@spinajs/queue';
2
+ export declare class TaskSuccess extends QueueEvent {
3
+ TaskName: string;
4
+ }
5
+ //# sourceMappingURL=TaskSuccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskSuccess.d.ts","sourceRoot":"","sources":["../../../src/events/TaskSuccess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEnD,qBACa,WAAY,SAAQ,UAAU;IAClC,QAAQ,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,17 @@
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.TaskSuccess = void 0;
10
+ const queue_1 = require("@spinajs/queue");
11
+ let TaskSuccess = class TaskSuccess extends queue_1.QueueEvent {
12
+ };
13
+ exports.TaskSuccess = TaskSuccess;
14
+ exports.TaskSuccess = TaskSuccess = __decorate([
15
+ (0, queue_1.Event)()
16
+ ], TaskSuccess);
17
+ //# sourceMappingURL=TaskSuccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskSuccess.js","sourceRoot":"","sources":["../../../src/events/TaskSuccess.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0CAAmD;AAG5C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,kBAAU;CAE1C,CAAA;AAFY,kCAAW;sBAAX,WAAW;IADvB,IAAA,aAAK,GAAE;GACK,WAAW,CAEvB"}
@@ -0,0 +1,5 @@
1
+ export * from "./migrations/Task_2024_12_03_11_41_00.js";
2
+ export * from "./decorators.js";
3
+ export * from "./models/__task.js";
4
+ export * from "./models/__task_history.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC;AACzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,21 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./migrations/Task_2024_12_03_11_41_00.js"), exports);
18
+ __exportStar(require("./decorators.js"), exports);
19
+ __exportStar(require("./models/__task.js"), exports);
20
+ __exportStar(require("./models/__task_history.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2EAAyD;AACzD,kDAAgC;AAChC,qDAAmC;AACnC,6DAA2C"}
@@ -0,0 +1,6 @@
1
+ import { OrmMigration, OrmDriver } from '@spinajs/orm';
2
+ export declare class Task_2024_12_03_11_41_00 extends OrmMigration {
3
+ up(connection: OrmDriver): Promise<void>;
4
+ down(_connection: OrmDriver): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Task_2024_12_03_11_41_00.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Task_2024_12_03_11_41_00.d.ts","sourceRoot":"","sources":["../../../src/migrations/Task_2024_12_03_11_41_00.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAIlE,qBACa,wBAAyB,SAAQ,YAAY;IAC3C,EAAE,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CxC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CACzD"}
@@ -0,0 +1,53 @@
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.Task_2024_12_03_11_41_00 = void 0;
10
+ /* eslint-disable @typescript-eslint/no-unused-vars */
11
+ const orm_1 = require("@spinajs/orm");
12
+ const __task_history_js_1 = require("../models/__task_history.js");
13
+ const luxon_1 = require("luxon");
14
+ let Task_2024_12_03_11_41_00 = class Task_2024_12_03_11_41_00 extends orm_1.OrmMigration {
15
+ async up(connection) {
16
+ await connection.schema().createTable('__tasks', (table) => {
17
+ table.int('Id').primaryKey().autoIncrement();
18
+ table.string('Name', 64).unique().notNull();
19
+ table.string('Description', 128).notNull();
20
+ table.enum('State', ['running', 'stopped']);
21
+ table.dateTime('LastRunAt');
22
+ });
23
+ await connection.schema().createTable('__task_history', (table) => {
24
+ table.int('Id').primaryKey().autoIncrement();
25
+ table.int('TaskId').notNull();
26
+ table.text('Result');
27
+ table.dateTime('CreatedAt').notNull().default().dateTime();
28
+ table.int('Duration').default().value(0);
29
+ });
30
+ await connection.index().unique().table('__tasks').name('__tasks_unique_name').columns(['Name']);
31
+ // if driver supports task scheduling
32
+ // create orm task to clear old entries
33
+ if (connection.supportedFeatures().events) {
34
+ // create periodical task
35
+ // to clear old event entries
36
+ // default value is 7 days old
37
+ await connection
38
+ .schema()
39
+ .event('__task_delete_old_entries')
40
+ .do(__task_history_js_1.__task_history.destroy().where('CreatedAt', '<', luxon_1.DateTime.now().plus({
41
+ day: -7,
42
+ })));
43
+ }
44
+ }
45
+ // tslint:disable-next-line: no-empty
46
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
47
+ async down(_connection) { }
48
+ };
49
+ exports.Task_2024_12_03_11_41_00 = Task_2024_12_03_11_41_00;
50
+ exports.Task_2024_12_03_11_41_00 = Task_2024_12_03_11_41_00 = __decorate([
51
+ (0, orm_1.Migration)('default')
52
+ ], Task_2024_12_03_11_41_00);
53
+ //# sourceMappingURL=Task_2024_12_03_11_41_00.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Task_2024_12_03_11_41_00.js","sourceRoot":"","sources":["../../../src/migrations/Task_2024_12_03_11_41_00.ts"],"names":[],"mappings":";;;;;;;;;AAAA,sDAAsD;AACtD,sCAAkE;AAClE,mEAA6D;AAC7D,iCAAiC;AAG1B,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,kBAAY;IACjD,KAAK,CAAC,EAAE,CAAC,UAAqB;QACnC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACzD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YAC5C,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YAChE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;YAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC3D,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjG,qCAAqC;QACrC,uCAAuC;QAEvC,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE;YACzC,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;YAC9B,MAAM,UAAU;iBACb,MAAM,EAAE;iBACR,KAAK,CAAC,2BAA2B,CAAC;iBAClC,EAAE,CACD,kCAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAC5B,WAAW,EACX,GAAG,EACH,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBAClB,GAAG,EAAE,CAAC,CAAC;aACR,CAAC,CACH,CACF,CAAC;SACL;IACH,CAAC;IAED,qCAAqC;IACrC,gEAAgE;IACzD,KAAK,CAAC,IAAI,CAAC,WAAsB,IAAkB,CAAC;CAC5D,CAAA;AA7CY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,eAAS,EAAC,SAAS,CAAC;GACR,wBAAwB,CA6CpC"}
@@ -0,0 +1,19 @@
1
+ import { ModelBase } from '@spinajs/orm';
2
+ import { DateTime } from 'luxon';
3
+ export declare class __task extends ModelBase {
4
+ Id: number;
5
+ /**
6
+ * Task name
7
+ */
8
+ Name: string;
9
+ /**
10
+ * Task description
11
+ */
12
+ Description: string;
13
+ /**
14
+ * Is running or stopped
15
+ */
16
+ State: 'running' | 'stopped';
17
+ LastRunAt: DateTime;
18
+ }
19
+ //# sourceMappingURL=__task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__task.d.ts","sourceRoot":"","sources":["../../../src/models/__task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8C,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,qBAEa,MAAO,SAAQ,SAAS;IAE5B,EAAE,EAAE,MAAM,CAAC;IAElB;;OAEG;IACI,IAAI,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACI,WAAW,EAAG,MAAM,CAAC;IAE5B;;OAEG;IACI,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAM7B,SAAS,EAAE,QAAQ,CAAC;CAC5B"}
@@ -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.__task = void 0;
13
+ const orm_1 = require("@spinajs/orm");
14
+ const luxon_1 = require("luxon");
15
+ let __task = class __task extends orm_1.ModelBase {
16
+ };
17
+ exports.__task = __task;
18
+ __decorate([
19
+ (0, orm_1.Primary)(),
20
+ __metadata("design:type", Number)
21
+ ], __task.prototype, "Id", void 0);
22
+ __decorate([
23
+ (0, orm_1.DateTime)()
24
+ /**
25
+ * Lat task run time at
26
+ */
27
+ ,
28
+ __metadata("design:type", luxon_1.DateTime)
29
+ ], __task.prototype, "LastRunAt", void 0);
30
+ exports.__task = __task = __decorate([
31
+ (0, orm_1.Connection)('default'),
32
+ (0, orm_1.Model)('__tasks')
33
+ ], __task);
34
+ //# sourceMappingURL=__task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__task.js","sourceRoot":"","sources":["../../../src/models/__task.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAqF;AACrF,iCAAiC;AAI1B,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,eAAS;CAwBpC,CAAA;AAxBY,wBAAM;AAEV;IADN,IAAA,aAAO,GAAE;;kCACQ;AAqBX;IAJN,IAAA,cAAE,GAAE;IACL;;OAEG;;8BACe,gBAAQ;yCAAC;iBAvBhB,MAAM;IAFlB,IAAA,gBAAU,EAAC,SAAS,CAAC;IACrB,IAAA,WAAK,EAAC,SAAS,CAAC;GACJ,MAAM,CAwBlB"}
@@ -0,0 +1,16 @@
1
+ import { ModelBase } from '@spinajs/orm';
2
+ import { DateTime } from 'luxon';
3
+ export declare class __task_history extends ModelBase {
4
+ Id: number;
5
+ /**
6
+ * Task name
7
+ */
8
+ TaskId: Number;
9
+ /**
10
+ * Task run result result
11
+ */
12
+ Result: any;
13
+ CreatedAt: DateTime;
14
+ Duration: number;
15
+ }
16
+ //# sourceMappingURL=__task_history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__task_history.d.ts","sourceRoot":"","sources":["../../../src/models/__task_history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+C,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,qBAEa,cAAe,SAAQ,SAAS;IAEpC,EAAE,EAAE,MAAM,CAAC;IAElB;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC;IAEtB;;OAEG;IAEI,MAAM,EAAG,GAAG,CAAC;IAMb,SAAS,EAAE,QAAQ,CAAC;IAEpB,QAAQ,EAAG,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,38 @@
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.__task_history = void 0;
13
+ const orm_1 = require("@spinajs/orm");
14
+ const luxon_1 = require("luxon");
15
+ let __task_history = class __task_history extends orm_1.ModelBase {
16
+ };
17
+ exports.__task_history = __task_history;
18
+ __decorate([
19
+ (0, orm_1.Primary)(),
20
+ __metadata("design:type", Number)
21
+ ], __task_history.prototype, "Id", void 0);
22
+ __decorate([
23
+ (0, orm_1.Json)(),
24
+ __metadata("design:type", Object)
25
+ ], __task_history.prototype, "Result", void 0);
26
+ __decorate([
27
+ (0, orm_1.CreatedAt)()
28
+ /**
29
+ * Lat task run time at
30
+ */
31
+ ,
32
+ __metadata("design:type", luxon_1.DateTime)
33
+ ], __task_history.prototype, "CreatedAt", void 0);
34
+ exports.__task_history = __task_history = __decorate([
35
+ (0, orm_1.Connection)('default'),
36
+ (0, orm_1.Model)('__task_history')
37
+ ], __task_history);
38
+ //# sourceMappingURL=__task_history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__task_history.js","sourceRoot":"","sources":["../../../src/models/__task_history.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAsF;AACtF,iCAAiC;AAI1B,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,eAAS;CAsB5C,CAAA;AAtBY,wCAAc;AAElB;IADN,IAAA,aAAO,GAAE;;0CACQ;AAWX;IADN,IAAA,UAAI,GAAE;;8CACa;AAMb;IAJN,IAAA,eAAS,GAAE;IACZ;;OAEG;;8BACe,gBAAQ;iDAAC;yBAnBhB,cAAc;IAF1B,IAAA,gBAAU,EAAC,SAAS,CAAC;IACrB,IAAA,WAAK,EAAC,gBAAgB,CAAC;GACX,cAAc,CAsB1B"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,25 @@
1
+ declare const cli: {
2
+ system: {
3
+ dirs: {
4
+ cli: string[];
5
+ };
6
+ };
7
+ queue: {
8
+ routing: {
9
+ TaskFailed: {
10
+ connection: string;
11
+ };
12
+ TaskSuccess: {
13
+ connection: string;
14
+ };
15
+ };
16
+ connections: {
17
+ name: string;
18
+ service: string;
19
+ defaultQueueChannel: string;
20
+ defaultTopicChannel: string;
21
+ }[];
22
+ };
23
+ };
24
+ export default cli;
25
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/config/tasks.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;CAwBR,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { join, normalize, resolve } from 'path';
2
+ function dir(path) {
3
+ const inCommonJs = typeof module !== 'undefined';
4
+ return [
5
+ resolve(normalize(join(process.cwd(), 'node_modules', '@spinajs', 'tasks', 'lib', inCommonJs ? 'cjs' : 'mjs', path))),
6
+ // one up if we run from app or build folder
7
+ resolve(normalize(join(process.cwd(), '../', 'node_modules', '@spinajs', 'tasks', 'lib', inCommonJs ? 'cjs' : 'mjs', path))),
8
+ ];
9
+ }
10
+ const cli = {
11
+ system: {
12
+ dirs: {
13
+ cli: [...dir('tasks')],
14
+ },
15
+ },
16
+ queue: {
17
+ routing: {
18
+ // task module events - inform when task fails or succeeds
19
+ TaskFailed: { connection: 'task-empty-queue' },
20
+ TaskSuccess: { connection: 'task-empty-queue' },
21
+ },
22
+ // by default all events from rbac module are routed to rbac-user-empty-queue
23
+ // and is using empty sink ( no events are sent )
24
+ connections: [
25
+ {
26
+ name: 'task-empty-queue',
27
+ service: 'BlackHoleQueueClient',
28
+ defaultQueueChannel: 'task-jobs',
29
+ defaultTopicChannel: 'task-events',
30
+ },
31
+ ],
32
+ },
33
+ };
34
+ export default cli;
35
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/config/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IACjD,OAAO;QACL,OAAO,CACL,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAC7G;QAED,4CAA4C;QAC5C,OAAO,CACL,SAAS,CACP,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CACzG,CACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,GAAG,GAAG;IACV,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;SACvB;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,0DAA0D;YAC1D,UAAU,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;YAC9C,WAAW,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;SAChD;QAED,6EAA6E;QAC7E,iDAAiD;QACjD,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,sBAAsB;gBAC/B,mBAAmB,EAAE,WAAW;gBAChC,mBAAmB,EAAE,aAAa;aACnC;SACF;KACF;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare const TASK_COMMAND = "task:command";
2
+ interface TaskOptions {
3
+ taskStacking: boolean;
4
+ }
5
+ /**
6
+ * Cli command, wrapper for lib commander. For more docs on command options & args check
7
+ * https://github.com/tj/commander.js
8
+ *
9
+ * It allows to use all features that spinajs provides eg. DI, logging, intl support etc.
10
+ * inside command functions without hassle.
11
+ *
12
+ * @param nameAndArgs - name of command with optional args defined
13
+ * @param description - short description
14
+ * @param opts - additional options, see https://github.com/tj/commander.js
15
+ */
16
+ export declare function Task(taskName: string, description: string, opts?: TaskOptions): (_target: any, _propertyKey: string | symbol, descriptor: PropertyDescriptor) => void;
17
+ export {};
18
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,UAAU,WAAW;IAInB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,aAIlD,GAAG,gBAAgB,MAAM,GAAG,MAAM,cAAc,kBAAkB,UA4E7F"}