@chevre/domain 25.0.0-alpha.2 → 25.0.0-alpha.20

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 (94) hide show
  1. package/lib/chevre/emailMessageBuilder.d.ts +10 -4
  2. package/lib/chevre/emailMessageBuilder.js +48 -73
  3. package/lib/chevre/repo/acceptedOffer.d.ts +1 -5
  4. package/lib/chevre/repo/acceptedOffer.js +5 -5
  5. package/lib/chevre/repo/acceptedOfferInReserve.d.ts +1 -5
  6. package/lib/chevre/repo/acceptedOfferInReserve.js +4 -4
  7. package/lib/chevre/repo/emailMessage.d.ts +18 -9
  8. package/lib/chevre/repo/emailMessage.js +26 -36
  9. package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +1 -3
  10. package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +2 -3
  11. package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +9 -1
  12. package/lib/chevre/repo/mongoose/schemas/emailMessages.js +5 -20
  13. package/lib/chevre/repo/mongoose/schemas/order.d.ts +4 -0
  14. package/lib/chevre/repo/mongoose/schemas/order.js +11 -110
  15. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +0 -6
  16. package/lib/chevre/repo/order.d.ts +9 -6
  17. package/lib/chevre/repo/order.js +45 -26
  18. package/lib/chevre/repo/orderInTransaction.d.ts +50 -32
  19. package/lib/chevre/repo/orderInTransaction.js +109 -73
  20. package/lib/chevre/repo/orderNumber.d.ts +4 -0
  21. package/lib/chevre/repo/orderNumber.js +32 -60
  22. package/lib/chevre/repo/passport.d.ts +5 -2
  23. package/lib/chevre/repo/transaction/placeOrder.js +12 -10
  24. package/lib/chevre/repo/transaction.d.ts +6 -2
  25. package/lib/chevre/repo/transaction.js +6 -2
  26. package/lib/chevre/service/assetTransaction/reserve/start.d.ts +0 -2
  27. package/lib/chevre/service/offer/any.d.ts +3 -8
  28. package/lib/chevre/service/offer/any.js +7 -6
  29. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +0 -2
  30. package/lib/chevre/service/offer/event/authorize.d.ts +0 -4
  31. package/lib/chevre/service/offer/event/authorize.js +5 -6
  32. package/lib/chevre/service/offer/event/voidTransaction.js +29 -17
  33. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +16 -12
  34. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +0 -6
  35. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +10 -12
  36. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -1
  37. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +7 -7
  38. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +21 -17
  39. package/lib/chevre/service/order/deleteOrder.js +1 -1
  40. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +4 -1
  41. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -26
  42. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +3 -2
  43. package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
  44. package/lib/chevre/service/order/placeOrder/factory.js +10 -8
  45. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.d.ts +1 -3
  46. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -15
  47. package/lib/chevre/service/order/placeOrder.js +6 -6
  48. package/lib/chevre/service/order.d.ts +1 -2
  49. package/lib/chevre/service/order.js +1 -5
  50. package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.d.ts +2 -4
  51. package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.js +4 -6
  52. package/lib/chevre/service/payment/any/authorize.d.ts +2 -0
  53. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -4
  54. package/lib/chevre/service/payment/any/publishPaymentUrl.js +5 -8
  55. package/lib/chevre/service/reserve/findByCode.js +1 -1
  56. package/lib/chevre/service/reserve/searchByOrder.js +1 -1
  57. package/lib/chevre/service/task/acceptCOAOffer.js +8 -10
  58. package/lib/chevre/service/task/authorizePayment.js +2 -6
  59. package/lib/chevre/service/task/confirmReserveTransaction.js +1 -1
  60. package/lib/chevre/service/task/payment/payByTask.js +1 -1
  61. package/lib/chevre/service/task/publishPaymentUrl.js +6 -9
  62. package/lib/chevre/service/transaction/placeOrder/confirm/factory/result.d.ts +7 -2
  63. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.d.ts +3 -3
  64. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +8 -23
  65. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.d.ts +3 -3
  66. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +1 -6
  67. package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -7
  68. package/lib/chevre/service/transaction/placeOrder/confirm.js +38 -35
  69. package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.d.ts +2 -0
  70. package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.js +1 -0
  71. package/lib/chevre/service/transaction/placeOrder/start/factory.d.ts +19 -4
  72. package/lib/chevre/service/transaction/placeOrder/start/factory.js +23 -12
  73. package/lib/chevre/service/transaction/placeOrder/start.d.ts +7 -4
  74. package/lib/chevre/service/transaction/placeOrder/start.js +23 -2
  75. package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +0 -4
  76. package/lib/chevre/service/transaction/placeOrder/updateAgent.js +20 -22
  77. package/lib/chevre/service/transaction/placeOrder.d.ts +1 -2
  78. package/lib/chevre/service/transaction/placeOrder.js +1 -3
  79. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +2 -37
  80. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.d.ts +2 -2
  81. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +3 -18
  82. package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +0 -1
  83. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +0 -4
  84. package/lib/chevre/service/transaction/returnOrder/preStart.js +1 -1
  85. package/lib/chevre/service/transaction/returnOrder.d.ts +0 -2
  86. package/lib/chevre/service/transaction/returnOrder.js +13 -12
  87. package/lib/chevre/service/validation/validateOrder.js +1 -1
  88. package/lib/chevre/service.d.ts +0 -2
  89. package/lib/chevre/service.js +0 -2
  90. package/package.json +2 -2
  91. package/lib/chevre/factory/order.d.ts +0 -2
  92. package/lib/chevre/factory/order.js +0 -5
  93. package/lib/chevre/service/order/placeOrderWithoutTransaction.d.ts +0 -22
  94. package/lib/chevre/service/order/placeOrderWithoutTransaction.js +0 -51
