@chevre/domain 22.0.0-alpha.8 → 22.0.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 (137) hide show
  1. package/example/src/chevre/aggregateAllEvents2.ts +13 -6
  2. package/example/src/chevre/aggregation/aggregateOffersOnEvent.ts +56 -52
  3. package/example/src/chevre/changeOrderStatus.ts +29 -0
  4. package/example/src/chevre/projectEventFieldsById.ts +35 -0
  5. package/example/src/chevre/projectOrderFieldsById.ts +41 -0
  6. package/example/src/chevre/searchEvents.ts +8 -7
  7. package/example/src/chevre/searchOrders.ts +14 -4
  8. package/example/src/chevre/sendGrid/filterEmailActivity.ts +33 -0
  9. package/lib/chevre/credentials/customSearch.d.ts +13 -0
  10. package/lib/chevre/credentials/customSearch.js +14 -0
  11. package/lib/chevre/credentials/lineNotify.d.ts +17 -0
  12. package/lib/chevre/credentials/lineNotify.js +16 -0
  13. package/lib/chevre/credentials/sendGrid.d.ts +11 -0
  14. package/lib/chevre/credentials/sendGrid.js +13 -0
  15. package/lib/chevre/credentials.d.ts +15 -18
  16. package/lib/chevre/credentials.js +42 -72
  17. package/lib/chevre/emailMessageBuilder.d.ts +3 -5
  18. package/lib/chevre/factory/event.d.ts +3 -1
  19. package/lib/chevre/index.d.ts +1 -0
  20. package/lib/chevre/repo/aggregateReservation.js +14 -4
  21. package/lib/chevre/repo/event.d.ts +13 -6
  22. package/lib/chevre/repo/event.js +58 -68
  23. package/lib/chevre/repo/order.d.ts +16 -7
  24. package/lib/chevre/repo/order.js +93 -56
  25. package/lib/chevre/repo/rateLimit/offer.js +0 -8
  26. package/lib/chevre/repo/stockHolder.js +0 -7
  27. package/lib/chevre/service/aggregation/event/aggregateOffers.d.ts +0 -2
  28. package/lib/chevre/service/aggregation/event/aggregateOffers.js +6 -4
  29. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.d.ts +12 -1
  30. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +5 -7
  31. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +2 -2
  32. package/lib/chevre/service/aggregation/event/findEventOffers.d.ts +7 -3
  33. package/lib/chevre/service/assetTransaction/pay.js +1 -1
  34. package/lib/chevre/service/assetTransaction/reserve/confirm.js +2 -3
  35. package/lib/chevre/service/assetTransaction/reserve/exportTasksById.d.ts +2 -1
  36. package/lib/chevre/service/assetTransaction/reserve/exportTasksById.js +4 -4
  37. package/lib/chevre/service/assetTransaction/reserve/start/factory/createStartParams.js +4 -0
  38. package/lib/chevre/service/assetTransaction/reserve/start.d.ts +2 -2
  39. package/lib/chevre/service/assetTransaction/reserve/start.js +14 -15
  40. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.d.ts +1 -1
  41. package/lib/chevre/service/assetTransaction.d.ts +2 -1
  42. package/lib/chevre/service/assetTransaction.js +2 -2
  43. package/lib/chevre/service/notification.d.ts +14 -6
  44. package/lib/chevre/service/notification.js +24 -24
  45. package/lib/chevre/service/offer/event/authorize/factory.d.ts +1 -1
  46. package/lib/chevre/service/offer/event/authorize/factory.js +2 -1
  47. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +1 -1
  48. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.js +4 -1
  49. package/lib/chevre/service/offer/event/authorize.js +9 -11
  50. package/lib/chevre/service/offer/event/searchEventTicketOffers.d.ts +1 -0
  51. package/lib/chevre/service/offer/event/searchEventTicketOffers.js +13 -5
  52. package/lib/chevre/service/offer/event/voidTransaction.d.ts +6 -4
  53. package/lib/chevre/service/offer/event/voidTransaction.js +16 -5
  54. package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +4 -1
  55. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +5 -1
  56. package/lib/chevre/service/offer/event.js +0 -1
  57. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +6 -4
  58. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +5 -3
  59. package/lib/chevre/service/offer/eventServiceByCOA/factory.d.ts +5 -2
  60. package/lib/chevre/service/offer/factory.js +2 -3
  61. package/lib/chevre/service/offer/onEventChanged.js +20 -22
  62. package/lib/chevre/service/offer/product/searchProductOffers.js +1 -6
  63. package/lib/chevre/service/offer.js +3 -2
  64. package/lib/chevre/service/order/createAccountingReportIfNotExist.d.ts +1 -1
  65. package/lib/chevre/service/order/deleteOrder.js +1 -1
  66. package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +29 -18
  67. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +1 -1
  68. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +1 -1
  69. package/lib/chevre/service/order/returnOrder.js +1 -1
  70. package/lib/chevre/service/order/sendOrder.js +2 -2
  71. package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.js +3 -6
  72. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +6 -7
  73. package/lib/chevre/service/payment/movieTicket/factory.d.ts +13 -2
  74. package/lib/chevre/service/payment/movieTicket/factory.js +12 -5
  75. package/lib/chevre/service/payment/movieTicket/payMovieTicket.js +6 -2
  76. package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.d.ts +11 -1
  77. package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.js +12 -5
  78. package/lib/chevre/service/payment/movieTicket/validation.js +5 -5
  79. package/lib/chevre/service/payment.js +2 -2
  80. package/lib/chevre/service/reserve/searchByOrder.js +1 -1
  81. package/lib/chevre/service/task/acceptCOAOffer.js +8 -17
  82. package/lib/chevre/service/task/aggregateOffers.js +11 -13
  83. package/lib/chevre/service/task/aggregateUseActionsOnEvent.js +9 -9
  84. package/lib/chevre/service/task/authorizePayment.js +3 -3
  85. package/lib/chevre/service/task/cancelMoneyTransfer.js +5 -5
  86. package/lib/chevre/service/task/cancelPendingReservation.js +2 -2
  87. package/lib/chevre/service/task/cancelReservation.js +2 -2
  88. package/lib/chevre/service/task/confirmMoneyTransfer.js +6 -6
  89. package/lib/chevre/service/task/confirmPayTransaction.js +10 -14
  90. package/lib/chevre/service/task/confirmRegisterService.js +4 -4
  91. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +6 -6
  92. package/lib/chevre/service/task/confirmReserveTransaction.js +9 -17
  93. package/lib/chevre/service/task/createAccountingReport.js +5 -2
  94. package/lib/chevre/service/task/createEvent.js +5 -5
  95. package/lib/chevre/service/task/deleteTransaction.js +13 -13
  96. package/lib/chevre/service/task/givePointAward.js +7 -7
  97. package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +4 -13
  98. package/lib/chevre/service/task/importEventsFromCOA.js +4 -13
  99. package/lib/chevre/service/task/importOffersFromCOA.js +5 -14
  100. package/lib/chevre/service/task/moneyTransfer.js +5 -5
  101. package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +0 -3
  102. package/lib/chevre/service/task/onOrderPaymentCompleted.js +0 -3
  103. package/lib/chevre/service/task/pay.js +2 -2
  104. package/lib/chevre/service/task/placeOrder.js +2 -2
  105. package/lib/chevre/service/task/refund.js +2 -2
  106. package/lib/chevre/service/task/registerService.js +6 -6
  107. package/lib/chevre/service/task/reserve.js +2 -2
  108. package/lib/chevre/service/task/returnMoneyTransfer.js +9 -9
  109. package/lib/chevre/service/task/returnPayTransaction.js +12 -12
  110. package/lib/chevre/service/task/returnPointAward.js +7 -7
  111. package/lib/chevre/service/task/returnReserveTransaction.js +5 -14
  112. package/lib/chevre/service/task/sendEmailMessage.js +7 -7
  113. package/lib/chevre/service/task/sendOrder.js +2 -2
  114. package/lib/chevre/service/task/triggerWebhook.js +5 -5
  115. package/lib/chevre/service/task/voidMoneyTransferTransaction.js +6 -6
  116. package/lib/chevre/service/task/voidPayTransaction.js +2 -2
  117. package/lib/chevre/service/task/voidPayment.js +2 -2
  118. package/lib/chevre/service/task/voidRegisterServiceTransaction.js +6 -9
  119. package/lib/chevre/service/task/voidReserveTransaction.js +7 -15
  120. package/lib/chevre/service/task.d.ts +26 -9
  121. package/lib/chevre/service/task.js +6 -20
  122. package/lib/chevre/service/transaction/moneyTransfer.js +6 -3
  123. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.js +60 -71
  124. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +1 -1
  125. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.d.ts +1 -1
  126. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.d.ts +1 -1
  127. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.d.ts +1 -1
  128. package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +4 -6
  129. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +0 -28
  130. package/lib/chevre/service/transaction/returnOrder/preStart.js +5 -2
  131. package/lib/chevre/service/transaction/returnOrder.js +9 -6
  132. package/lib/chevre/service/validation/validateOrder.js +4 -2
  133. package/lib/chevre/settings.d.ts +34 -13
  134. package/lib/chevre/settings.js +6 -54
  135. package/package.json +3 -4
  136. package/lib/chevre/credentials/coa.d.ts +0 -17
  137. package/lib/chevre/credentials/coa.js +0 -17
