@chevre/domain 22.10.0-alpha.17 → 22.10.0-alpha.18
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.
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import type { Connection } from 'mongoose';
|
|
3
|
+
import type { RedisClientType } from 'redis';
|
|
2
4
|
import * as factory from '../factory';
|
|
3
|
-
|
|
5
|
+
interface IExecuteSettings {
|
|
6
|
+
/**
|
|
7
|
+
* MongoDBコネクション
|
|
8
|
+
*/
|
|
9
|
+
connection: Connection;
|
|
10
|
+
/**
|
|
11
|
+
* Redisクライアント
|
|
12
|
+
*/
|
|
13
|
+
redisClient?: RedisClientType;
|
|
14
|
+
}
|
|
15
|
+
type IOperationExecute<T> = (settings: IExecuteSettings) => Promise<T>;
|
|
16
|
+
type INextFunction = (task: Pick<factory.task.ITask<factory.taskName>, 'id'>) => IOperationExecute<void>;
|
|
4
17
|
interface IListenArgsOnTaskStatusChanged {
|
|
5
18
|
id: string;
|
|
6
19
|
name?: factory.taskName;
|
|
7
20
|
status: factory.taskStatus.Ready | factory.taskStatus.Running;
|
|
8
21
|
expires?: Date;
|
|
9
|
-
customFunction?: ICustomFunction;
|
|
10
22
|
}
|
|
11
|
-
type IOnTaskStatusChangedListener = (listenArgs: IListenArgsOnTaskStatusChanged) => void;
|
|
23
|
+
type IOnTaskStatusChangedListener = (listenArgs: IListenArgsOnTaskStatusChanged, next: INextFunction) => void;
|
|
12
24
|
/**
|
|
13
25
|
* タスクイベントエミッター
|
|
14
26
|
*/
|
|
15
27
|
declare class TaskEventEmitter extends EventEmitter {
|
|
16
28
|
onTaskStatusChanged(listner: IOnTaskStatusChangedListener): void;
|
|
17
|
-
emitTaskStatusChanged(args: IListenArgsOnTaskStatusChanged): void;
|
|
29
|
+
emitTaskStatusChanged(args: IListenArgsOnTaskStatusChanged, next?: INextFunction): void;
|
|
18
30
|
}
|
|
19
31
|
declare const taskEventEmitter: TaskEventEmitter;
|
|
20
|
-
export {
|
|
32
|
+
export { IExecuteSettings, INextFunction, IListenArgsOnTaskStatusChanged, IOnTaskStatusChangedListener, taskEventEmitter };
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.taskEventEmitter = void 0;
|
|
4
13
|
const events_1 = require("events");
|
|
@@ -6,6 +15,11 @@ var EventName;
|
|
|
6
15
|
(function (EventName) {
|
|
7
16
|
EventName["OnTaskStatusChanged"] = "OnTaskStatusChanged";
|
|
8
17
|
})(EventName || (EventName = {}));
|
|
18
|
+
const defaultNextFunction = () => {
|
|
19
|
+
return () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
// no op
|
|
21
|
+
});
|
|
22
|
+
};
|
|
9
23
|
/**
|
|
10
24
|
* タスクイベントエミッター
|
|
11
25
|
*/
|
|
@@ -13,8 +27,9 @@ class TaskEventEmitter extends events_1.EventEmitter {
|
|
|
13
27
|
onTaskStatusChanged(listner) {
|
|
14
28
|
this.on(EventName.OnTaskStatusChanged, listner);
|
|
15
29
|
}
|
|
16
|
-
|
|
17
|
-
|
|
30
|
+
// support next function required(2025-05-25~)
|
|
31
|
+
emitTaskStatusChanged(args, next) {
|
|
32
|
+
this.emit(EventName.OnTaskStatusChanged, args, (typeof next === 'function') ? next : defaultNextFunction);
|
|
18
33
|
}
|
|
19
34
|
}
|
|
20
35
|
const taskEventEmitter = new TaskEventEmitter();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AnyKeys, Connection, FilterQuery, ProjectionType, UpdateWriteOpResult } from 'mongoose';
|
|
2
|
-
import {
|
|
2
|
+
import { INextFunction } from '../eventEmitter/task';
|
|
3
3
|
import * as factory from '../factory';
|
|
4
4
|
import { IModel } from './mongoose/schemas/task';
|
|
5
5
|
interface IAggregationByStatus {
|
|
@@ -38,7 +38,7 @@ export declare class TaskRepo {
|
|
|
38
38
|
alternateName?: never;
|
|
39
39
|
identifier?: never;
|
|
40
40
|
expires: Date;
|
|
41
|
-
},
|
|
41
|
+
}, next: INextFunction): Promise<{
|
|
42
42
|
id: string;
|
|
43
43
|
}>;
|
|
44
44
|
saveMany(taskAttributes: ICreatingTask[], options: IOptionOnCreate): Promise<{
|
package/lib/chevre/repo/task.js
CHANGED
|
@@ -158,7 +158,7 @@ class TaskRepo {
|
|
|
158
158
|
// resolve uniqueness of identifier(2025-03-27~)
|
|
159
159
|
params,
|
|
160
160
|
// support customr function(2025-05-25~)
|
|
161
|
-
|
|
161
|
+
next) {
|
|
162
162
|
return __awaiter(this, void 0, void 0, function* () {
|
|
163
163
|
var _a, _b;
|
|
164
164
|
const { expires } = params;
|
|
@@ -171,7 +171,11 @@ class TaskRepo {
|
|
|
171
171
|
if (typeof id !== 'string') {
|
|
172
172
|
throw new factory.errors.Internal('task not saved');
|
|
173
173
|
}
|
|
174
|
-
task_1.taskEventEmitter.emitTaskStatusChanged(
|
|
174
|
+
task_1.taskEventEmitter.emitTaskStatusChanged({
|
|
175
|
+
id,
|
|
176
|
+
status: factory.taskStatus.Ready,
|
|
177
|
+
expires // emit expires(2025-03-31~)
|
|
178
|
+
}, next);
|
|
175
179
|
return { id };
|
|
176
180
|
});
|
|
177
181
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { Connection } from 'mongoose';
|
|
2
|
-
import type { RedisClientType } from 'redis';
|
|
3
1
|
import { SendGridCredentials } from '../credentials/sendGrid';
|
|
2
|
+
import type { IExecuteSettings as IMinimumExecuteSettings } from '../eventEmitter/task';
|
|
4
3
|
import * as factory from '../factory';
|
|
5
4
|
import type { IExecutableTask, IExecutableTaskKeys, TaskRepo } from '../repo/task';
|
|
6
5
|
import { Settings } from '../settings';
|
|
@@ -8,15 +7,7 @@ import { AggregationSettings } from '../settings/aggregation';
|
|
|
8
7
|
interface ICredentialSettings {
|
|
9
8
|
sendGrid: SendGridCredentials;
|
|
10
9
|
}
|
|
11
|
-
interface IExecuteSettings {
|
|
12
|
-
/**
|
|
13
|
-
* MongoDBコネクション
|
|
14
|
-
*/
|
|
15
|
-
connection: Connection;
|
|
16
|
-
/**
|
|
17
|
-
* Redisクライアント
|
|
18
|
-
*/
|
|
19
|
-
redisClient?: RedisClientType;
|
|
10
|
+
interface IExecuteSettings extends IMinimumExecuteSettings {
|
|
20
11
|
credentials: ICredentialSettings;
|
|
21
12
|
settings: Settings;
|
|
22
13
|
aggregationSettings?: AggregationSettings;
|
package/package.json
CHANGED