@@ -4,14 +4,20 @@ type ISendableEmailMessage = factory.action.transfer.send.message.email.IObjectA
4
4
  identifier: string;
5
5
  name: string;
6
6
  };
7
- export type IOrderAsCreateEmailParams = Pick<factory.order.IOrder, 'confirmationNumber' | 'customer' | 'orderDate' | 'orderNumber' | 'orderStatus' | 'orderedItem' | 'paymentMethods' | 'price' | 'priceCurrency' | 'seller' | 'typeOf'>;
7
+ /**
8
+ * 注文取引確定時の指定テンプレートで利用可能な注文変数
9
+ */
10
+ type IOrderAsCreateEmailParams = Pick<factory.order.IOrder, 'orderNumber' | 'confirmationNumber' | 'price'> & {
11
+ customer: Pick<factory.order.ICustomer, 'givenName' | 'familyName' | 'email' | 'typeOf'>;
12
+ seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
13
+ };
8
14
  /**
9
15
  * 注文配送メッセージを作成する
10
16
  */
11
17
  declare function createSendOrderMessage(params: {
12
18
  order: IOrderAsCreateEmailParams;
13
19
  email?: factory.creativeWork.message.email.ICustomization;
14
- emailMessage?: factory.creativeWork.message.email.ICreativeWork;
20
+ emailMessage?: never;
15
21
  index: number;
16
22
  }, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
17
23
  /**
@@ -20,7 +26,7 @@ declare function createSendOrderMessage(params: {
20
26
  declare function createReturnOrderMessage(params: {
21
27
  order: IOrderAsCreateEmailParams;
22
28
  email?: factory.creativeWork.message.email.ICustomization;
23
- emailMessage?: factory.creativeWork.message.email.ICreativeWork;
29
+ emailMessage?: never;
24
30
  index: number;
25
31
  }, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
26
32
  /**
@@ -31,4 +37,4 @@ declare function createRefundMessage(params: {
31
37
  email?: factory.creativeWork.message.email.ICustomization;
32
38
  paymentMethodId: string;
33
39
  }, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
34
- export { createSendOrderMessage, createReturnOrderMessage, createRefundMessage };
40
+ export { createSendOrderMessage, createReturnOrderMessage, createRefundMessage, IOrderAsCreateEmailParams };
@@ -12,7 +12,6 @@ const factory_1 = require("./factory");
12
12
  async function createEmailMessageText(params) {
13
13
  const emailTemplate = params.email?.template;
14
14
  const emailText = params.email?.text;
15
- const emailMessageTextByDB = params.emailMessage?.text;
16
15
  let emailMessageText;
17
16
  if (typeof emailText === 'string') {
18
17
  emailMessageText = emailText;
@@ -28,26 +27,12 @@ async function createEmailMessageText(params) {
28
27
  });
29
28
  });
30
29
  }
31
- else if (typeof emailMessageTextByDB === 'string') {
32
- // デフォルトEメールメッセージを適用する
33
- emailMessageText = await new Promise((resolve, reject) => {
34
- (0, pug_1.render)(emailMessageTextByDB, { order: params.order }, (err, message) => {
35
- if (err instanceof Error) {
36
- reject(new factory_1.factory.errors.Argument('emailMessage.text', err.message));
37
- return;
38
- }
39
- resolve(message);
40
- });
41
- });
42
- }
43
30
  else {
44
31
  emailMessageText = `orderNumber: ${params.order.orderNumber}`;
45
32
  }
46
33
  return emailMessageText;
47
34
  }
48
35
  async function createEmailMessageAbout(params) {
49
- const abouyIdentifierByDB = params.emailMessage?.about.identifier;
50
- const abouyNameByDB = params.emailMessage?.about.name;
51
36
  let about;
52
37
  if (typeof params.email?.about === 'string') {
53
38
  // aboutをStringで指定された場合
@@ -66,23 +51,6 @@ async function createEmailMessageAbout(params) {
66
51
  name: params.email.about.name
67
52
  };
68
53
  }
69
- else if (typeof abouyIdentifierByDB === 'string' && typeof abouyNameByDB === 'string') {
70
- // デフォルトEメールメッセージを適用する
71
- const aboutName = await new Promise((resolve, reject) => {
72
- (0, pug_1.render)(abouyNameByDB, { order: params.order }, (err, message) => {
73
- if (err instanceof Error) {
74
- reject(new factory_1.factory.errors.Argument('emailMessage.about.name', err.message));
75
- return;
76
- }
77
- resolve(message);
78
- });
79
- });
80
- about = {
81
- typeOf: 'Thing',
82
- identifier: abouyIdentifierByDB,
83
- name: aboutName
84
- };
85
- }
86
54
  else {
87
55
  // aboutの指定がない場合
88
56
  about = {
@@ -97,44 +65,59 @@ function createEmailMessageSender(params, setting) {
97
65
  if (typeof setting.defaultSenderEmail !== 'string') {
98
66
  throw new factory_1.factory.errors.NotFound('setting.defaultSenderEmail');
99
67
  }
68
+ const defaultSellerName = (typeof params.order.seller.name === 'string') ? params.order.seller.name : params.order.seller.typeOf;
100
69
  return {
101
70
  typeOf: params.order.seller.typeOf,
102
71
  name: (typeof params.email?.sender?.name === 'string')
103
72
  ? params.email.sender.name
104
- : (typeof params.order.seller.name === 'string')
105
- ? params.order.seller.name
106
- : String(params.order.seller.id),
107
- // email: settings.defaultSenderEmail
73
+ : defaultSellerName,
108
74
  email: setting.defaultSenderEmail
109
75
  };
110
76
  }
77
+ /**
78
+ * pug templateに渡す変数を確実に最小化する
79
+ */
80
+ function minimizeOrderAsCreateEmailParams(order) {
81
+ const { confirmationNumber, orderNumber, price, customer, seller } = order;
82
+ const defaultToRecipientEmail = customer.email;
83
+ if (typeof defaultToRecipientEmail !== 'string' || defaultToRecipientEmail === '') {
84
+ throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
85
+ }
86
+ return {
87
+ customer: {
88
+ email: defaultToRecipientEmail,
89
+ typeOf: customer.typeOf,
90
+ ...((typeof customer.givenName === 'string') && { givenName: customer.givenName }),
91
+ ...((typeof customer.familyName === 'string') && { familyName: customer.familyName })
92
+ },
93
+ seller: { name: seller.name, typeOf: seller.typeOf },
94
+ orderNumber,
95
+ confirmationNumber,
96
+ price
97
+ };
98
+ }
111
99
  /**
112
100
  * 注文配送メッセージを作成する
113
101
  */
114
102
  async function createSendOrderMessage(params, setting) {
103
+ const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
115
104
  const emailMessageText = await createEmailMessageText({
116
- order: params.order,
105
+ order: minimizedOrder,
117
106
  email: params.email,
118
- emailMessage: params.emailMessage
119
107
  });
120
108
  const about = await createEmailMessageAbout({
121
- order: params.order,
122
109
  email: params.email,
123
- emailMessage: params.emailMessage,
124
110
  aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderSent,
125
111
  defaultName: 'Order Delivered'
126
112
  });
127
- const defaultToRecipientEmail = params.order.customer.email;
128
- if (defaultToRecipientEmail === undefined) {
129
- throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
130
- }
131
- const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
113
+ const defaultToRecipientEmail = minimizedOrder.customer.email;
114
+ const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
132
115
  const sender = createEmailMessageSender(params, setting);
133
116
  const toRecipientCustomization = params.email?.toRecipient;
134
117
  const toRecipient = (Array.isArray(toRecipientCustomization))
135
118
  ? toRecipientCustomization.map((customizedRecipient) => {
136
119
  return {
137
- typeOf: params.order.customer.typeOf,
120
+ typeOf: minimizedOrder.customer.typeOf,
138
121
  name: (typeof customizedRecipient.name === 'string')
139
122
  ? customizedRecipient.name
140
123
  : defaultRecipientName,
@@ -144,7 +127,7 @@ async function createSendOrderMessage(params, setting) {
144
127
  };
145
128
  })
146
129
  : [{
147
- typeOf: params.order.customer.typeOf,
130
+ typeOf: minimizedOrder.customer.typeOf,
148
131
  name: (typeof toRecipientCustomization?.name === 'string')
149
132
  ? toRecipientCustomization.name
150
133
  : defaultRecipientName,
@@ -154,8 +137,8 @@ async function createSendOrderMessage(params, setting) {
154
137
  }];
155
138
  return {
156
139
  typeOf: factory_1.factory.creativeWorkType.EmailMessage,
157
- identifier: `${about.identifier}:${params.order.orderNumber}:${params.index}`,
158
- name: `${about.identifier}:${params.order.orderNumber}:${params.index}`,
140
+ identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
141
+ name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
159
142
  sender: sender,
160
143
  toRecipient: toRecipient,
161
144
  about: about,
@@ -166,29 +149,24 @@ async function createSendOrderMessage(params, setting) {
166
149
  * 注文返品メッセージを作成する
167
150
  */
168
151
  async function createReturnOrderMessage(params, setting) {
152
+ const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
169
153
  const emailMessageText = await createEmailMessageText({
170
- order: params.order,
154
+ order: minimizedOrder,
171
155
  email: params.email,
172
- emailMessage: params.emailMessage
173
156
  });
174
157
  const about = await createEmailMessageAbout({
175
- order: params.order,
176
158
  email: params.email,
177
- emailMessage: params.emailMessage,
178
159
  aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderReturned,
179
160
  defaultName: 'Order Returned'
180
161
  });
181
- const defaultToRecipientEmail = params.order.customer.email;
182
- if (defaultToRecipientEmail === undefined) {
183
- throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
184
- }
185
- const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
162
+ const defaultToRecipientEmail = minimizedOrder.customer.email;
163
+ const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
186
164
  const sender = createEmailMessageSender(params, setting);
187
165
  const toRecipientCustomization = params.email?.toRecipient;
188
166
  const toRecipient = (Array.isArray(toRecipientCustomization))
189
167
  ? toRecipientCustomization.map((customizedRecipient) => {
190
168
  return {
191
- typeOf: params.order.customer.typeOf,
169
+ typeOf: minimizedOrder.customer.typeOf,
192
170
  name: (typeof customizedRecipient.name === 'string')
193
171
  ? customizedRecipient.name
194
172
  : defaultRecipientName,
@@ -198,7 +176,7 @@ async function createReturnOrderMessage(params, setting) {
198
176
  };
199
177
  })
200
178
  : [{
201
- typeOf: params.order.customer.typeOf,
179
+ typeOf: minimizedOrder.customer.typeOf,
202
180
  name: (typeof toRecipientCustomization?.name === 'string')
203
181
  ? toRecipientCustomization.name
204
182
  : defaultRecipientName,
@@ -208,8 +186,8 @@ async function createReturnOrderMessage(params, setting) {
208
186
  }];
209
187
  return {
210
188
  typeOf: factory_1.factory.creativeWorkType.EmailMessage,
211
- identifier: `${about.identifier}:${params.order.orderNumber}:${params.index}`,
212
- name: `${about.identifier}:${params.order.orderNumber}:${params.index}`,
189
+ identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
190
+ name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
213
191
  sender: sender,
214
192
  toRecipient: toRecipient,
215
193
  about: about,
@@ -220,27 +198,24 @@ async function createReturnOrderMessage(params, setting) {
220
198
  * 返金メッセージを作成する
221
199
  */
222
200
  async function createRefundMessage(params, setting) {
201
+ const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
223
202
  const emailMessageText = await createEmailMessageText({
224
- order: params.order,
203
+ order: minimizedOrder,
225
204
  email: params.email
226
205
  });
227
206
  const about = await createEmailMessageAbout({
228
- order: params.order,
229
207
  email: params.email,
230
208
  aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderRefunded,
231
209
  defaultName: 'Refunded'
232
210
  });
233
- const defaultToRecipientEmail = params.order.customer.email;
234
- if (defaultToRecipientEmail === undefined) {
235
- throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
236
- }
237
- const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
211
+ const defaultToRecipientEmail = minimizedOrder.customer.email;
212
+ const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
238
213
  const sender = createEmailMessageSender(params, setting);
239
214
  const toRecipientCustomization = params.email?.toRecipient;
240
215
  const toRecipient = (Array.isArray(toRecipientCustomization))
241
216
  ? toRecipientCustomization.map((customizedRecipient) => {
242
217
  return {
243
- typeOf: params.order.customer.typeOf,
218
+ typeOf: minimizedOrder.customer.typeOf,
244
219
  name: (typeof customizedRecipient.name === 'string')
245
220
  ? customizedRecipient.name
246
221
  : defaultRecipientName,
@@ -250,7 +225,7 @@ async function createRefundMessage(params, setting) {
250
225
  };
251
226
  })
252
227
  : [{
253
- typeOf: params.order.customer.typeOf,
228
+ typeOf: minimizedOrder.customer.typeOf,
254
229
  name: (typeof toRecipientCustomization?.name === 'string')
255
230
  ? toRecipientCustomization.name
256
231
  : defaultRecipientName,
@@ -260,8 +235,8 @@ async function createRefundMessage(params, setting) {
260
235
  }];
261
236
  return {
262
237
  typeOf: factory_1.factory.creativeWorkType.EmailMessage,
263
- identifier: `${about.identifier}:${params.order.orderNumber}:${params.paymentMethodId}`,
264
- name: `${about.identifier}:${params.order.orderNumber}:${params.paymentMethodId}`,
238
+ identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.paymentMethodId}`,
239
+ name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.paymentMethodId}`,
265
240
  sender: sender,
266
241
  toRecipient: toRecipient,
267
242
  about: about,
@@ -23,9 +23,7 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
23
23
  /**
24
24
  * 索条件を最小化(2026-06-05~)
25
25
  */
26
- params: Pick<factory.order.ISearchConditions, 'limit' | 'orderNumbers' | 'page' | 'project' | 'provider' | 'sort' | 'orderDate'>, projection: IProjection4searchWithUnwoundAcceptedOffers, options: {
27
- noName: boolean;
28
- }): Promise<(factory.order.IOrder & {
26
+ params: Pick<factory.order.ISearchConditions, 'limit' | 'orderNumbers' | 'page' | 'project' | 'provider' | 'sort' | 'orderDate'>, projection: IProjection4searchWithUnwoundAcceptedOffers): Promise<(factory.order.IOrder & {
29
27
  acceptedOffers: [IAcceptedOffer];
30
28
  _id?: never;
31
29
  })[]>;
@@ -66,8 +64,6 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
66
64
  reservedTicket?: never;
67
65
  };
68
66
  };
69
- }, options: {
70
- noName: boolean;
71
67
  }): Promise<Pick<IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'>[]>;
72
68
  /**
73
69
  * 注文オファーをsliceして検索する(2024-01-10~)
@@ -24,7 +24,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
24
24
  /**
25
25
  * 索条件を最小化(2026-06-05~)
26
26
  */
27
- params, projection, options) {
27
+ params, projection) {
28
28
  const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
29
29
  const aggregate = this.orderModel.aggregate();
30
30
  // unwind->matchでは遅い
@@ -63,7 +63,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
63
63
  const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
64
64
  let acceptedOffersByReserveTransaction = [];
65
65
  if (reservationNumbers.length > 0) {
66
- acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers }, options);
66
+ acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
67
67
  }
68
68
  return orders.map((order) => {
69
69
  const acceptedOffer = order.acceptedOffers[0];
@@ -136,7 +136,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
136
136
  * 注文オファーを展開して検索する
137
137
  * 注文番号指定で1注文ドキュメントから参照する想定
138
138
  */
139
- async searchAcceptedOffersByOrderNumber(filter, options) {
139
+ async searchAcceptedOffersByOrderNumber(filter) {
140
140
  /**
141
141
  * unwind前に1ドキュメントを特定するためのstage
142
142
  */
@@ -183,7 +183,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
183
183
  .option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
184
184
  .exec();
185
185
  // 予約取引を参照(2026-05-18~)
186
- return this.addAcceptedOffersDetails(acceptedOffers, options);
186
+ return this.addAcceptedOffersDetails(acceptedOffers);
187
187
  }
188
188
  /**
189
189
  * 注文オファーをsliceして検索する(2024-01-10~)
@@ -210,7 +210,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
210
210
  const { acceptedOffers, numAcceptedOffers } = result;
211
211
  // 予約取引を参照(2026-05-18~)
212
212
  return {
213
- acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers, { noName: true }),
213
+ acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers),
214
214
  numAcceptedOffers
215
215
  };
216
216
  }
@@ -22,13 +22,9 @@ export declare class AcceptedOfferInReserveRepo {
22
22
  * 予約番号リスト
23
23
  */
24
24
  reservationNumbers: string[];
25
- }, options: {
26
- noName: boolean;
27
25
  }): Promise<IAcceptedOfferByReserveTransaction[]>;
28
26
  /**
29
27
  * 予約取引からオファー詳細情報を付加する
30
28
  */
31
- protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[], options: {
32
- noName: boolean;
33
- }): Promise<IAcceptedOffer[]>;
29
+ protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[]): Promise<IAcceptedOffer[]>;
34
30
  }
@@ -20,7 +20,7 @@ class AcceptedOfferInReserveRepo {
20
20
  /**
21
21
  * 予約番号指定で予約取引から注文オファーを生成する
22
22
  */
23
- async findAcceptedOffersByReservationNumbers(params, options) {
23
+ async findAcceptedOffersByReservationNumbers(params) {
24
24
  const { reservationNumbers } = params;
25
25
  if (!Array.isArray(reservationNumbers) || reservationNumbers.length === 0) {
26
26
  throw new factory_1.factory.errors.ArgumentNull('reservationNumbers');
@@ -35,13 +35,13 @@ class AcceptedOfferInReserveRepo {
35
35
  .exec();
36
36
  debug('findSubReservationsByReservationNumbers: reservationNumbers.length === reserveTransactions.length?', reservationNumbers.length === reserveTransactions.length);
37
37
  return reserveTransactions.reduce((a, b) => {
38
- return [...a, ...(0, reserveTransaction2itemOffered_1.reserveTransaction2itemOffered)(b, options)];
38
+ return [...a, ...(0, reserveTransaction2itemOffered_1.reserveTransaction2itemOffered)(b)];
39
39
  }, []);
40
40
  }
41
41
  /**
42
42
  * 予約取引からオファー詳細情報を付加する
43
43
  */
44
- async addAcceptedOffersDetails(acceptedOffers, options) {
44
+ async addAcceptedOffersDetails(acceptedOffers) {
45
45
  const offeredThroughIdentifier = acceptedOffers.at(0)?.offeredThrough?.identifier;
46
46
  if (offeredThroughIdentifier === factory_1.factory.service.webAPI.Identifier.COA) {
47
47
  // COAでは予約取引を参照しない
@@ -50,7 +50,7 @@ class AcceptedOfferInReserveRepo {
50
50
  const reservationNumbers = [...new Set(acceptedOffers.map((acceptedOffer) => String(acceptedOffer.serialNumber)))];
51
51
  let acceptedOffersByReserveTransaction = [];
52
52
  if (reservationNumbers.length > 0) {
53
- acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers }, options);
53
+ acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
54
54
  }
55
55
  return acceptedOffers.map((acceptedOffer) => {
56
56
  const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
@@ -1,21 +1,33 @@
1
- import type { Connection } from 'mongoose';
1
+ import type { Connection, FilterQuery } from 'mongoose';
2
+ import { IDocType } from './mongoose/schemas/emailMessages';
2
3
  import { factory } from '../factory';
3
- export type IEmailMessage = factory.creativeWork.message.email.ICreativeWork;
4
+ export type IEmailMessage = IDocType & {
5
+ id: string;
6
+ };
4
7
  export interface ISearchConditions {
5
8
  limit?: number;
6
9
  page?: number;
7
- sort?: any;
10
+ sort?: {
11
+ identifier?: factory.sortType;
12
+ };
8
13
  project?: {
9
14
  id?: {
10
15
  $eq?: string;
11
16
  };
12
17
  };
18
+ id?: {
19
+ $eq?: string;
20
+ };
13
21
  identifier?: {
14
22
  $eq?: string;
15
23
  };
16
24
  about?: {
17
25
  identifier?: {
18
- $eq?: string;
26
+ /**
27
+ * 現時点でOnEventStatusChangedしかサポートしていない
28
+ * 2026-06-18
29
+ */
30
+ $eq?: factory.creativeWork.message.email.AboutIdentifier.OnEventStatusChanged;
19
31
  };
20
32
  };
21
33
  }
@@ -25,12 +37,9 @@ export interface ISearchConditions {
25
37
  export declare class EmailMessageRepo {
26
38
  private readonly emailMessageModel;
27
39
  constructor(connection: Connection);
28
- static CREATE_MONGO_CONDITIONS(params: ISearchConditions): any[];
40
+ static CREATE_MONGO_CONDITIONS(params: ISearchConditions): FilterQuery<IDocType>[];
29
41
  save(params: IEmailMessage): Promise<any>;
30
- findById(params: {
31
- id: string;
32
- }): Promise<IEmailMessage>;
33
- search(params: ISearchConditions): Promise<IEmailMessage[]>;
42
+ findEmailMessages(params: ISearchConditions): Promise<IEmailMessage[]>;
34
43
  deleteById(params: {
35
44
  id: string;
36
45
  }): Promise<void>;
@@ -4,6 +4,17 @@ exports.EmailMessageRepo = void 0;
4
4
  const emailMessages_1 = require("./mongoose/schemas/emailMessages");
5
5
  const factory_1 = require("../factory");
6
6
  const settings_1 = require("../settings");
7
+ const DEFAULT_PROJECTION = {
8
+ _id: 0,
9
+ id: { $toString: '$_id' },
10
+ project: 1,
11
+ typeOf: 1,
12
+ identifier: 1,
13
+ name: 1,
14
+ about: 1,
15
+ sender: 1,
16
+ text: 1,
17
+ };
7
18
  /**
8
19
  * Eメールメッセージリポジトリ
9
20
  */
@@ -13,28 +24,24 @@ class EmailMessageRepo {
13
24
  this.emailMessageModel = connection.model(emailMessages_1.modelName, (0, emailMessages_1.createSchema)());
14
25
  }
15
26
  static CREATE_MONGO_CONDITIONS(params) {
16
- // MongoDB検索条件
17
- const andConditions = [{ typeOf: factory_1.factory.creativeWorkType.EmailMessage }]; // eslint-disable-line @typescript-eslint/no-explicit-any
27
+ const andConditions = [
28
+ // { typeOf: factory.creativeWorkType.EmailMessage }
29
+ ];
18
30
  const projectIdEq = params.project?.id?.$eq;
19
31
  if (typeof projectIdEq === 'string') {
20
- andConditions.push({
21
- 'project.id': { $eq: projectIdEq }
22
- });
32
+ andConditions.push({ 'project.id': { $eq: projectIdEq } });
33
+ }
34
+ const idEq = params.id?.$eq;
35
+ if (typeof idEq === 'string') {
36
+ andConditions.push({ _id: { $eq: idEq } });
23
37
  }
24
38
  const identifierEq = params.identifier?.$eq;
25
39
  if (typeof identifierEq === 'string') {
26
- andConditions.push({
27
- identifier: { $eq: identifierEq }
28
- });
40
+ andConditions.push({ identifier: { $eq: identifierEq } });
29
41
  }
30
42
  const aboutIdentifierEq = params.about?.identifier?.$eq;
31
43
  if (typeof aboutIdentifierEq === 'string') {
32
- andConditions.push({
33
- 'about.identifier': {
34
- $exists: true,
35
- $eq: aboutIdentifierEq
36
- }
37
- });
44
+ andConditions.push({ 'about.identifier': { $exists: true, $eq: aboutIdentifierEq } });
38
45
  }
39
46
  return andConditions;
40
47
  }
@@ -45,7 +52,7 @@ class EmailMessageRepo {
45
52
  }
46
53
  else {
47
54
  // 上書き禁止属性を除外(2022-08-24~)
48
- const { id, identifier, project, typeOf, ...updateFields } = params; // eslint-disable-line @typescript-eslint/no-unused-vars
55
+ const { id: _id, identifier: _identifier, project: _project, typeOf: _typeOf, ...updateFields } = params;
49
56
  doc = await this.emailMessageModel.findOneAndUpdate({ _id: params.id }, updateFields, { upsert: false, new: true })
50
57
  .exec();
51
58
  }
@@ -54,37 +61,20 @@ class EmailMessageRepo {
54
61
  }
55
62
  return doc.toObject();
56
63
  }
57
- async findById(params) {
58
- const doc = await this.emailMessageModel.findOne({ _id: params.id }, {
59
- __v: 0,
60
- createdAt: 0,
61
- updatedAt: 0
62
- })
63
- .exec();
64
- if (doc === null) {
65
- throw new factory_1.factory.errors.NotFound(this.emailMessageModel.modelName);
66
- }
67
- return doc.toObject();
68
- }
69
- async search(params) {
64
+ async findEmailMessages(params) {
70
65
  const conditions = EmailMessageRepo.CREATE_MONGO_CONDITIONS(params);
71
- const query = this.emailMessageModel.find({ $and: conditions }, {
72
- __v: 0,
73
- createdAt: 0,
74
- updatedAt: 0
75
- });
66
+ const query = this.emailMessageModel.find({ $and: conditions }, DEFAULT_PROJECTION);
76
67
  if (typeof params.limit === 'number' && params.limit > 0) {
77
68
  const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
78
69
  query.limit(params.limit)
79
70
  .skip(params.limit * (page - 1));
80
71
  }
81
- /* istanbul ignore else */
82
72
  if (params.sort !== undefined) {
83
73
  query.sort(params.sort);
84
74
  }
85
75
  return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
86
- .exec()
87
- .then((docs) => docs.map((doc) => doc.toObject()));
76
+ .lean()
77
+ .exec();
88
78
  }
89
79
  async deleteById(params) {
90
80
  await this.emailMessageModel.findOneAndDelete({ _id: { $eq: params.id } }, { projection: { _id: 1 } })
@@ -3,7 +3,5 @@ type IAcceptedOfferByReserveTransaction = Pick<factory.order.IOptimizedAcceptedO
3
3
  /**
4
4
  * 予約取引を注文のitemOfferedへ変換する
5
5
  */
6
- declare function reserveTransaction2itemOffered(params: Pick<factory.assetTransaction.reserve.ITransaction, 'object'>, options: {
7
- noName: boolean;
8
- }): IAcceptedOfferByReserveTransaction[];
6
+ declare function reserveTransaction2itemOffered(params: Pick<factory.assetTransaction.reserve.ITransaction, 'object'>): IAcceptedOfferByReserveTransaction[];
9
7
  export { IAcceptedOfferByReserveTransaction, reserveTransaction2itemOffered };
@@ -38,8 +38,7 @@ function createReservedTicket(reservedTicket) {
38
38
  /**
39
39
  * 予約取引を注文のitemOfferedへ変換する
40
40
  */
41
- function reserveTransaction2itemOffered(params, options) {
42
- const { noName } = options;
41
+ function reserveTransaction2itemOffered(params) {
43
42
  const { object } = params;
44
43
  // subReservationは配列のはず
45
44
  if (!Array.isArray(object.subReservation)) {
@@ -70,7 +69,7 @@ function reserveTransaction2itemOffered(params, options) {
70
69
  return {
71
70
  itemOffered: reservationByReserveTransaction,
72
71
  ...((price !== undefined) && { priceSpecification: price }),
73
- ...((!noName && reservedTicket.ticketType.name !== undefined) && { name: reservedTicket.ticketType.name })
72
+ // ...((!noName && reservedTicket.ticketType.name !== undefined) && { name: reservedTicket.ticketType.name }) // 完全廃止(2026-06-19~)
74
73
  };
75
74
  });
76
75
  }
@@ -1,7 +1,15 @@
1
1
  import { IndexDefinition, IndexOptions, Model, Schema, SchemaDefinition } from 'mongoose';
2
2
  import { IVirtuals } from '../virtuals';
3
3
  import { factory } from '../../../factory';
4
- type IDocType = factory.creativeWork.message.email.ICreativeWork;
4
+ type IDocType = Pick<factory.creativeWork.message.email.ICreativeWork, 'identifier' | 'name' | 'project' | 'sender' | 'text' | 'typeOf'> & {
5
+ about: Pick<factory.creativeWork.message.email.IAbout, 'name' | 'typeOf'> & {
6
+ /**
7
+ * 現時点でOnEventStatusChangedしかサポートしていない
8
+ * 2026-06-18
9
+ */
10
+ identifier: factory.creativeWork.message.email.AboutIdentifier.OnEventStatusChanged;
11
+ };
12
+ };
5
13
  type IModel = Model<IDocType, Record<string, never>, Record<string, never>, IVirtuals>;
6
14
  type ISchemaDefinition = SchemaDefinition<IDocType>;
7
15
  type ISchema = Schema<IDocType, IModel, Record<string, never>, Record<string, never>, IVirtuals, Record<string, never>, ISchemaDefinition, IDocType>;
@@ -8,12 +8,9 @@ const settings_1 = require("../../../settings");
8
8
  const modelName = 'EmailMessage';
9
9
  exports.modelName = modelName;
10
10
  const schemaDefinition = {
11
- project: mongoose_1.SchemaTypes.Mixed,
12
- typeOf: {
13
- type: String,
14
- required: true
15
- },
16
- identifier: String,
11
+ project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
12
+ typeOf: { type: String, required: true },
13
+ identifier: { type: String, required: true },
17
14
  name: mongoose_1.SchemaTypes.Mixed,
18
15
  about: mongoose_1.SchemaTypes.Mixed,
19
16
  sender: mongoose_1.SchemaTypes.Mixed,
@@ -54,25 +51,13 @@ function createSchema() {
54
51
  return schema;
55
52
  }
56
53
  const indexes = [
57
- // [ // discontinue(2024-08-07~)
58
- // { createdAt: 1 },
59
- // { name: 'searchByCreatedAt' }
60
- // ],
61
- // [
62
- // { updatedAt: 1 },
63
- // { name: 'searchByUpdatedAt' }
64
- // ],
65
54
  [
66
55
  { identifier: 1 },
67
- {
68
- name: 'searchByIdentifier'
69
- }
56
+ { name: 'searchByIdentifier' }
70
57
  ],
71
58
  [
72
59
  { 'project.id': 1, identifier: 1 },
73
- {
74
- name: 'searchByProjectId'
75
- }
60
+ { name: 'searchByProjectId' }
76
61
  ]
77
62
  ];
78
63
  exports.indexes = indexes;