@chevre/domain 22.11.0-alpha.8 → 22.11.0

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 (155) hide show
  1. package/example/src/chevre/aggregation/aggregateOrderOfCustomer.ts +21 -10
  2. package/example/src/chevre/aggregation/aggregateTasks.ts +41 -0
  3. package/example/src/chevre/checkCustomerAttributesLength.ts +109 -0
  4. package/example/src/chevre/notifyAbortedTasksByEmail.ts +1 -1
  5. package/example/src/chevre/reIndex.ts +1 -1
  6. package/example/src/chevre/roles/addEventOfferPermissionIfNotExists.ts +27 -0
  7. package/example/src/chevre/roles/{addAdminInventoryManagerRole.ts → addProjectCreatorRole.ts} +6 -8
  8. package/example/src/chevre/roles/assignGlobalRoles.ts +72 -0
  9. package/example/src/chevre/roles/findPermissions.ts +84 -0
  10. package/example/src/chevre/roles/findRoleNames.ts +117 -0
  11. package/example/src/chevre/roles/removeConsolePermissionIfExists.ts +38 -0
  12. package/example/src/chevre/roles/removePermissionFromAPIRoles.ts +46 -0
  13. package/example/src/chevre/roles/removePermissionIfExists.ts +39 -0
  14. package/example/src/chevre/searchEventSeats.ts +1 -1
  15. package/example/src/chevre/searchProducts.ts +28 -0
  16. package/example/src/chevre/settings/addSettings.ts +31 -17
  17. package/example/src/chevre/task/countPotentiallyRunning.ts +41 -0
  18. package/example/src/chevre/task/countTasks.ts +51 -0
  19. package/example/src/chevre/{deleteRunsAtPassedCertainPeriod.ts → task/deleteRunsAtPassedCertainPeriod.ts} +4 -3
  20. package/example/src/chevre/task/deleteUnexpectedTasks.ts +23 -0
  21. package/example/src/chevre/task/emitRunning.ts +89 -0
  22. package/example/src/idaas/auth0/adminApplications.ts +183 -0
  23. package/example/src/idaas/auth0/getToken.ts +55 -0
  24. package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +84 -0
  25. package/example/src/regex.ts +31 -0
  26. package/lib/chevre/eventEmitter/task.d.ts +29 -6
  27. package/lib/chevre/index.d.ts +0 -2
  28. package/lib/chevre/index.js +0 -10
  29. package/lib/chevre/repo/identity.d.ts +11 -33
  30. package/lib/chevre/repo/identity.js +10 -15
  31. package/lib/chevre/repo/member.d.ts +22 -4
  32. package/lib/chevre/repo/member.js +81 -27
  33. package/lib/chevre/repo/mongoose/schemas/identity.d.ts +1 -1
  34. package/lib/chevre/repo/mongoose/schemas/member/global.d.ts +14 -0
  35. package/lib/chevre/repo/mongoose/schemas/member/global.js +82 -0
  36. package/lib/chevre/repo/mongoose/schemas/product.js +9 -0
  37. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +15 -0
  38. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -0
  39. package/lib/chevre/repo/mongoose/schemas/task.js +9 -0
  40. package/lib/chevre/repo/order.d.ts +17 -2
  41. package/lib/chevre/repo/order.js +47 -8
  42. package/lib/chevre/repo/pendingReservation.js +1 -0
  43. package/lib/chevre/repo/product.js +12 -17
  44. package/lib/chevre/repo/role.d.ts +13 -4
  45. package/lib/chevre/repo/role.js +52 -32
  46. package/lib/chevre/repo/setting.d.ts +1 -10
  47. package/lib/chevre/repo/setting.js +2 -11
  48. package/lib/chevre/repo/stockHolder.d.ts +4 -27
  49. package/lib/chevre/repo/stockHolder.js +163 -175
  50. package/lib/chevre/repo/task.d.ts +58 -38
  51. package/lib/chevre/repo/task.js +126 -296
  52. package/lib/chevre/repo/transaction.js +10 -10
  53. package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
  54. package/lib/chevre/service/assetTransaction/registerService.js +4 -0
  55. package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +19 -16
  56. package/lib/chevre/service/code.d.ts +5 -28
  57. package/lib/chevre/service/code.js +3 -79
  58. package/lib/chevre/service/iam.d.ts +17 -7
  59. package/lib/chevre/service/iam.js +26 -6
  60. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +15 -0
  61. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +38 -0
  62. package/lib/chevre/service/notification.d.ts +2 -1
  63. package/lib/chevre/service/notification.js +3 -1
  64. package/lib/chevre/service/offer/product.js +4 -0
  65. package/lib/chevre/service/order/confirmPayTransaction.d.ts +6 -1
  66. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +3 -3
  67. package/lib/chevre/service/task/acceptCOAOffer.d.ts +1 -1
  68. package/lib/chevre/service/task/aggregateOffers.d.ts +1 -1
  69. package/lib/chevre/service/task/aggregateOffers.js +1 -1
  70. package/lib/chevre/service/task/aggregateOnSystem.d.ts +4 -2
  71. package/lib/chevre/service/task/aggregateScreeningEvent.d.ts +1 -1
  72. package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
  73. package/lib/chevre/service/task/authorizePayment.d.ts +1 -1
  74. package/lib/chevre/service/task/cancelMoneyTransfer.d.ts +1 -1
  75. package/lib/chevre/service/task/cancelPendingReservation.d.ts +1 -1
  76. package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
  77. package/lib/chevre/service/task/cancelReservation.d.ts +1 -1
  78. package/lib/chevre/service/task/cancelReservation.js +1 -1
  79. package/lib/chevre/service/task/checkMovieTicket.d.ts +1 -1
  80. package/lib/chevre/service/task/checkResource.d.ts +1 -1
  81. package/lib/chevre/service/task/checkResource.js +1 -1
  82. package/lib/chevre/service/task/confirmMoneyTransfer.d.ts +1 -1
  83. package/lib/chevre/service/task/confirmPayTransaction.d.ts +2 -2
  84. package/lib/chevre/service/task/confirmPayTransaction.js +3 -2
  85. package/lib/chevre/service/task/confirmRegisterService.d.ts +1 -1
  86. package/lib/chevre/service/task/confirmRegisterServiceTransaction.d.ts +1 -1
  87. package/lib/chevre/service/task/confirmReserveTransaction.d.ts +6 -2
  88. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -3
  89. package/lib/chevre/service/task/createAccountingReport.d.ts +1 -1
  90. package/lib/chevre/service/task/createEvent.d.ts +1 -1
  91. package/lib/chevre/service/task/deletePerson.d.ts +1 -1
  92. package/lib/chevre/service/task/deleteTransaction.d.ts +1 -1
  93. package/lib/chevre/service/task/givePointAward.d.ts +1 -1
  94. package/lib/chevre/service/task/handleNotification.d.ts +4 -2
  95. package/lib/chevre/service/task/importEventCapacitiesFromCOA.d.ts +1 -1
  96. package/lib/chevre/service/task/importEventsFromCOA.d.ts +1 -1
  97. package/lib/chevre/service/task/importOffersFromCOA.d.ts +1 -1
  98. package/lib/chevre/service/task/invalidatePaymentUrl.d.ts +1 -1
  99. package/lib/chevre/service/task/moneyTransfer.d.ts +1 -1
  100. package/lib/chevre/service/task/onAssetTransactionStatusChanged.d.ts +1 -1
  101. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +1 -1
  102. package/lib/chevre/service/task/onEventChanged.d.ts +1 -1
  103. package/lib/chevre/service/task/onOrderPaymentCompleted.d.ts +1 -1
  104. package/lib/chevre/service/task/onResourceUpdated.d.ts +1 -1
  105. package/lib/chevre/service/task/pay.d.ts +1 -1
  106. package/lib/chevre/service/task/placeOrder.d.ts +1 -1
  107. package/lib/chevre/service/task/publishPaymentUrl.d.ts +1 -1
  108. package/lib/chevre/service/task/refund.d.ts +1 -1
  109. package/lib/chevre/service/task/registerService.d.ts +1 -1
  110. package/lib/chevre/service/task/reserve.d.ts +1 -1
  111. package/lib/chevre/service/task/returnMoneyTransfer.d.ts +1 -1
  112. package/lib/chevre/service/task/returnOrder.d.ts +1 -1
  113. package/lib/chevre/service/task/returnPayTransaction.d.ts +1 -1
  114. package/lib/chevre/service/task/returnPointAward.d.ts +1 -1
  115. package/lib/chevre/service/task/returnReserveTransaction.d.ts +1 -1
  116. package/lib/chevre/service/task/sendEmailMessage.d.ts +1 -1
  117. package/lib/chevre/service/task/sendOrder.d.ts +1 -1
  118. package/lib/chevre/service/task/triggerWebhook.d.ts +1 -1
  119. package/lib/chevre/service/task/useReservation.d.ts +1 -1
  120. package/lib/chevre/service/task/voidMoneyTransferTransaction.d.ts +1 -1
  121. package/lib/chevre/service/task/voidPayTransaction.d.ts +1 -1
  122. package/lib/chevre/service/task/voidPayment.d.ts +1 -1
  123. package/lib/chevre/service/task/voidRegisterServiceTransaction.d.ts +1 -1
  124. package/lib/chevre/service/task/voidReserveTransaction.d.ts +1 -1
  125. package/lib/chevre/service/task/voidReserveTransaction.js +1 -1
  126. package/lib/chevre/service/task.d.ts +7 -29
  127. package/lib/chevre/service/task.js +9 -114
  128. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.d.ts +11 -0
  129. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +105 -0
  130. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +17 -0
  131. package/lib/chevre/service/taskHandler/onOperationFailed.js +70 -0
  132. package/lib/chevre/service/taskHandler.d.ts +26 -0
  133. package/lib/chevre/service/taskHandler.js +97 -0
  134. package/lib/chevre/service/validation/validateEvent.d.ts +2 -2
  135. package/lib/chevre/service/validation/validateEvent.js +16 -10
  136. package/lib/chevre/service.d.ts +0 -4
  137. package/lib/chevre/service.js +10 -14
  138. package/lib/chevre/settings/aggregation.d.ts +6 -1
  139. package/lib/chevre/settings/aggregation.js +2 -1
  140. package/package.json +6 -4
  141. package/example/src/chevre/adminAuth/adminIdentity.ts +0 -38
  142. package/example/src/chevre/executeOneTask.ts +0 -41
  143. package/example/src/chevre/executeTaskIfExists.ts +0 -80
  144. package/example/src/chevre/findExecutableTask.ts +0 -50
  145. package/example/src/chevre/findSetting.ts +0 -79
  146. package/example/src/chevre/roles/addRoleMembers.ts +0 -75
  147. package/example/src/chevre/searchPermissions.ts +0 -46
  148. package/example/src/chevre/searchProductOffers.ts +0 -29
  149. package/example/src/chevre/stockHolder/checkIfConflicted.ts +0 -76
  150. package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +0 -186
  151. package/example/src/chevre/stockHolder/migratePendingReservations.ts +0 -96
  152. package/example/src/chevre/stockHolder/playAroundStockHolder.ts +0 -256
  153. package/example/src/chevre/upsertProductsByProductId.ts +0 -100
  154. package/lib/chevre/adminAuth.d.ts +0 -2
  155. package/lib/chevre/adminAuth.js +0 -6
