@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.
Files changed (48) hide show
  1. package/lib/chevre/eventEmitter/task.d.ts +5 -4
  2. package/lib/chevre/eventEmitter/task.js +2 -2
  3. package/lib/chevre/repo/adminTask.d.ts +12 -0
  4. package/lib/chevre/repo/adminTask.js +24 -0
  5. package/lib/chevre/repo/assetTransaction.d.ts +1 -1
  6. package/lib/chevre/repo/mongoose/schemas/task.js +4 -0
  7. package/lib/chevre/repo/scheduledTask.js +0 -21
  8. package/lib/chevre/repo/task.d.ts +1 -77
  9. package/lib/chevre/repo/task.js +3 -384
  10. package/lib/chevre/repo/taskDelayed.d.ts +67 -0
  11. package/lib/chevre/repo/taskDelayed.js +148 -0
  12. package/lib/chevre/repo/transaction.d.ts +9 -9
  13. package/lib/chevre/repository.d.ts +5 -10
  14. package/lib/chevre/repository.js +11 -22
  15. package/lib/chevre/service/asyncAction.d.ts +2 -2
  16. package/lib/chevre/service/asyncAction.js +2 -2
  17. package/lib/chevre/service/asyncActionHandler.d.ts +4 -4
  18. package/lib/chevre/service/asyncActionHandler.js +11 -13
  19. package/lib/chevre/service/order/confirmPayTransaction.js +4 -1
  20. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +2 -2
  21. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -1
  22. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +1 -1
  23. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +1 -1
  24. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +1 -1
  25. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +1 -1
  26. package/lib/chevre/service/project.d.ts +0 -3
  27. package/lib/chevre/service/project.js +0 -1
  28. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +1 -1
  29. package/lib/chevre/service/scheduledTask.js +1 -1
  30. package/lib/chevre/service/task/acceptCOAOffer.js +1 -14
  31. package/lib/chevre/service/task/authorizePayment.js +1 -7
  32. package/lib/chevre/service/task/checkMovieTicket.js +1 -7
  33. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
  34. package/lib/chevre/service/task/publishPaymentUrl.js +1 -10
  35. package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -5
  36. package/lib/chevre/service/task/voidReserveTransaction.js +5 -8
  37. package/lib/chevre/service/task.d.ts +3 -3
  38. package/lib/chevre/service/task.js +3 -3
  39. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +1 -2
  40. package/lib/chevre/service/taskHandler/onOperationFailed.js +8 -7
  41. package/lib/chevre/service/taskHandler.d.ts +1 -2
  42. package/lib/chevre/service/taskHandler.js +6 -5
  43. package/lib/chevre/taskSettings.d.ts +4 -2
  44. package/package.json +1 -1
  45. package/lib/chevre/repo/asyncActionLegacy.d.ts +0 -23
  46. package/lib/chevre/repo/asyncActionLegacy.js +0 -59
  47. package/lib/chevre/repo/scheduledTaskLegacy.d.ts +0 -39
  48. 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 INextFunction = (task: IExecutedTask) => IOperationExecute<void>;
62
- type IOnTaskStatusChangedListener = (task: IChangedTask, next?: INextFunction) => void;
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, next?: INextFunction): void;
70
+ emitTaskStatusChanged(task: IChangedTask): void;
70
71
  }
71
72
  declare const taskEventEmitter: TaskEventEmitter;
72
- export { IChangedTask, IReadyTask, IRunningTask, IRunningTaskByName, IExecutedTask, IExecuteSettings, INextFunction, IOnTaskStatusChangedListener, taskEventEmitter };
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, next) {
18
- this.emit(EventName.OnTaskStatusChanged, task, (typeof next === 'function') ? next : undefined);
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" | "typeOf" | "status">[]>;
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: string;
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 {};