@chevre/domain 26.0.0-alpha.13 → 26.0.0-alpha.15
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/chevre/eventEmitter/task.d.ts +5 -4
- package/lib/chevre/eventEmitter/task.js +2 -2
- package/lib/chevre/repo/adminTask.d.ts +12 -0
- package/lib/chevre/repo/adminTask.js +24 -0
- package/lib/chevre/repo/assetTransaction.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/task.js +4 -0
- package/lib/chevre/repo/scheduledTask.js +0 -21
- package/lib/chevre/repo/task.d.ts +1 -77
- package/lib/chevre/repo/task.js +3 -384
- package/lib/chevre/repo/taskDelayed.d.ts +67 -0
- package/lib/chevre/repo/taskDelayed.js +148 -0
- package/lib/chevre/repo/transaction.d.ts +9 -9
- package/lib/chevre/repository.d.ts +5 -10
- package/lib/chevre/repository.js +11 -22
- package/lib/chevre/service/asyncAction.d.ts +2 -2
- package/lib/chevre/service/asyncAction.js +2 -2
- package/lib/chevre/service/asyncActionHandler.d.ts +4 -4
- package/lib/chevre/service/asyncActionHandler.js +11 -13
- package/lib/chevre/service/order/confirmPayTransaction.js +4 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +2 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +1 -1
- package/lib/chevre/service/project.d.ts +0 -3
- package/lib/chevre/service/project.js +0 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +1 -1
- package/lib/chevre/service/scheduledTask.js +1 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +1 -14
- package/lib/chevre/service/task/authorizePayment.js +1 -7
- package/lib/chevre/service/task/checkMovieTicket.js +1 -7
- package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
- package/lib/chevre/service/task/publishPaymentUrl.js +1 -10
- package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -5
- package/lib/chevre/service/task/voidReserveTransaction.js +5 -8
- package/lib/chevre/service/task.d.ts +3 -3
- package/lib/chevre/service/task.js +3 -3
- package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +1 -2
- package/lib/chevre/service/taskHandler/onOperationFailed.js +8 -7
- package/lib/chevre/service/taskHandler.d.ts +1 -2
- package/lib/chevre/service/taskHandler.js +6 -5
- package/lib/chevre/taskSettings.d.ts +4 -2
- package/package.json +1 -1
- package/lib/chevre/repo/asyncActionLegacy.d.ts +0 -23
- package/lib/chevre/repo/asyncActionLegacy.js +0 -59
- package/lib/chevre/repo/scheduledTaskLegacy.d.ts +0 -39
- package/lib/chevre/repo/scheduledTaskLegacy.js +0 -96
|
@@ -58,15 +58,16 @@ interface IExecutedTask {
|
|
|
58
58
|
}
|
|
59
59
|
type IChangedTask = IReadyTask | IRunningTask | IRunningTaskByName | IExecutedTask;
|
|
60
60
|
type IOperationExecute<T> = (settings: IExecuteSettings) => Promise<T>;
|
|
61
|
-
type
|
|
62
|
-
type
|
|
61
|
+
type ITaskAsNextFunctionParam = Pick<IExecutedTask, 'id' | 'name' | 'status'>;
|
|
62
|
+
type IAsyncActionNextFunction = (task: ITaskAsNextFunctionParam) => IOperationExecute<void>;
|
|
63
|
+
type IOnTaskStatusChangedListener = (task: IChangedTask) => void;
|
|
63
64
|
type RedisClientType = ReturnType<typeof createClient>;
|
|
64
65
|
/**
|
|
65
66
|
* タスクイベントエミッター
|
|
66
67
|
*/
|
|
67
68
|
declare class TaskEventEmitter extends EventEmitter {
|
|
68
69
|
onTaskStatusChanged(listener: IOnTaskStatusChangedListener): void;
|
|
69
|
-
emitTaskStatusChanged(task: IChangedTask
|
|
70
|
+
emitTaskStatusChanged(task: IChangedTask): void;
|
|
70
71
|
}
|
|
71
72
|
declare const taskEventEmitter: TaskEventEmitter;
|
|
72
|
-
export { IChangedTask, IReadyTask, IRunningTask, IRunningTaskByName, IExecutedTask, IExecuteSettings,
|
|
73
|
+
export { IChangedTask, IReadyTask, IRunningTask, IRunningTaskByName, IExecutedTask, IExecuteSettings, IOnTaskStatusChangedListener, taskEventEmitter, ITaskAsNextFunctionParam, IAsyncActionNextFunction };
|
|
@@ -14,8 +14,8 @@ class TaskEventEmitter extends events_1.EventEmitter {
|
|
|
14
14
|
this.on(EventName.OnTaskStatusChanged, listener);
|
|
15
15
|
}
|
|
16
16
|
// support next function required(2025-05-25~)
|
|
17
|
-
emitTaskStatusChanged(task
|
|
18
|
-
this.emit(EventName.OnTaskStatusChanged, task
|
|
17
|
+
emitTaskStatusChanged(task) {
|
|
18
|
+
this.emit(EventName.OnTaskStatusChanged, task);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
const taskEventEmitter = new TaskEventEmitter();
|
|
@@ -16,6 +16,18 @@ export declare class AdminTaskRepo {
|
|
|
16
16
|
* 検索する
|
|
17
17
|
*/
|
|
18
18
|
findTasks(params: factory.task.ISearchConditions, inclusion: IKeyOfProjection[]): Promise<factory.task.ITask<factory.taskName>[]>;
|
|
19
|
+
/**
|
|
20
|
+
* cron:notifyLatency専用
|
|
21
|
+
*/
|
|
22
|
+
countDelayedTasks(params: {
|
|
23
|
+
delayInSeconds: number;
|
|
24
|
+
name: {
|
|
25
|
+
$nin?: factory.taskName[];
|
|
26
|
+
};
|
|
27
|
+
limit?: number;
|
|
28
|
+
}): Promise<{
|
|
29
|
+
count: number;
|
|
30
|
+
}>;
|
|
19
31
|
getCursor(conditions: FilterQuery<factory.task.ITask<factory.taskName>>, projection: ProjectionType<factory.task.ITask<factory.taskName>>): import("mongoose").Cursor<import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & Omit<import("@chevre/factory/lib/chevre/task").ITask | import("@chevre/factory/lib/chevre/task/confirmPayTransaction").ITask | import("@chevre/factory/lib/chevre/task/confirmReserveTransaction").ITask | import("@chevre/factory/lib/chevre/task/createAccountingReport").ITask | import("@chevre/factory/lib/chevre/task/onAssetTransactionStatusChanged").ITask | import("@chevre/factory/lib/chevre/task/onAuthorizationCreated").ITask | import("@chevre/factory/lib/chevre/task/onEventChanged").ITask | import("@chevre/factory/lib/chevre/task/onResourceDeleted").ITask | import("@chevre/factory/lib/chevre/task/onResourceUpdated").ITask | import("@chevre/factory/lib/chevre/task/onOrderPaymentCompleted").ITask | import("@chevre/factory/lib/chevre/task/placeOrder").ITask | import("@chevre/factory/lib/chevre/task/returnOrder").ITask | import("@chevre/factory/lib/chevre/task/returnPayTransaction").ITask | import("@chevre/factory/lib/chevre/task/returnReserveTransaction").ITask | import("@chevre/factory/lib/chevre/task/sendEmailMessage").ITask | import("@chevre/factory/lib/chevre/task/sendOrder").ITask | import("@chevre/factory/lib/chevre/task/triggerWebhook").ITask | import("@chevre/factory/lib/chevre/task/useReservation").ITask | import("@chevre/factory/lib/chevre/task/voidPayTransaction").ITask, "id"> & {
|
|
20
32
|
expires?: never;
|
|
21
33
|
} & {
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.AdminTaskRepo = void 0;
|
|
7
|
+
const moment_1 = __importDefault(require("moment"));
|
|
4
8
|
const factory_1 = require("../factory");
|
|
5
9
|
const settings_1 = require("../settings");
|
|
6
10
|
const task_1 = require("./mongoose/schemas/task");
|
|
@@ -151,6 +155,26 @@ class AdminTaskRepo {
|
|
|
151
155
|
.lean() // lean(2024-09-26~)
|
|
152
156
|
.exec();
|
|
153
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* cron:notifyLatency専用
|
|
160
|
+
*/
|
|
161
|
+
async countDelayedTasks(params) {
|
|
162
|
+
const { limit } = params;
|
|
163
|
+
const runsAtLt = (0, moment_1.default)()
|
|
164
|
+
.add(-params.delayInSeconds, 'seconds')
|
|
165
|
+
.toDate();
|
|
166
|
+
const query = this.taskModel.countDocuments({
|
|
167
|
+
status: { $eq: factory_1.factory.taskStatus.Ready },
|
|
168
|
+
runsAt: { $lt: runsAtLt },
|
|
169
|
+
...(Array.isArray(params.name.$nin)) ? { name: { $nin: params.name.$nin } } : undefined
|
|
170
|
+
});
|
|
171
|
+
if (typeof limit === 'number' && limit >= 0) {
|
|
172
|
+
query.limit(limit);
|
|
173
|
+
}
|
|
174
|
+
const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
175
|
+
.exec();
|
|
176
|
+
return { count };
|
|
177
|
+
}
|
|
154
178
|
getCursor(conditions, projection) {
|
|
155
179
|
return this.taskModel.find(conditions, projection)
|
|
156
180
|
.sort({ runsAt: factory_1.factory.sortType.Ascending })
|
|
@@ -124,7 +124,7 @@ export declare class AssetTransactionRepo {
|
|
|
124
124
|
$in: factory.transactionStatusType[];
|
|
125
125
|
};
|
|
126
126
|
limit: number;
|
|
127
|
-
}): Promise<Pick<import("@chevre/factory/lib/chevre/assetTransaction/cancelReservation").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/pay").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/refund").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/reserve").ITransaction, "id" | "
|
|
127
|
+
}): Promise<Pick<import("@chevre/factory/lib/chevre/assetTransaction/cancelReservation").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/pay").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/refund").ITransaction | import("@chevre/factory/lib/chevre/assetTransaction/reserve").ITransaction, "id" | "status" | "typeOf">[]>;
|
|
128
128
|
/**
|
|
129
129
|
* set task status exported by transaction id
|
|
130
130
|
* IDでタスクをエクスポート済に変更する
|
|
@@ -178,6 +178,10 @@ const indexes = [
|
|
|
178
178
|
{ status: 1, runsAt: 1, name: 1 },
|
|
179
179
|
{ name: 'executeOneByNameIfExists' } // add(2025-03-08~)
|
|
180
180
|
],
|
|
181
|
+
[
|
|
182
|
+
{ status: 1, name: 1, runsAt: 1 },
|
|
183
|
+
{ name: 'runDelayedTaskByName' } // add(2026-08-05~)
|
|
184
|
+
],
|
|
181
185
|
[
|
|
182
186
|
{ status: 1, remainingNumberOfTries: 1, lastTriedAt: 1 },
|
|
183
187
|
{
|
|
@@ -40,15 +40,6 @@ class ScheduledTaskRepo {
|
|
|
40
40
|
.map((objectId) => {
|
|
41
41
|
return { id: objectId.toHexString() };
|
|
42
42
|
});
|
|
43
|
-
// イベントは発火しない
|
|
44
|
-
// if (emitImmediately) {
|
|
45
|
-
// savedTasks.forEach((savedTask) => {
|
|
46
|
-
// taskEventEmitter.emitTaskStatusChanged({
|
|
47
|
-
// id: savedTask.id,
|
|
48
|
-
// status: factory.taskStatus.Ready
|
|
49
|
-
// });
|
|
50
|
-
// });
|
|
51
|
-
// }
|
|
52
43
|
return savedTasks;
|
|
53
44
|
}
|
|
54
45
|
else {
|
|
@@ -116,18 +107,6 @@ class ScheduledTaskRepo {
|
|
|
116
107
|
if (doc === null) {
|
|
117
108
|
return null;
|
|
118
109
|
}
|
|
119
|
-
// if (!noEmitEvent) {
|
|
120
|
-
// const changedTask: IRunningTaskByName = {
|
|
121
|
-
// id: doc.id,
|
|
122
|
-
// status: factory.taskStatus.Running,
|
|
123
|
-
// name: nameEq
|
|
124
|
-
// };
|
|
125
|
-
// taskEventEmitter.emitTaskStatusChanged(
|
|
126
|
-
// changedTask,
|
|
127
|
-
// // 現時点でタスク遅延実行ではnext指定なし(2026-07-30)
|
|
128
|
-
// // (typeof next === 'function') ? next : undefined
|
|
129
|
-
// );
|
|
130
|
-
// }
|
|
131
110
|
return doc;
|
|
132
111
|
}
|
|
133
112
|
/**
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Connection, UpdateWriteOpResult } from 'mongoose';
|
|
2
|
-
import { INextFunction } from '../eventEmitter/task';
|
|
3
2
|
import { factory } from '../factory';
|
|
4
3
|
import { IDocType } from './mongoose/schemas/task';
|
|
5
4
|
import type { IExecutableTask } from '../taskSettings';
|
|
@@ -54,11 +53,10 @@ export declare class TaskRepo {
|
|
|
54
53
|
* reimplement runTaskByIdentifier(2026-08-03~)
|
|
55
54
|
*/
|
|
56
55
|
runTaskByIdentifier(params: ICreatingTask & {
|
|
57
|
-
alternateName
|
|
56
|
+
alternateName?: never;
|
|
58
57
|
identifier: string;
|
|
59
58
|
expires?: never;
|
|
60
59
|
}): Promise<void>;
|
|
61
|
-
createOnAssetTransactionStatusChangedTaskIfNotExist(params: Pick<factory.task.IAttributes<factory.taskName.OnAssetTransactionStatusChanged>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status'>): Promise<void>;
|
|
62
60
|
/**
|
|
63
61
|
* Ready -> remainingNumberOfTriesが1減る
|
|
64
62
|
* Running -> findOneするだけ
|
|
@@ -71,64 +69,6 @@ export declare class TaskRepo {
|
|
|
71
69
|
};
|
|
72
70
|
expires?: never;
|
|
73
71
|
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
74
|
-
/**
|
|
75
|
-
* 潜在的に実行されるべきタスクをカウントする
|
|
76
|
-
* add(2025-03-16~)
|
|
77
|
-
*/
|
|
78
|
-
countPotentiallyRunning(params: {
|
|
79
|
-
name?: {
|
|
80
|
-
$eq?: factory.taskName;
|
|
81
|
-
$in?: factory.taskName[];
|
|
82
|
-
};
|
|
83
|
-
runsAt: {
|
|
84
|
-
$lt: Date;
|
|
85
|
-
};
|
|
86
|
-
limit: number;
|
|
87
|
-
}): Promise<{
|
|
88
|
-
count: number;
|
|
89
|
-
}>;
|
|
90
|
-
/**
|
|
91
|
-
* 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更する
|
|
92
|
-
*/
|
|
93
|
-
private runDelayedTask;
|
|
94
|
-
/**
|
|
95
|
-
* 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更した上で、Runningイベントを発生させる
|
|
96
|
-
*/
|
|
97
|
-
emitRunningIfExistsByName(params: {
|
|
98
|
-
/**
|
|
99
|
-
* 必ずタスク名指定で実行する
|
|
100
|
-
*/
|
|
101
|
-
name: {
|
|
102
|
-
$eq: factory.taskName;
|
|
103
|
-
$in?: never;
|
|
104
|
-
} | {
|
|
105
|
-
$eq?: never;
|
|
106
|
-
$in: factory.taskName[];
|
|
107
|
-
};
|
|
108
|
-
runsAt: {
|
|
109
|
-
$lt: Date;
|
|
110
|
-
};
|
|
111
|
-
sort: {
|
|
112
|
-
numberOfTried?: factory.sortType;
|
|
113
|
-
runsAt?: factory.sortType;
|
|
114
|
-
};
|
|
115
|
-
executor: {
|
|
116
|
-
name: string;
|
|
117
|
-
};
|
|
118
|
-
}): Promise<Pick<factory.task.ITask<factory.taskName>, 'id' | 'name'> | null>;
|
|
119
|
-
/**
|
|
120
|
-
* 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更した上で、Runningイベントを発生させる
|
|
121
|
-
* taskNameで絞らない
|
|
122
|
-
* 2026-08-04~
|
|
123
|
-
*/
|
|
124
|
-
emitRunningIfExistsNoName(params: {
|
|
125
|
-
runsAt: {
|
|
126
|
-
$lt: Date;
|
|
127
|
-
};
|
|
128
|
-
executor: {
|
|
129
|
-
name: string;
|
|
130
|
-
};
|
|
131
|
-
}): Promise<Pick<factory.task.ITask<factory.taskName>, 'id' | 'name'> | null>;
|
|
132
72
|
/**
|
|
133
73
|
* Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
|
|
134
74
|
*/
|
|
@@ -167,16 +107,9 @@ export declare class TaskRepo {
|
|
|
167
107
|
* タスクID
|
|
168
108
|
*/
|
|
169
109
|
id: string;
|
|
170
|
-
remainingNumberOfTries: number;
|
|
171
|
-
name: factory.taskName;
|
|
172
110
|
}, update: {
|
|
173
111
|
status: factory.taskStatus.Executed | factory.taskStatus.Running | factory.taskStatus.Aborted;
|
|
174
112
|
executionResult: factory.task.IExecutionResult;
|
|
175
|
-
}, next?: INextFunction): Promise<void>;
|
|
176
|
-
deleteByProject(params: {
|
|
177
|
-
project: {
|
|
178
|
-
id: string;
|
|
179
|
-
};
|
|
180
113
|
}): Promise<void>;
|
|
181
114
|
/**
|
|
182
115
|
* 不要なタスクを削除する
|
|
@@ -186,14 +119,5 @@ export declare class TaskRepo {
|
|
|
186
119
|
$lt: Date;
|
|
187
120
|
};
|
|
188
121
|
}): Promise<import("mongodb").DeleteResult>;
|
|
189
|
-
countDelayedTasks(params: {
|
|
190
|
-
delayInSeconds: number;
|
|
191
|
-
name: {
|
|
192
|
-
$nin?: factory.taskName[];
|
|
193
|
-
};
|
|
194
|
-
limit?: number;
|
|
195
|
-
}): Promise<{
|
|
196
|
-
count: number;
|
|
197
|
-
}>;
|
|
198
122
|
}
|
|
199
123
|
export {};
|