@@ -0,0 +1,105 @@
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
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.informTaskIfNeeded = informTaskIfNeeded;
13
+ const createDebug = require("debug");
14
+ const factory = require("../../../factory");
15
+ const debug = createDebug('chevre-domain:service:taskHandler:onOperationFailed');
16
+ function createInformTasks(params) {
17
+ var _a, _b, _c;
18
+ const { task, setting, executionEndDate } = params;
19
+ const informTask = (_a = setting === null || setting === void 0 ? void 0 : setting.onTaskStatusChanged) === null || _a === void 0 ? void 0 : _a.informTask;
20
+ const informTaskNames = (_b = setting === null || setting === void 0 ? void 0 : setting.onTaskStatusChanged) === null || _b === void 0 ? void 0 : _b.informTaskNames;
21
+ const informTaskStatuses = (_c = setting === null || setting === void 0 ? void 0 : setting.onTaskStatusChanged) === null || _c === void 0 ? void 0 : _c.informTaskStatuses;
22
+ const informTasks = [];
23
+ if (Array.isArray(informTaskNames) && informTaskNames.includes(task.name)) {
24
+ if (Array.isArray(informTaskStatuses)) {
25
+ const { id, name, data, project, runsAt, remainingNumberOfTries } = task;
26
+ let task4inform;
27
+ if (remainingNumberOfTries <= 0) {
28
+ if (informTaskStatuses.includes(factory.taskStatus.Aborted)) {
29
+ const abortingTask = {
30
+ id, name, data, project, runsAt,
31
+ status: factory.taskStatus.Aborted,
32
+ typeOf: 'Task',
33
+ dateAborted: executionEndDate
34
+ };
35
+ task4inform = abortingTask;
36
+ }
37
+ }
38
+ else {
39
+ if (informTaskStatuses.includes(factory.taskStatus.Running)) {
40
+ const runningTask = {
41
+ id, name, data, project, runsAt,
42
+ status: factory.taskStatus.Running,
43
+ typeOf: 'Task'
44
+ };
45
+ task4inform = runningTask;
46
+ }
47
+ }
48
+ if (task4inform !== undefined) {
49
+ const informIdentifier = `Task:${name}:${id}:${task4inform.status}`;
50
+ if (Array.isArray(informTask) && informTask.length > 0) {
51
+ informTask.forEach((informTaskParams) => {
52
+ var _a, _b;
53
+ if (typeof ((_a = informTaskParams.recipient) === null || _a === void 0 ? void 0 : _a.url) === 'string') {
54
+ const informActionAttributes = {
55
+ object: task4inform,
56
+ recipient: {
57
+ id: '',
58
+ name: String((_b = informTaskParams.recipient) === null || _b === void 0 ? void 0 : _b.name),
59
+ typeOf: factory.creativeWorkType.WebApplication
60
+ },
61
+ target: {
62
+ httpMethod: 'POST',
63
+ encodingType: factory.encodingFormat.Application.json,
64
+ typeOf: 'EntryPoint',
65
+ urlTemplate: informTaskParams.recipient.url
66
+ },
67
+ identifier: informIdentifier
68
+ };
69
+ const description = `inform aborting tasks to agg service: ${name} ${id} ${task4inform.status}`;
70
+ informTasks.push({
71
+ project,
72
+ name: factory.taskName.TriggerWebhook,
73
+ status: factory.taskStatus.Ready,
74
+ runsAt: executionEndDate,
75
+ remainingNumberOfTries: 10,
76
+ numberOfTried: 0,
77
+ executionResults: [],
78
+ data: informActionAttributes,
79
+ description
80
+ });
81
+ }
82
+ });
83
+ }
84
+ }
85
+ }
86
+ }
87
+ return informTasks;
88
+ }
89
+ function informTaskIfNeeded(params) {
90
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
91
+ const { executionEndDate, task } = params;
92
+ const isAborting = task.status === factory.taskStatus.Running;
93
+ const useInform = isAborting
94
+ && task.name !== factory.taskName.HandleNotification // nameで絞る
95
+ && task.name !== factory.taskName.TriggerWebhook;
96
+ if (useInform) {
97
+ const setting = yield repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['onTaskStatusChanged']);
98
+ const informTasks = createInformTasks({ task, setting, executionEndDate });
99
+ debug('informTaskIfNeeded: creating inform tasks...', JSON.stringify(informTasks));
100
+ if (informTasks.length > 0) {
101
+ yield repos.task.saveMany(informTasks, { emitImmediately: true });
102
+ }
103
+ }
104
+ });
105
+ }
@@ -0,0 +1,17 @@
1
+ import type { INextFunction } from '../../eventEmitter/task';
2
+ import * as factory from '../../factory';
3
+ import type { SettingRepo } from '../../repo/setting';
4
+ import type { IExecutableTask, TaskRepo } from '../../repo/task';
5
+ /**
6
+ * タスク実行失敗時処理
7
+ */
8
+ declare function onOperationFailed(params: {
9
+ task: IExecutableTask<factory.taskName>;
10
+ now: Date;
11
+ error: any;
12
+ next?: INextFunction;
13
+ }): (repos: {
14
+ setting: SettingRepo;
15
+ task: TaskRepo;
16
+ }) => Promise<void>;
17
+ export { onOperationFailed };
@@ -0,0 +1,70 @@
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
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.onOperationFailed = onOperationFailed;
13
+ const factory = require("../../factory");
14
+ const informTaskIfNeeded_1 = require("./onOperationFailed/informTaskIfNeeded");
15
+ const USE_INFORM_TASK_RUNNING = process.env.USE_INFORM_TASK_RUNNING === '1';
16
+ /**
17
+ * タスク実行失敗時処理
18
+ */
19
+ function onOperationFailed(params) {
20
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
21
+ let error = params.error;
22
+ const { task, now, next } = params;
23
+ if (typeof error !== 'object') {
24
+ error = { message: String(error) };
25
+ }
26
+ const endDate = new Date();
27
+ // remainingNumberOfTries<=0ならAborted(2025-08-04~)
28
+ const isRetryable = task.remainingNumberOfTries > 0;
29
+ if (isRetryable) {
30
+ // 実験的に実行中タスク連携
31
+ if (USE_INFORM_TASK_RUNNING) {
32
+ yield (0, informTaskIfNeeded_1.informTaskIfNeeded)({ task, executionEndDate: endDate })(repos);
33
+ }
34
+ const result = {
35
+ executedAt: now,
36
+ endDate,
37
+ error: Object.assign(Object.assign({}, error), { code: error.code, message: error.message, name: error.name, stack: error.stack })
38
+ };
39
+ // 失敗してもここではステータスを戻さない(Runningのまま待機)
40
+ yield repos.task.setExecutionResultAndStatus({
41
+ id: task.id,
42
+ remainingNumberOfTries: task.remainingNumberOfTries,
43
+ name: task.name
44
+ }, {
45
+ status: task.status,
46
+ executionResult: result
47
+ }, (typeof next === 'function') ? next : undefined);
48
+ }
49
+ else {
50
+ // 分析連携(2025-08-05~)
51
+ // 設定されたnameの場合連携する
52
+ // もしここで連携タスク作成に失敗したとしても、再度Readyタスクとなりリトライされて、処理は冪等となる想定
53
+ // 最終的に、連携タスクが作成され、実行中タスクがAbortedとなればよい
54
+ yield (0, informTaskIfNeeded_1.informTaskIfNeeded)({ task, executionEndDate: endDate })(repos);
55
+ const result = {
56
+ executedAt: now,
57
+ endDate,
58
+ error: Object.assign(Object.assign({}, error), { code: error.code, message: error.message, name: error.name, stack: error.stack })
59
+ };
60
+ yield repos.task.setExecutionResultAndStatus({
61
+ id: task.id,
62
+ remainingNumberOfTries: task.remainingNumberOfTries,
63
+ name: task.name
64
+ }, {
65
+ status: factory.taskStatus.Aborted,
66
+ executionResult: result
67
+ }, (typeof next === 'function') ? next : undefined);
68
+ }
69
+ });
70
+ }
@@ -0,0 +1,26 @@
1
+ import type { SendGridCredentials } from '../credentials/sendGrid';
2
+ import type { IExecuteSettings as IMinimumExecuteSettings, INextFunction } from '../eventEmitter/task';
3
+ import * as factory from '../factory';
4
+ import type { IExecutableTask, IExecutableTaskKeys } from '../repo/task';
5
+ import type { Settings } from '../settings';
6
+ import type { AggregationSettings } from '../settings/aggregation';
7
+ interface ICredentialSettings {
8
+ sendGrid: SendGridCredentials;
9
+ }
10
+ interface IExecuteSettings extends IMinimumExecuteSettings {
11
+ credentials: ICredentialSettings;
12
+ settings: Settings;
13
+ aggregationSettings?: AggregationSettings;
14
+ }
15
+ interface IExecuteOptions {
16
+ executeById: boolean;
17
+ executeByName: boolean;
18
+ }
19
+ type IOperationExecute<T> = (settings: IExecuteSettings, options: IExecuteOptions) => Promise<T>;
20
+ type ICallResult = void | Pick<factory.task.IExecutionResult, 'error'>;
21
+ type ICallableTaskOperation = (task: IExecutableTask<factory.taskName>) => IOperationExecute<ICallResult>;
22
+ /**
23
+ * タスクを実行する
24
+ */
25
+ declare function executeTask(task: IExecutableTask<factory.taskName>, next?: INextFunction): IOperationExecute<void>;
26
+ export { ICallableTaskOperation, ICallResult, IExecutableTaskKeys, IOperationExecute, executeTask };
@@ -0,0 +1,97 @@
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
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.executeTask = executeTask;
13
+ const createDebug = require("debug");
14
+ const moment = require("moment");
15
+ const factory = require("../factory");
16
+ const onOperationFailed_1 = require("./taskHandler/onOperationFailed");
17
+ const debug = createDebug('chevre-domain:service:taskHandler');
18
+ /**
19
+ * タスクを実行する
20
+ */
21
+ // tslint:disable-next-line:max-func-body-length
22
+ function executeTask(task, next) {
23
+ const now = new Date();
24
+ debug('executing an executableTask...', task, now);
25
+ return (settings, options) => __awaiter(this, void 0, void 0, function* () {
26
+ const settingRepo = new (yield Promise.resolve().then(() => require('../repo/setting'))).SettingRepo(settings.connection);
27
+ const taskRepo = new (yield Promise.resolve().then(() => require('../repo/task'))).TaskRepo(settings.connection);
28
+ try {
29
+ // 期限検証(2024-04-23~)
30
+ if (task.expires instanceof Date) {
31
+ const taskExpired = moment(now)
32
+ .isAfter(task.expires);
33
+ if (taskExpired) {
34
+ throw new factory.errors.Internal(`task expired [expires:${task.expires}]`);
35
+ }
36
+ }
37
+ // remainingNumberOfTries<0ならcallを実行しない(2025-08-04~)
38
+ // リトライを繰り返した後、不明の原因でRunningのまま残ってしまったタスクがリトライされたケース
39
+ const { remainingNumberOfTries } = task;
40
+ const isCallable = remainingNumberOfTries >= 0;
41
+ if (!isCallable) {
42
+ throw new factory.errors.Internal(`task remainingNumberOfTries < 0 [remainingNumberOfTries:${remainingNumberOfTries}]`);
43
+ }
44
+ // タスク名の関数が定義されていなければ、TypeErrorとなる
45
+ let callResult;
46
+ const { call } = yield Promise.resolve(`${`./task/${task.name}`}`).then(s => require(s));
47
+ switch (task.name) {
48
+ case factory.taskName.AcceptCOAOffer:
49
+ case factory.taskName.AggregateOnSystem:
50
+ case factory.taskName.AuthorizePayment:
51
+ case factory.taskName.CancelPendingReservation:
52
+ case factory.taskName.CheckMovieTicket:
53
+ case factory.taskName.DeletePerson:
54
+ case factory.taskName.HandleNotification:
55
+ case factory.taskName.ImportEventCapacitiesFromCOA:
56
+ case factory.taskName.ImportEventsFromCOA:
57
+ case factory.taskName.ImportOffersFromCOA:
58
+ case factory.taskName.InvalidatePaymentUrl:
59
+ case factory.taskName.OnAuthorizationCreated:
60
+ case factory.taskName.Pay:
61
+ case factory.taskName.PublishPaymentUrl:
62
+ case factory.taskName.Refund:
63
+ case factory.taskName.VoidPayTransaction:
64
+ case factory.taskName.VoidReserveTransaction:
65
+ case factory.taskName.ConfirmPayTransaction:
66
+ case factory.taskName.ConfirmReserveTransaction:
67
+ case factory.taskName.ReturnPayTransaction:
68
+ case factory.taskName.ReturnReserveTransaction:
69
+ case factory.taskName.SendEmailMessage:
70
+ case factory.taskName.TriggerWebhook:
71
+ callResult = yield call(task)(settings, options);
72
+ break;
73
+ default:
74
+ yield call(task.data)(settings);
75
+ }
76
+ const result = {
77
+ executedAt: now,
78
+ endDate: new Date(),
79
+ // enable overwriting task.executionResults.error on Executed(2024-05-29~)
80
+ error: ((callResult === null || callResult === void 0 ? void 0 : callResult.error) instanceof Error)
81
+ ? Object.assign(Object.assign({}, callResult.error), { message: callResult.error.message }) : ''
82
+ };
83
+ yield taskRepo.setExecutionResultAndStatus({
84
+ id: task.id,
85
+ remainingNumberOfTries,
86
+ name: task.name
87
+ }, {
88
+ status: factory.taskStatus.Executed,
89
+ executionResult: result
90
+ }, (typeof next === 'function') ? next : undefined);
91
+ }
92
+ catch (error) {
93
+ debug('service.task.execute throwed an error. task:', task.name, task.id, 'error:', error === null || error === void 0 ? void 0 : error.name, error === null || error === void 0 ? void 0 : error.message);
94
+ yield (0, onOperationFailed_1.onOperationFailed)(Object.assign({ task, now, error }, (typeof next === 'function') ? { next } : undefined))({ setting: settingRepo, task: taskRepo });
95
+ }
96
+ });
97
+ }
@@ -1,11 +1,11 @@
1
1
  import type { EventRepo } from '../../repo/event';