@@ -30,7 +30,7 @@ exports.reserve = ReserveTransactionService;
30
30
  * ひとつの取引のタスクをエクスポートする
31
31
  */
32
32
  function exportTasks(params) {
33
- return (repos) => __awaiter(this, void 0, void 0, function* () {
33
+ return (repos, settings) => __awaiter(this, void 0, void 0, function* () {
34
34
  const transaction = yield repos.assetTransaction.startExportTasks(Object.assign({ typeOf: params.typeOf, status: params.status, tasksExportAction: {
35
35
  agent: { name: params.tasksExportAction.agent.name }
36
36
  } }, (typeof params.id === 'string') ? { id: params.id } : undefined));
@@ -74,7 +74,7 @@ function exportTasks(params) {
74
74
  createdTasks = yield ReserveTransactionService.exportTasksById({
75
75
  id: transaction.id
76
76
  // runsTasksAfterInSeconds: params.runsTasksAfterInSeconds
77
- })(repos);
77
+ })(repos, settings);
78
78
  break;
79
79
  default:
80
80
  }
@@ -1,11 +1,12 @@
1
- import { Settings } from '../settings';
1
+ import { LINENotifyCredentials } from '../credentials/lineNotify';
2
+ import { SendGridCredentials } from '../credentials/sendGrid';
2
3
  import * as factory from '../factory';
3
4
  import type { ActionRepo } from '../repo/action';
4
5
  import type { MessageRepo } from '../repo/message';
5
6
  import type { ProjectRepo } from '../repo/project';
6
- type ILineNotifyOperation<T> = (repos: {
7
- useFetchAPI: boolean;
8
- }, settings: Settings) => Promise<T>;
7
+ type ILineNotifyOperation<T> = (repos: {}, credentials: {
8
+ lineNotify: LINENotifyCredentials;
9
+ }) => Promise<T>;
9
10
  /**
10
11
  * Eメールメッセージを送信する
11
12
  * https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html
@@ -18,6 +19,8 @@ declare function sendEmailMessage(params: factory.task.sendEmailMessage.IActionA
18
19
  action: ActionRepo;
19
20
  message: MessageRepo;
20
21
  project: ProjectRepo;
22
+ }, credentials: {
23
+ sendGrid: SendGridCredentials;
21
24
  }) => Promise<void>;
22
25
  type LineNotifyLogLevel = 'log' | 'error' | 'info';
23
26
  declare function lineNotify({ subject, content, imageThumbnail, imageFullsize, logLevel }: {
@@ -26,13 +29,18 @@ declare function lineNotify({ subject, content, imageThumbnail, imageFullsize, l
26
29
  imageThumbnail?: string;
27
30
  imageFullsize?: string;
28
31
  logLevel: LineNotifyLogLevel;
32
+ }, options: {
33
+ timeout: number;
34
+ useFetchAPI: boolean;
29
35
  }): ILineNotifyOperation<void>;
30
36
  declare function triggerWebhook(params: factory.task.IData<factory.taskName.TriggerWebhook> & {
31
37
  project: {
32
38
  id: string;
33
39
  };
40
+ }, options: {
41
+ timeout: number;
42
+ useFetchAPI: boolean;
34
43
  }): (repos: {
35
44
  action: ActionRepo;
36
- useFetchAPI: boolean;
37
- }, settings: Settings) => Promise<void>;
45
+ }) => Promise<void>;
38
46
  export { lineNotify, sendEmailMessage, triggerWebhook };
@@ -14,7 +14,6 @@ const sgMail = require("@sendgrid/mail");
14
14
  const http_status_1 = require("http-status");
15
15
  // import * as request from 'request';
16
16
  const util = require("util");
17
- const credentials_1 = require("../credentials");
18
17
  const factory = require("../factory");
19
18
  function createSendEmailMessageActionAttributes(params) {
20
19
  var _a;
@@ -27,7 +26,7 @@ function createSendEmailMessageActionAttributes(params) {
27
26
  */
28
27
  function sendEmailMessage(params) {
29
28
  // tslint:disable-next-line:max-func-body-length
30
- return (repos) => __awaiter(this, void 0, void 0, function* () {
29
+ return (repos, credentials) => __awaiter(this, void 0, void 0, function* () {
31
30
  var _a, _b, _c, _d, _e;
32
31
  const project = yield repos.project.findById({
33
32
  id: params.project.id,
@@ -37,7 +36,7 @@ function sendEmailMessage(params) {
37
36
  const action = yield repos.action.start(createSendEmailMessageActionAttributes(params));
38
37
  let result = {};
39
38
  try {
40
- let apiKey = credentials_1.credentials.sendGrid.apiKey;
39
+ let apiKey = credentials.sendGrid.apiKey;
41
40
  // プロジェクト固有のSendGrid設定があれば、そちらを使用
42
41
  if (typeof ((_a = project.settings) === null || _a === void 0 ? void 0 : _a.sendgridApiKey) === 'string' && project.settings.sendgridApiKey.length > 0) {
43
42
  apiKey = project.settings.sendgridApiKey;
@@ -124,23 +123,23 @@ function sendEmailMessage(params) {
124
123
  }
125
124
  exports.sendEmailMessage = sendEmailMessage;
126
125
  const MAX_LINE_NOTIFY_SUBJECT_LENGTH = 100;
127
- function lineNotify({ subject, content, imageThumbnail, imageFullsize, logLevel }) {
128
- return (repos, settings) => __awaiter(this, void 0, void 0, function* () {
129
- var _a;
130
- const LINE_NOTIFY_URL = credentials_1.credentials.lineNotify.url;
126
+ function lineNotify({ subject, content, imageThumbnail, imageFullsize, logLevel }, options) {
127
+ return (__, credentials) => __awaiter(this, void 0, void 0, function* () {
128
+ const { timeout, useFetchAPI } = options;
129
+ const LINE_NOTIFY_URL = credentials.lineNotify.url;
131
130
  if (typeof LINE_NOTIFY_URL !== 'string') {
132
131
  throw new factory.errors.Internal('Environment variable LINE_NOTIFY_URL not set');
133
132
  }
134
133
  let accessToken;
135
134
  switch (logLevel) {
136
135
  case 'error':
137
- accessToken = credentials_1.credentials.lineNotify.accessTokenAlert;
136
+ accessToken = credentials.lineNotify.accessTokenAlert;
138
137
  break;
139
138
  case 'info':
140
- accessToken = credentials_1.credentials.lineNotify.accessTokenInfo;
139
+ accessToken = credentials.lineNotify.accessTokenInfo;
141
140
  break;
142
141
  default:
143
- accessToken = credentials_1.credentials.lineNotify.accessToken;
142
+ accessToken = credentials.lineNotify.accessToken;
144
143
  }
145
144
  if (typeof accessToken !== 'string') {
146
145
  throw new factory.errors.Internal('credentials.lineNotify.accessToken not set');
@@ -151,7 +150,7 @@ function lineNotify({ subject, content, imageThumbnail, imageFullsize, logLevel
151
150
  const message = util.format('\n%s\n%s\n%s\n%s\n%s\n\n%s', `[${logLevel}] ${shortSubject}`, `now:${(new Date()).toISOString()}`, `pid:${process.pid}`, `GAE_APPLICATION:${process.env.GAE_APPLICATION}`,
152
151
  // `GAE_INSTANCE:${process.env.GAE_INSTANCE}`,
153
152
  `GAE_SERVICE:${process.env.GAE_SERVICE}`, content);
154
- if (repos.useFetchAPI) {
153
+ if (useFetchAPI) {
155
154
  try {
156
155
  const form = new FormData();
157
156
  form.set('message', message);
@@ -163,8 +162,8 @@ function lineNotify({ subject, content, imageThumbnail, imageFullsize, logLevel
163
162
  }
164
163
  const res = yield fetch(LINE_NOTIFY_URL, Object.assign({ method: 'POST', headers: {
165
164
  Authorization: `Bearer ${accessToken}`
166
- }, body: form }, (typeof ((_a = settings.webhook) === null || _a === void 0 ? void 0 : _a.timeout) === 'number')
167
- ? { signal: AbortSignal.timeout(settings.webhook.timeout) }
165
+ }, body: form }, (typeof timeout === 'number')
166
+ ? { signal: AbortSignal.timeout(timeout) }
168
167
  : undefined));
169
168
  let body;
170
169
  try {
@@ -193,8 +192,8 @@ exports.lineNotify = lineNotify;
193
192
  const USERNAME_ARGUMENT_REQUIRED_MESSAGE = 'Missing required key \'Username\' in params';
194
193
  const TRIGGER_WEBHOOK_MAX_RETRY_COUNT = 2;
195
194
  const TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = 1000;
196
- function triggerWebhook(params) {
197
- return (repos, settings) => __awaiter(this, void 0, void 0, function* () {
195
+ function triggerWebhook(params, options) {
196
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
198
197
  // retryableにする(2023-05-12~)
199
198
  let retry = true;
200
199
  let numberOfTry = 0;
@@ -208,7 +207,7 @@ function triggerWebhook(params) {
208
207
  if (numberOfTry > 1) {
209
208
  yield sleep(TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS * (numberOfTry - 1));
210
209
  }
211
- yield processInformAction(params)(repos, settings);
210
+ yield processInformAction(params, options)(repos);
212
211
  break;
213
212
  }
214
213
  catch (error) {
@@ -236,22 +235,23 @@ function createInformActionAttributes(params) {
236
235
  const { object, purpose, recipient, project } = params;
237
236
  return Object.assign({ agent: { id: project.id, typeOf: factory.organizationType.Project }, object, project: { id: project.id, typeOf: factory.organizationType.Project }, recipient, typeOf: factory.actionType.InformAction }, (typeof (purpose === null || purpose === void 0 ? void 0 : purpose.typeOf) === 'string') ? { purpose } : undefined);
238
237
  }
239
- function processInformAction(params) {
240
- return (repos, settings) => __awaiter(this, void 0, void 0, function* () {
241
- var _a, _b, _c;
238
+ function processInformAction(params, options) {
239
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
240
+ var _a, _b;
241
+ const { timeout, useFetchAPI } = options;
242
242
  const action = yield repos.action.start(createInformActionAttributes(params));
243
243
  let result = {};
244
244
  try {
245
245
  if (typeof ((_a = params.recipient) === null || _a === void 0 ? void 0 : _a.url) === 'string') {
246
246
  const url = params.recipient.url;
247
- if (repos.useFetchAPI) {
247
+ if (useFetchAPI) {
248
248
  try {
249
249
  const res = yield fetch(url, Object.assign({ method: 'POST', headers: {
250
250
  'Content-Type': 'application/json'
251
251
  }, body: JSON.stringify({
252
252
  data: params.object
253
- }) }, (typeof ((_b = settings.webhook) === null || _b === void 0 ? void 0 : _b.timeout) === 'number')
254
- ? { signal: AbortSignal.timeout(settings.webhook.timeout) }
253
+ }) }, (typeof timeout === 'number')
254
+ ? { signal: AbortSignal.timeout(timeout) }
255
255
  : undefined));
256
256
  let body;
257
257
  try {
@@ -267,7 +267,7 @@ function processInformAction(params) {
267
267
  case http_status_1.NO_CONTENT:
268
268
  result = {
269
269
  statusCode: res.status,
270
- useFetchAPI: repos.useFetchAPI
270
+ useFetchAPI
271
271
  };
272
272
  break;
273
273
  default:
@@ -286,7 +286,7 @@ function processInformAction(params) {
286
286
  catch (error) {
287
287
  let throwsError = true;
288
288
  // プロジェクト固有の特別対応
289
- if (error.statusCode === http_status_1.INTERNAL_SERVER_ERROR && ((_c = error.body) === null || _c === void 0 ? void 0 : _c.message) === USERNAME_ARGUMENT_REQUIRED_MESSAGE) {
289
+ if (error.statusCode === http_status_1.INTERNAL_SERVER_ERROR && ((_b = error.body) === null || _b === void 0 ? void 0 : _b.message) === USERNAME_ARGUMENT_REQUIRED_MESSAGE) {
290
290
  throwsError = false;
291
291
  }
292
292
  if (throwsError) {
@@ -13,7 +13,7 @@ declare function createReserveTransactionStartParams(params: {
13
13
  transactionNumber: string;
14
14
  }): factory.assetTransaction.reserve.IStartParamsWithoutDetail;
15
15
  declare function createAuthorizeSeatReservationActionAttributes(params: {
16
- event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'id' | 'typeOf'>;
16
+ event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'id'>;
17
17
  instrument: {
18
18
  /**
19
19
  * 予約取引番号
@@ -68,7 +68,8 @@ function createAuthorizeSeatReservationActionAttributes(params) {
68
68
  // typeOf: 'WebAPI'
69
69
  // }
70
70
  // },
71
- typeOf: event.typeOf
71
+ // typeOf: event.typeOf
72
+ typeOf: factory.eventType.ScreeningEvent // fix(2024-07-17~)
72
73
  };
73
74
  const object = {
74
75
  typeOf: factory.action.authorize.offer.eventService.ObjectType.SeatReservation,
@@ -19,7 +19,7 @@ import type { TaskRepo } from '../../../../repo/task';
19
19
  import type { TicketRepo } from '../../../../repo/ticket';
20
20
  declare function processStartReserve4chevre(params: {
21
21
  acceptedOffers: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
22
- event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
22
+ event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'id'>;
23
23
  broker?: factory.reservation.IBroker<factory.reservationType>;
24
24
  transactionNumber: string;
25
25
  transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'agent' | 'expires' | 'id' | 'project' | 'seller' | 'typeOf'>;
@@ -24,7 +24,10 @@ function processStartReserve4chevre(params, options) {
24
24
  acceptedOffers: params.acceptedOffers, event: { id: event.id }, transaction,
25
25
  transactionNumber }, (params.broker !== undefined) ? { broker: params.broker } : undefined));
26
26
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos, credentials);
27
- const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true,
27
+ const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject,
28
+ // discontinue preSearchedEvent(2024-07-17~)
29
+ // preSearchedEvent: event,
30
+ preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true,
28
31
  // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
29
32
  stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }), options)(repos);
30
33
  // 予約取引結果から注文オファーを生成する
@@ -89,16 +89,14 @@ function validateCreateRequest(params) {
89
89
  if (typeof ((_b = params.object.reservationFor) === null || _b === void 0 ? void 0 : _b.id) !== 'string' || params.object.reservationFor.id.length === 0) {
90
90
  throw new factory.errors.ArgumentNull('object.reservationFor.id');
91
91
  }
92
- // イベント取得属性最適化(2023-01-23~)
93
- // const event = await repos.event.findById<factory.eventType.ScreeningEvent>({ id: params.object.reservationFor.id });
94
- const event = yield repos.event.findMinimizedIndividualEventById({
95
- id: params.object.reservationFor.id
96
- });
97
- // let offeredThrough = event.offers?.offeredThrough;
98
- // if (offeredThrough === undefined) {
99
- // offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
100
- // }
101
- // const bookingServiceIdentifire = offeredThrough.identifier;
92
+ // discontinue preSearchedEvent(2024-07-17~)
93
+ // const event = await repos.event.findMinimizedIndividualEventById<factory.eventType.ScreeningEvent>({
94
+ // id: params.object.reservationFor.id
95
+ // });
96
+ const event = {
97
+ id: params.object.reservationFor.id,
98
+ typeOf: factory.eventType.ScreeningEvent // ひとまずfix(2024-07-17~)
99
+ };
102
100
  return { transaction, event };
103
101
  });
104
102
  }
@@ -136,7 +134,7 @@ function validateAcceptedOffers(params) {
136
134
  const searchEventTicketOffersResult = yield (0, searchEventTicketOffers_1.searchEventTicketOffers)({
137
135
  // 受け入れたオファーIDだけ取得する(2023-01-26~)
138
136
  ids: offerIds,
139
- event: { id: params.event.id },
137
+ event: { id: params.event.id, typeOf: params.event.typeOf },
140
138
  store: params.store,
141
139
  priceSpecification: {},
142
140
  includedInDataCatalog: { id: '' },
@@ -30,6 +30,7 @@ declare function searchEventTicketOffers(params: {
30
30
  */
31
31
  event: {
32
32
  id: string;
33
+ typeOf: factory.eventType.Event | factory.eventType.ScreeningEvent;
33
34
  };
34
35
  /**
35
36
  * どのアプリケーションに対して
@@ -172,7 +172,6 @@ function searchEventTicketOffersByEvent(params) {
172
172
  withSortIndex: params.addSortIndex,
173
173
  useIncludeInDataCatalog: params.useIncludeInDataCatalog
174
174
  })(repos);
175
- // 冗長な検索について最適化(2023-03-03~)
176
175
  const { soundFormatChargeSpecs, videoFormatChargeSpecs, movieTicketTypeChargeSpecs } = yield searchPriceSpecs4event({
177
176
  project: { id: event.project.id },
178
177
  soundFormatTypes,
@@ -312,7 +311,13 @@ function checkAvailability(params) {
312
311
  */
313
312
  function searchEventTicketOffers(params) {
314
313
  return (repos) => __awaiter(this, void 0, void 0, function* () {
315
- const event = yield repos.event.findMinimizedIndividualEventById({ id: params.event.id });
314
+ const eventType = params.event.typeOf;
315
+ // optimize projection(2024-07-17~)
316
+ const event = yield repos.event.projectFieldsById({ id: params.event.id }, [
317
+ 'project', 'typeOf', 'startDate',
318
+ 'superEvent.id',
319
+ 'offers.itemOffered.id', 'offers.offeredThrough', 'offers.unacceptedPaymentMethod', 'offers.eligibleQuantity'
320
+ ]);
316
321
  let offers;
317
322
  let unitPriceOffers;
318
323
  const eventOffers = event.offers;
@@ -352,7 +357,8 @@ exports.searchEventTicketOffers = searchEventTicketOffers;
352
357
  function searchOfferAppliesToMovieTicket(params) {
353
358
  return (repos) => __awaiter(this, void 0, void 0, function* () {
354
359
  var _a, _b, _c;
355
- const event = yield repos.event.findMinimizedIndividualEventById({ id: params.event.id });
360
+ // optimize(2024-07-18~)
361
+ const event = yield repos.event.projectFieldsById({ id: params.event.id }, ['project', 'startDate', 'typeOf', 'superEvent.id', 'offers.itemOffered.id', 'offers.unacceptedPaymentMethod']);
356
362
  // let soundFormatTypes: string[] = [];
357
363
  let videoFormatTypes = [];
358
364
  if (event.typeOf === factory.eventType.ScreeningEvent) {
@@ -430,7 +436,8 @@ function searchOfferCatalogItems(params) {
430
436
  throw new factory.errors.Argument('page', 'must be number');
431
437
  }
432
438
  let offerCatalogItems = [];
433
- const event = yield repos.event.findMinimizedIndividualEventById({ id: params.event.id });
439
+ // optimize(2024-07-18~)
440
+ const event = yield repos.event.projectFieldsById({ id: params.event.id }, ['offers.itemOffered.id']);
434
441
  // 興行設定があれば興行のカタログを参照する
435
442
  const eventOffers = event.offers;
436
443
  let catalogId;
@@ -499,7 +506,8 @@ function searchOfferCatalogItemAvailability(params) {
499
506
  throw new factory.errors.Argument('page', 'must be number');
500
507
  }
501
508
  let availabilities = [];
502
- const event = yield repos.event.findMinimizedIndividualEventById({ id: params.event.id });
509
+ // optimize(2024-07-18~)
510
+ const event = yield repos.event.projectFieldsById({ id: params.event.id }, ['project', 'offers.itemOffered.id']);
503
511
  // 興行設定があれば興行のカタログを参照する
504
512
  const eventOffers = event.offers;
505
513
  let catalogId;
@@ -9,7 +9,6 @@ import type { ReservationRepo } from '../../../repo/reservation';
9
9
  import type { StockHolderRepo } from '../../../repo/stockHolder';
10
10
  import type { TaskRepo } from '../../../repo/task';
11
11
  import type { TransactionRepo } from '../../../repo/transaction';
12
- export import WebAPIIdentifier = factory.service.webAPI.Identifier;
13
12
  interface IVoidTransactionRepos {
14
13
  action: ActionRepo;
15
14
  assetTransaction: AssetTransactionRepo;
@@ -19,13 +18,16 @@ interface IVoidTransactionRepos {
19
18
  reservation: ReservationRepo;
20
19
  task: TaskRepo;
21
20
  transaction: TransactionRepo;
22
- reserveService: COA.service.Reserve;
21
+ /**
22
+ * COAオファー承認取消の場合必須
23
+ */
24
+ reserveService?: COA.service.Reserve;
23
25
  }
24
26
  /**
25
27
  * 興行オファー承認取消(タスクから実行 or apiから実行))
26
28
  * 取引中の承認アクション全てについて処理する or 特定の承認アクションについて処理する
27
29
  */
28
- export declare function voidTransaction(params: factory.task.IData<factory.taskName.VoidReserveTransaction> & {
30
+ declare function voidTransaction(params: factory.task.IData<factory.taskName.VoidReserveTransaction> & {
29
31
  sameAs?: {
30
32
  /**
31
33
  * 実行元タスクID
@@ -33,4 +35,4 @@ export declare function voidTransaction(params: factory.task.IData<factory.taskN
33
35
  id: string;
34
36
  };
35
37
  }): (repos: IVoidTransactionRepos, settings: Settings) => Promise<void>;
36
- export {};
38
+ export { voidTransaction };
@@ -9,13 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.voidTransaction = exports.WebAPIIdentifier = void 0;
12
+ exports.voidTransaction = void 0;
13
13
  const factory = require("../../../factory");
14
14
  const any_1 = require("../any");
15
15
  const processVoidTransaction4chevre_1 = require("./voidTransaction/processVoidTransaction4chevre");
16
16
  const processVoidTransaction4coa_1 = require("./voidTransaction/processVoidTransaction4coa");
17
17
  const voidTransactionByActionId_1 = require("./voidTransactionByActionId");
18
- exports.WebAPIIdentifier = factory.service.webAPI.Identifier;
18
+ var WebAPIIdentifier = factory.service.webAPI.Identifier;
19
19
  /**
20
20
  * 興行オファー承認取消(タスクから実行 or apiから実行))
21
21
  * 取引中の承認アクション全てについて処理する or 特定の承認アクションについて処理する
@@ -75,10 +75,14 @@ function voidTransaction(params) {
75
75
  yield Promise.all(authorizeActions.map((action) => __awaiter(this, void 0, void 0, function* () {
76
76
  yield repos.action.cancelWithVoid({ typeOf: action.typeOf, id: action.id, cancelAction });
77
77
  switch (action.instrument.identifier) {
78
- case exports.WebAPIIdentifier.COA:
78
+ case WebAPIIdentifier.COA:
79
+ const { reserveService } = repos;
80
+ if (reserveService === undefined) {
81
+ throw new factory.errors.Internal('repos.reserveService required');
82
+ }
79
83
  yield (0, processVoidTransaction4coa_1.processVoidTransaction4coa)({
80
84
  action: action
81
- })(repos);
85
+ })({ reserveService });
82
86
  break;
83
87
  default:
84
88
  yield (0, processVoidTransaction4chevre_1.processVoidTransaction4chevre)({
@@ -146,9 +150,16 @@ function cancelAcceptActions(params) {
146
150
  default:
147
151
  // no op
148
152
  }
153
+ const { reserveService } = repos;
149
154
  yield Promise.all(acceptActions.map((action) => __awaiter(this, void 0, void 0, function* () {
150
155
  yield repos.action.cancelWithVoid({ typeOf: action.typeOf, id: action.id, cancelAction });
151
- yield (0, processVoidTransaction4coa_1.processVoidTransactionByAcceptAction4coa)({ action })(repos);
156
+ if (reserveService === undefined) {
157
+ throw new factory.errors.Internal('repos.reserveService required');
158
+ }
159
+ yield (0, processVoidTransaction4coa_1.processVoidTransactionByAcceptAction4coa)({ action })({
160
+ action: repos.action,
161
+ reserveService
162
+ });
152
163
  })));
153
164
  });
154
165
  }
@@ -18,7 +18,10 @@ interface IVoidTransactionByActionIdRepos {
18
18
  reservation: ReservationRepo;
19
19
  task: TaskRepo;
20
20
  transaction: TransactionRepo;
21
- reserveService: COA.service.Reserve;
21
+ /**
22
+ * COAオファー承認取消の場合必須
23
+ */
24
+ reserveService?: COA.service.Reserve;
22
25
  }
23
26
  /**
24
27
  * 興行オファー承認取消(apiから実行)
@@ -53,9 +53,13 @@ function voidTransactionByActionId(params) {
53
53
  }
54
54
  switch (action.instrument.identifier) {
55
55
  case factory.service.webAPI.Identifier.COA:
56
+ const { reserveService } = repos;
57
+ if (reserveService === undefined) {
58
+ throw new factory.errors.Internal('repos.reserveService required');
59
+ }
56
60
  yield (0, processVoidTransaction4coa_1.processVoidTransaction4coa)({
57
61
  action: action
58
- })(repos);
62
+ })({ reserveService });
59
63
  break;
60
64
  default:
61
65
  yield (0, processVoidTransaction4chevre_1.processVoidTransaction4chevre)({
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.searchOfferCatalogItems = exports.searchOfferCatalogItemAvailability = exports.searchOfferAppliesToMovieTicket = exports.searchEventTicketOffers = exports.voidTransaction = exports.importFromCOA = exports.importCategoryCodesFromCOA = exports.authorize = void 0;
4
4
  const authorize_1 = require("./event/authorize");
5
5
  Object.defineProperty(exports, "authorize", { enumerable: true, get: function () { return authorize_1.authorize; } });
6
- // import { cancel } from './event/cancel';
7
6
  const importFromCOA_1 = require("./event/importFromCOA");
8
7
  Object.defineProperty(exports, "importCategoryCodesFromCOA", { enumerable: true, get: function () { return importFromCOA_1.importCategoryCodesFromCOA; } });
9
8
  Object.defineProperty(exports, "importFromCOA", { enumerable: true, get: function () { return importFromCOA_1.importFromCOA; } });
@@ -48,9 +48,11 @@ function authorize(params) {
48
48
  typeOf: factory.assetTransactionType.COAReserveTransaction
49
49
  };
50
50
  try {
51
- // イベント取得属性最適化(2023-01-23~)
52
- screeningEvent =
53
- yield repos.event.findMinimizedIndividualEventById({ id: params.object.event.id });
51
+ screeningEvent = yield repos.event.projectFieldsById({ id: params.object.event.id }, [
52
+ 'coaInfo', 'doorTime', 'endDate', 'location', 'startDate',
53
+ 'superEvent', 'typeOf', 'identifier', 'name'
54
+ ] // optimize(2024-07-18~)
55
+ );
54
56
  const availablePaymentMethodTypes = yield repos.categoryCode.search({
55
57
  project: { id: { $eq: transaction.project.id } },
56
58
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.PaymentMethodType } }
@@ -92,7 +94,7 @@ function authorize(params) {
92
94
  const actionAttributes = (0, factory_1.createAuthorizeSeatReservationActionAttributes)({
93
95
  acceptAction: params.object.acceptAction,
94
96
  acceptedOffers,
95
- event: screeningEvent,
97
+ event: { id: screeningEvent.id, typeOf: screeningEvent.typeOf },
96
98
  transaction,
97
99
  pendingTransaction
98
100
  });
@@ -72,9 +72,11 @@ function changeOffers(params) {
72
72
  return Object.assign(Object.assign({}, offer), { ticketInfo: Object.assign(Object.assign({}, offer.ticketInfo), { spseatAdd1: originalAcceptedOfferBySeatNumber.ticketInfo.spseatAdd1, spseatAdd2: originalAcceptedOfferBySeatNumber.ticketInfo.spseatAdd2, spseatKbn: originalAcceptedOfferBySeatNumber.ticketInfo.spseatKbn }) });
73
73
  });
74
74
  // イベント取得属性最適化(2023-01-23~)
75
- const screeningEvent = yield repos.event.findMinimizedIndividualEventById({
76
- id: params.object.event.id
77
- });
75
+ const screeningEvent = yield repos.event.projectFieldsById({ id: params.object.event.id }, [
76
+ 'coaInfo', 'doorTime', 'endDate', 'location', 'startDate',
77
+ 'superEvent', 'typeOf', 'identifier', 'name'
78
+ ] // optimize(2024-07-18~)
79
+ );
78
80
  const availablePaymentMethodTypes = yield repos.categoryCode.search({
79
81
  project: { id: { $eq: transaction.project.id } },
80
82
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.PaymentMethodType } }
@@ -7,7 +7,10 @@ export declare function createAuthorizeSeatReservationActionAttributes(params: {
7
7
  id: string;
8
8
  };
9
9
  acceptedOffers: factory.action.authorize.offer.eventService.IAcceptedOffer4COA[];
10
- event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'id' | 'typeOf'>;
10
+ event: {
11
+ id: string;
12
+ typeOf: factory.eventType.ScreeningEvent;
13
+ };
11
14
  transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'agent' | 'id' | 'project' | 'seller' | 'typeOf'>;
12
15
  pendingTransaction: factory.action.authorize.offer.eventService.ICOAPendingTransaction;
13
16
  }): factory.action.authorize.offer.eventService.IAttributes<WebAPIIdentifier.COA>;
@@ -25,7 +28,7 @@ type IResultAcceptedOffer = factory.action.authorize.offer.eventService.IResultA
25
28
  export declare function responseBody2acceptedOffers4result(params: {
26
29
  responseBody: factory.action.authorize.offer.eventService.IResponseBody<factory.service.webAPI.Identifier.COA>;
27
30
  acceptedOffer: factory.action.authorize.offer.eventService.IAcceptedOffer4COA[];
28
- event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
31
+ event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'coaInfo' | 'doorTime' | 'endDate' | 'id' | 'location' | 'startDate' | 'superEvent' | 'typeOf' | 'identifier' | 'name'>;
29
32
  seller: Pick<factory.transaction.placeOrder.ISeller, 'typeOf' | 'name'>;
30
33
  bookingTime: Date;
31
34
  totalPrice: number;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createCompoundPriceSpec4event = void 0;
4
4
  const factory = require("../../factory");
5
- const settings_1 = require("../../settings");
6
5
  function categoryCodeChargePriceSpec2component(params) {
7
6
  var _a;
8
7
  return Object.assign({ id: params.id, typeOf: params.typeOf, name: params.name, price: params.price, priceCurrency: params.priceCurrency, valueAddedTaxIncluded: params.valueAddedTaxIncluded, appliesToCategoryCode: params.appliesToCategoryCode }, (typeof ((_a = params.accounting) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { accounting: params.accounting } : undefined);
@@ -77,11 +76,11 @@ function createCompoundPriceSpec4event(params) {
77
76
  };
78
77
  // 必要な属性のみに限定(2023-02-24~)
79
78
  const { acceptedPaymentMethod, name, description, alternateName, color, typeOf, id, availability, category, eligibleMembershipType, eligibleSeatingType, eligibleMonetaryAmount, eligibleSubReservation, priceCurrency, validFrom, validThrough, validRateLimit, additionalProperty, identifier, itemOffered, offerIndex, parentOffer } = params.offer;
80
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name, description, alternateName, color, typeOf, id,
79
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name, description, alternateName, color, typeOf, id,
81
80
  category,
82
81
  eligibleMembershipType, eligibleSeatingType, eligibleMonetaryAmount, eligibleSubReservation,
83
82
  priceCurrency,
84
83
  validFrom, validThrough, validRateLimit, additionalProperty,
85
- identifier, itemOffered, addOn: params.addOn, eligibleQuantity: params.eligibleQuantity, priceSpecification: compoundPriceSpecification }, (typeof params.availability === 'string') ? { availability: params.availability } : { availability }), (typeof params.sortIndex === 'number') ? { sortIndex: params.sortIndex } : undefined), (typeof offerIndex === 'number') ? { offerIndex } : undefined), (typeof (parentOffer === null || parentOffer === void 0 ? void 0 : parentOffer.id) === 'string') ? { parentOffer: { id: parentOffer.id } } : undefined), (Array.isArray(acceptedPaymentMethod)) ? { acceptedPaymentMethod } : undefined), (!settings_1.USE_OPTIMIZE_TICKET_OFFER) ? {} : undefined);
84
+ identifier, itemOffered, addOn: params.addOn, eligibleQuantity: params.eligibleQuantity, priceSpecification: compoundPriceSpecification }, (typeof params.availability === 'string') ? { availability: params.availability } : { availability }), (typeof params.sortIndex === 'number') ? { sortIndex: params.sortIndex } : undefined), (typeof offerIndex === 'number') ? { offerIndex } : undefined), (typeof (parentOffer === null || parentOffer === void 0 ? void 0 : parentOffer.id) === 'string') ? { parentOffer: { id: parentOffer.id } } : undefined), (Array.isArray(acceptedPaymentMethod)) ? { acceptedPaymentMethod } : undefined);
86
85
  }
87
86
  exports.createCompoundPriceSpec4event = createCompoundPriceSpec4event;
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.onEventChanged = exports.createAggregateScreeningEventIfNotExist = void 0;
13
13
  const factory = require("../../factory");
14
- const settings_1 = require("../../settings");
15
14
  /**
16
15
  * イベント変更時処理
17
16
  */
@@ -156,28 +155,27 @@ function createInformTasks(params) {
156
155
  // 最適化(2024-03-22~)
157
156
  events4inform = screeningEvents4inform.map(({ project, organizer, typeOf, name, doorTime, endDate, eventStatus, location, startDate, superEvent, offers, id, additionalProperty }) => {
158
157
  var _a;
159
- return Object.assign({ project, organizer, typeOf, name, doorTime, endDate,
160
- eventStatus, location, startDate, superEvent, id, additionalProperty }, (settings_1.USE_OPTIMIZE_INFORM_EVENT)
161
- ? {
162
- offers: (((_a = offers.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.COA)
163
- ? {
164
- typeOf: offers.typeOf,
165
- itemOffered: offers.itemOffered
166
- }
167
- : {
168
- typeOf: offers.typeOf,
169
- itemOffered: offers.itemOffered,
170
- seller: {
171
- id: offers.seller.id,
172
- typeOf: offers.seller.typeOf,
173
- // makesOfferを追加(2024-03-26~)
174
- makesOffer: (Array.isArray(offers.seller.makesOffer))
175
- ? offers.seller.makesOffer
176
- : []
177
- }
158
+ return {
159
+ project, organizer, typeOf, name, doorTime, endDate,
160
+ eventStatus, location, startDate, superEvent, id, additionalProperty,
161
+ offers: (((_a = offers.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.COA)
162
+ ? {
163
+ typeOf: offers.typeOf,
164
+ itemOffered: offers.itemOffered
165
+ }
166
+ : {
167
+ typeOf: offers.typeOf,
168
+ itemOffered: offers.itemOffered,
169
+ seller: {
170
+ id: offers.seller.id,
171
+ typeOf: offers.seller.typeOf,
172
+ // makesOfferを追加(2024-03-26~)
173
+ makesOffer: (Array.isArray(offers.seller.makesOffer))
174
+ ? offers.seller.makesOffer
175
+ : []
178
176
  }
179
- }
180
- : { offers });
177
+ }
178
+ };
181
179
  });
182
180
  }
183
181
  else {