2
2
  import type { StockHolderRepo } from '../../repo/stockHolder';
3
- export declare function validateEvent(params: {
3
+ export declare function validateEvent(__: {
4
4
  id: string;
5
5
  project: {
6
6
  id: string;
7
7
  };
8
- }): (repos: {
8
+ }): (__2: {
9
9
  event: EventRepo;
10
10
  stockHolder: StockHolderRepo;
11
11
  }) => Promise<void>;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // import * as createDebug from 'debug';
2
3
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
4
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
5
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -10,15 +11,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
11
  };
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.validateEvent = validateEvent;
13
- const createDebug = require("debug");
14
- const debug = createDebug('chevre-domain:service:validation');
15
- function validateEvent(params) {
16
- return (repos) => __awaiter(this, void 0, void 0, function* () {
17
- const event = yield repos.event.projectEventFieldsById({ id: params.id }, ['startDate']);
18
- debug('validateEvent: conflicted?', params.project.id, event.id, event.startDate);
19
- yield repos.stockHolder.checkIfConflicted({
20
- eventId: event.id,
21
- startDate: event.startDate
22
- });
14
+ // import * as factory from '../../factory';
15
+ // const debug = createDebug('chevre-domain:service:validation');
16
+ function validateEvent(__) {
17
+ return (__2) => __awaiter(this, void 0, void 0, function* () {
18
+ // const event: Pick<factory.event.screeningEvent.IEvent, 'id' | 'startDate'> =
19
+ // await repos.event.projectEventFieldsById<factory.eventType.ScreeningEvent>(
20
+ // { id: params.id },
21
+ // ['startDate']
22
+ // );
23
+ // discontinue redis(2025-08-17~)
24
+ // debug('validateEvent: conflicted?', params.project.id, event.id, event.startDate);
25
+ // await repos.stockHolder.checkIfConflicted({
26
+ // eventId: event.id,
27
+ // startDate: event.startDate
28
+ // });
23
29
  });
24
30
  }
@@ -11,7 +11,6 @@ import type * as AccountService from './service/account';
11
11
  import type * as AccountTransactionService from './service/accountTransaction';
12
12
  import type * as AggregationService from './service/aggregation';
13
13
  import type * as AssetTransactionService from './service/assetTransaction';
14
- import type * as CodeService from './service/code';
15
14
  import type * as DeliveryService from './service/delivery';
16
15
  import type * as EventService from './service/event';
17
16
  import type * as IAMService from './service/iam';
@@ -37,9 +36,6 @@ export declare namespace aggregation {
37
36
  export declare namespace assetTransaction {
38
37
  function createService(): Promise<typeof AssetTransactionService>;
39
38
  }
40
- export declare namespace code {
41
- function createService(): Promise<typeof CodeService>;
42
- }
43
39
  export declare namespace delivery {
44
40
  function createService(): Promise<typeof DeliveryService>;
45
41
  }
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.factory = exports.transaction = exports.task = exports.reserve = exports.report = exports.project = exports.permit = exports.payment = exports.order = exports.offer = exports.notification = exports.iam = exports.event = exports.delivery = exports.code = exports.assetTransaction = exports.aggregation = exports.accountTransaction = exports.account = void 0;
12
+ exports.factory = exports.transaction = exports.task = exports.reserve = exports.report = exports.project = exports.permit = exports.payment = exports.order = exports.offer = exports.notification = exports.iam = exports.event = exports.delivery = exports.assetTransaction = exports.aggregation = exports.accountTransaction = exports.account = void 0;
13
13
  /**
14
14
  * service module
15
15
  */
@@ -72,19 +72,15 @@ var assetTransaction;
72
72
  }
73
73
  assetTransaction.createService = createService;
74
74
  })(assetTransaction || (exports.assetTransaction = assetTransaction = {}));
75
- var code;
76
- (function (code) {
77
- let service;
78
- function createService() {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- if (service === undefined) {
81
- service = yield Promise.resolve().then(() => require('./service/code'));
82
- }
83
- return service;
84
- });
85
- }
86
- code.createService = createService;
87
- })(code || (exports.code = code = {}));
75
+ // export namespace code {
76
+ // let service: typeof CodeService | undefined;
77
+ // export async function createService() {
78
+ // if (service === undefined) {
79
+ // service = await import('./service/code');
80
+ // }
81
+ // return service;
82
+ // }
83
+ // }
88
84
  var delivery;
89
85
  (function (delivery) {
90
86
  let service;
@@ -1,11 +1,14 @@
1
1
  import * as factory from '../factory';
2
- import type { ICallableTaskOperation, ICallResult, IOperationExecute } from '../service/task';
2
+ import type { ICallableTaskOperation, ICallResult, IOperationExecute } from '../service/taskHandler';
3
3
  interface IOnOrderStatusChanged {
4
4
  informOrder2hub?: factory.project.IInformParams[];
5
5
  }
6
6
  interface IOnReservationStatusChanged {
7
7
  informReservation2hub?: factory.project.IInformParams[];
8
8
  }
9
+ interface IOnTaskStatusChanged {
10
+ informTask2hub?: factory.project.IInformParams[];
11
+ }
9
12
  interface ICallableTask {
10
13
  aggregateOnSystem?: ICallableTaskOperation;
11
14
  handleNotification?: ICallableTaskOperation;
@@ -17,6 +20,7 @@ interface IOptions {
17
20
  callableTask?: ICallableTask;
18
21
  onOrderStatusChanged: IOnOrderStatusChanged;
19
22
  onReservationStatusChanged: IOnReservationStatusChanged;
23
+ onTaskStatusChanged: IOnTaskStatusChanged;
20
24
  }
21
25
  /**
22
26
  * aggregation domain settings
@@ -25,6 +29,7 @@ declare class AggregationSettings {
25
29
  readonly callableTask?: ICallableTask;
26
30
  readonly onOrderStatusChanged: IOnOrderStatusChanged;
27
31
  readonly onReservationStatusChanged: IOnReservationStatusChanged;
32
+ readonly onTaskStatusChanged: IOnTaskStatusChanged;
28
33
  constructor(options: IOptions);
29
34
  }
30
35
  export { ICallableTaskOperation, ICallResult, IOperationExecute, AggregationSettings };
@@ -6,9 +6,10 @@ exports.AggregationSettings = void 0;
6
6
  */
7
7
  class AggregationSettings {
8
8
  constructor(options) {
9
- const { callableTask, onOrderStatusChanged, onReservationStatusChanged } = options;
9
+ const { callableTask, onOrderStatusChanged, onReservationStatusChanged, onTaskStatusChanged } = options;
10
10
  this.onOrderStatusChanged = onOrderStatusChanged;
11
11
  this.onReservationStatusChanged = onReservationStatusChanged;
12
+ this.onTaskStatusChanged = onTaskStatusChanged;
12
13
  if (callableTask !== undefined) {
13
14
  this.callableTask = callableTask;
14
15
  }
package/package.json CHANGED
@@ -11,10 +11,10 @@
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-cognito-identity-provider": "3.600.0",
13
13
  "@aws-sdk/credential-providers": "3.600.0",
14
- "@chevre/factory": "4.395.0-alpha.3",
15
- "@cinerino/sdk": "11.0.0-alpha.4",
14
+ "@chevre/factory": "4.396.0",
15
+ "@cinerino/sdk": "12.0.0-alpha.0",
16
16
  "@motionpicture/coa-service": "9.6.0",
17
- "@motionpicture/gmo-service": "5.3.0",
17
+ "@motionpicture/gmo-service": "5.4.0-alpha.0",
18
18
  "@sendgrid/client": "8.1.4",
19
19
  "@surfrock/sdk": "1.4.0-alpha.1",
20
20
  "cdigit": "2.6.7",
@@ -49,10 +49,12 @@
49
49
  "@types/sinon-mongoose": "^1.3.11",
50
50
  "@types/uniqid": "^4.1.3",
51
51
  "@types/uuid": "^3.4.10",
52
+ "auth0": "4.27.0",
52
53
  "coveralls": "^3.1.0",
53
54
  "csvtojson": "^2.0.10",
54
55
  "eslint": "9.16.0",
55
56
  "googleapis": "^85.0.0",
57
+ "jose": "6.0.12",
56
58
  "json2csv": "4.5.4",
57
59
  "mocha": "10.6.0",
58
60
  "mongoose": "8.0.4",
@@ -113,5 +115,5 @@
113
115
  "postversion": "git push origin --tags",
114
116
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
115
117
  },
116
- "version": "22.11.0-alpha.8"
118
+ "version": "22.11.0"
117
119
  }
@@ -1,38 +0,0 @@
1
- // tslint:disable:no-console
2
- import * as mongoose from 'mongoose';
3
-
4
- import { chevre } from '../../../../lib/index';
5
-
6
- const ADMIN_AUTH_ENDPOINT = process.env.ADMIN_AUTH_ENDPOINT;
7
-
8
- async function main() {
9
- if (typeof ADMIN_AUTH_ENDPOINT !== 'string') {
10
- throw new Error('ADMIN_AUTH_ENDPOINT undfined');
11
- }
12
-
13
- await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
14
-
15
- const adminIdentityService = await (await (await chevre.loadAdminAuth()).loadChevreAuth({
16
- endpoint: ADMIN_AUTH_ENDPOINT
17
- })).createIdentityInstance();
18
-
19
- const identities = await adminIdentityService.projectIdentityFields(
20
- {
21
- about: { id: { $eq: '36jneiog293vb2c7u9e5p4rn7r' } }
22
- // identifier: { $eq: IDENTIFIER }
23
- }
24
- );
25
- console.log('docs:', identities);
26
- console.log(identities.length, 'docs found');
27
-
28
- const { id } = await adminIdentityService.createIdentity({
29
- clientId: 'xxx',
30
- clientSecret: 'xxx',
31
- iss: ['xxx']
32
- });
33
- console.log('saved.', id);
34
- }
35
-
36
- main()
37
- .then()
38
- .catch(console.error);
@@ -1,41 +0,0 @@
1
- // tslint:disable:no-console
2
- import * as moment from 'moment';
3
- import * as mongoose from 'mongoose';
4
-
5
- import { chevre } from '../../../lib/index';
6
-
7
- // const project = { id: String(process.env.PROJECT_ID) };
8
-
9
- async function main() {
10
- await mongoose.connect(<string>process.env.MONGOLAB_URI);
11
-
12
- const taskRepo = await chevre.repository.Task.createInstance(mongoose.connection);
13
- const task = await taskRepo.executeOneIfExists({
14
- name: {
15
- $nin: [
16
- chevre.factory.taskName.DeleteTransaction,
17
- chevre.factory.taskName.ImportEventCapacitiesFromCOA,
18
- chevre.factory.taskName.ImportEventsFromCOA,
19
- chevre.factory.taskName.AcceptCOAOffer,
20
- chevre.factory.taskName.CheckMovieTicket,
21
- chevre.factory.taskName.AuthorizePayment,
22
- chevre.factory.taskName.PublishPaymentUrl
23
- ]
24
- },
25
- executor: { name: 'sample' },
26
- runsAt: {
27
- $lt: moment()
28
- // tslint:disable-next-line:no-magic-numbers
29
- .add(-2, 'years')
30
- // .add(-60, 'seconds')
31
- .toDate()
32
- }
33
- });
34
-
35
- // tslint:disable-next-line:no-null-keyword
36
- console.dir(task, { depth: null });
37
- }
38
-
39
- main()
40
- .then()
41
- .catch(console.error);