@chevre/domain 22.11.0-alpha.4 → 22.11.0-alpha.40

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 (184) 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/assetTransaction/processReserve.ts +0 -1
  4. package/example/src/chevre/checkCustomerAttributesLength.ts +109 -0
  5. package/example/src/chevre/notifyAbortedTasksByEmail.ts +1 -1
  6. package/example/src/chevre/reIndex.ts +1 -1
  7. package/example/src/chevre/roles/addAdminPermissionIfNotExists.ts +132 -0
  8. package/example/src/chevre/roles/addDefaultPermissionIfNotExists.ts +37 -0
  9. package/example/src/chevre/roles/addEventOfferPermissionIfNotExists.ts +27 -0
  10. package/example/src/chevre/roles/addPermissionIfNotExists.ts +39 -6
  11. package/example/src/chevre/roles/addProjectCreatorRole.ts +48 -0
  12. package/example/src/chevre/roles/assignGlobalRoles.ts +72 -0
  13. package/example/src/chevre/roles/findPermissions.ts +84 -0
  14. package/example/src/chevre/roles/findRoleNames.ts +117 -0
  15. package/example/src/chevre/roles/removeConsolePermissionIfExists.ts +38 -0
  16. package/example/src/chevre/roles/removePermissionFromAPIRoles.ts +46 -0
  17. package/example/src/chevre/roles/removePermissionIfExists.ts +39 -0
  18. package/example/src/chevre/searchEventSeats.ts +1 -1
  19. package/example/src/chevre/searchProducts.ts +28 -0
  20. package/example/src/chevre/settings/addSettings.ts +31 -17
  21. package/example/src/chevre/task/countPotentiallyRunning.ts +41 -0
  22. package/example/src/chevre/task/countTasks.ts +51 -0
  23. package/example/src/chevre/{deleteRunsAtPassedCertainPeriod.ts → task/deleteRunsAtPassedCertainPeriod.ts} +4 -3
  24. package/example/src/chevre/task/deleteUnexpectedTasks.ts +23 -0
  25. package/example/src/chevre/task/emitRunning.ts +89 -0
  26. package/example/src/chevre/unsetUnnecessaryFields.ts +8 -5
  27. package/example/src/idaas/auth0/adminApplications.ts +183 -0
  28. package/example/src/idaas/auth0/getToken.ts +55 -0
  29. package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +84 -0
  30. package/example/src/regex.ts +31 -0
  31. package/lib/chevre/eventEmitter/task.d.ts +29 -6
  32. package/lib/chevre/index.d.ts +0 -2
  33. package/lib/chevre/index.js +0 -10
  34. package/lib/chevre/repo/confirmationNumber.d.ts +0 -3
  35. package/lib/chevre/repo/confirmationNumber.js +12 -47
  36. package/lib/chevre/repo/identity.d.ts +11 -33
  37. package/lib/chevre/repo/identity.js +10 -15
  38. package/lib/chevre/repo/member.d.ts +22 -4
  39. package/lib/chevre/repo/member.js +81 -27
  40. package/lib/chevre/repo/mongoose/schemas/identity.d.ts +1 -1
  41. package/lib/chevre/repo/mongoose/schemas/member/global.d.ts +14 -0
  42. package/lib/chevre/repo/mongoose/schemas/member/global.js +82 -0
  43. package/lib/chevre/repo/mongoose/schemas/product.js +9 -0
  44. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +15 -0
  45. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -0
  46. package/lib/chevre/repo/mongoose/schemas/task.js +9 -0
  47. package/lib/chevre/repo/order.d.ts +17 -2
  48. package/lib/chevre/repo/order.js +47 -8
  49. package/lib/chevre/repo/orderNumber.d.ts +0 -3
  50. package/lib/chevre/repo/orderNumber.js +10 -44
  51. package/lib/chevre/repo/pendingReservation.js +1 -0
  52. package/lib/chevre/repo/product.js +12 -17
  53. package/lib/chevre/repo/role.d.ts +16 -4
  54. package/lib/chevre/repo/role.js +71 -32
  55. package/lib/chevre/repo/serviceOutputIdentifier.d.ts +0 -3
  56. package/lib/chevre/repo/serviceOutputIdentifier.js +10 -27
  57. package/lib/chevre/repo/setting.d.ts +5 -10
  58. package/lib/chevre/repo/setting.js +4 -7
  59. package/lib/chevre/repo/stockHolder.d.ts +4 -27
  60. package/lib/chevre/repo/stockHolder.js +163 -186
  61. package/lib/chevre/repo/task.d.ts +58 -38
  62. package/lib/chevre/repo/task.js +126 -296
  63. package/lib/chevre/repo/transaction.js +10 -10
  64. package/lib/chevre/repo/transactionNumber.d.ts +0 -3
  65. package/lib/chevre/repo/transactionNumber.js +10 -44
  66. package/lib/chevre/repo/transactionNumberCounter.d.ts +0 -10
  67. package/lib/chevre/repo/transactionNumberCounter.js +34 -29
  68. package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
  69. package/lib/chevre/service/assetTransaction/registerService.js +4 -0
  70. package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +19 -16
  71. package/lib/chevre/service/code.d.ts +5 -28
  72. package/lib/chevre/service/code.js +3 -79
  73. package/lib/chevre/service/iam.d.ts +17 -7
  74. package/lib/chevre/service/iam.js +26 -6
  75. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +15 -0
  76. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +38 -0
  77. package/lib/chevre/service/notification.d.ts +2 -1
  78. package/lib/chevre/service/notification.js +3 -1
  79. package/lib/chevre/service/offer/product.js +4 -0
  80. package/lib/chevre/service/order/confirmPayTransaction.d.ts +6 -1
  81. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +3 -3
  82. package/lib/chevre/service/task/acceptCOAOffer.d.ts +1 -1
  83. package/lib/chevre/service/task/acceptCOAOffer.js +6 -5
  84. package/lib/chevre/service/task/aggregateOffers.d.ts +1 -1
  85. package/lib/chevre/service/task/aggregateOffers.js +1 -1
  86. package/lib/chevre/service/task/aggregateOnSystem.d.ts +4 -2
  87. package/lib/chevre/service/task/aggregateScreeningEvent.d.ts +1 -1
  88. package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
  89. package/lib/chevre/service/task/authorizePayment.d.ts +1 -1
  90. package/lib/chevre/service/task/authorizePayment.js +7 -6
  91. package/lib/chevre/service/task/cancelMoneyTransfer.d.ts +1 -1
  92. package/lib/chevre/service/task/cancelPendingReservation.d.ts +1 -1
  93. package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
  94. package/lib/chevre/service/task/cancelReservation.d.ts +1 -1
  95. package/lib/chevre/service/task/cancelReservation.js +1 -1
  96. package/lib/chevre/service/task/checkMovieTicket.d.ts +1 -1
  97. package/lib/chevre/service/task/checkMovieTicket.js +4 -3
  98. package/lib/chevre/service/task/checkResource.d.ts +1 -1
  99. package/lib/chevre/service/task/checkResource.js +1 -1
  100. package/lib/chevre/service/task/confirmMoneyTransfer.d.ts +1 -1
  101. package/lib/chevre/service/task/confirmPayTransaction.d.ts +2 -2
  102. package/lib/chevre/service/task/confirmPayTransaction.js +3 -2
  103. package/lib/chevre/service/task/confirmRegisterService.d.ts +1 -1
  104. package/lib/chevre/service/task/confirmRegisterServiceTransaction.d.ts +1 -1
  105. package/lib/chevre/service/task/confirmReserveTransaction.d.ts +6 -2
  106. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -3
  107. package/lib/chevre/service/task/createAccountingReport.d.ts +1 -1
  108. package/lib/chevre/service/task/createEvent.d.ts +1 -1
  109. package/lib/chevre/service/task/deletePerson.d.ts +1 -1
  110. package/lib/chevre/service/task/deleteTransaction.d.ts +1 -1
  111. package/lib/chevre/service/task/givePointAward.d.ts +1 -1
  112. package/lib/chevre/service/task/givePointAward.js +1 -1
  113. package/lib/chevre/service/task/handleNotification.d.ts +4 -2
  114. package/lib/chevre/service/task/importEventCapacitiesFromCOA.d.ts +1 -1
  115. package/lib/chevre/service/task/importEventsFromCOA.d.ts +1 -1
  116. package/lib/chevre/service/task/importOffersFromCOA.d.ts +1 -1
  117. package/lib/chevre/service/task/invalidatePaymentUrl.d.ts +1 -1
  118. package/lib/chevre/service/task/moneyTransfer.d.ts +1 -1
  119. package/lib/chevre/service/task/moneyTransfer.js +1 -1
  120. package/lib/chevre/service/task/onAssetTransactionStatusChanged.d.ts +1 -1
  121. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +1 -1
  122. package/lib/chevre/service/task/onEventChanged.d.ts +1 -1
  123. package/lib/chevre/service/task/onOrderPaymentCompleted.d.ts +1 -1
  124. package/lib/chevre/service/task/onResourceUpdated.d.ts +1 -1
  125. package/lib/chevre/service/task/pay.d.ts +1 -1
  126. package/lib/chevre/service/task/placeOrder.d.ts +1 -1
  127. package/lib/chevre/service/task/publishPaymentUrl.d.ts +1 -1
  128. package/lib/chevre/service/task/publishPaymentUrl.js +6 -7
  129. package/lib/chevre/service/task/refund.d.ts +1 -1
  130. package/lib/chevre/service/task/refund.js +1 -1
  131. package/lib/chevre/service/task/registerService.d.ts +1 -1
  132. package/lib/chevre/service/task/reserve.d.ts +1 -1
  133. package/lib/chevre/service/task/returnMoneyTransfer.d.ts +1 -1
  134. package/lib/chevre/service/task/returnMoneyTransfer.js +1 -1
  135. package/lib/chevre/service/task/returnOrder.d.ts +1 -1
  136. package/lib/chevre/service/task/returnPayTransaction.d.ts +1 -1
  137. package/lib/chevre/service/task/returnPayTransaction.js +1 -1
  138. package/lib/chevre/service/task/returnPointAward.d.ts +1 -1
  139. package/lib/chevre/service/task/returnPointAward.js +1 -1
  140. package/lib/chevre/service/task/returnReserveTransaction.d.ts +1 -1
  141. package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
  142. package/lib/chevre/service/task/sendEmailMessage.d.ts +1 -1
  143. package/lib/chevre/service/task/sendOrder.d.ts +1 -1
  144. package/lib/chevre/service/task/triggerWebhook.d.ts +1 -1
  145. package/lib/chevre/service/task/useReservation.d.ts +1 -1
  146. package/lib/chevre/service/task/voidMoneyTransferTransaction.d.ts +1 -1
  147. package/lib/chevre/service/task/voidPayTransaction.d.ts +1 -1
  148. package/lib/chevre/service/task/voidPayment.d.ts +1 -1
  149. package/lib/chevre/service/task/voidRegisterServiceTransaction.d.ts +1 -1
  150. package/lib/chevre/service/task/voidReserveTransaction.d.ts +1 -1
  151. package/lib/chevre/service/task/voidReserveTransaction.js +5 -4
  152. package/lib/chevre/service/task.d.ts +7 -29
  153. package/lib/chevre/service/task.js +9 -114
  154. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.d.ts +11 -0
  155. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +105 -0
  156. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +17 -0
  157. package/lib/chevre/service/taskHandler/onOperationFailed.js +70 -0
  158. package/lib/chevre/service/taskHandler.d.ts +26 -0
  159. package/lib/chevre/service/taskHandler.js +97 -0
  160. package/lib/chevre/service/validation/validateEvent.d.ts +2 -2
  161. package/lib/chevre/service/validation/validateEvent.js +16 -10
  162. package/lib/chevre/service/validation/validateOrder.js +55 -37
  163. package/lib/chevre/service.d.ts +0 -4
  164. package/lib/chevre/service.js +10 -14
  165. package/lib/chevre/settings/aggregation.d.ts +6 -1
  166. package/lib/chevre/settings/aggregation.js +2 -1
  167. package/package.json +6 -4
  168. package/example/src/chevre/adminAuth/adminIdentity.ts +0 -38
  169. package/example/src/chevre/executeOneTask.ts +0 -41
  170. package/example/src/chevre/executeTaskIfExists.ts +0 -80
  171. package/example/src/chevre/findExecutableTask.ts +0 -50
  172. package/example/src/chevre/findSetting.ts +0 -79
  173. package/example/src/chevre/roles/addRoleMembers.ts +0 -75
  174. package/example/src/chevre/searchPermissions.ts +0 -46
  175. package/example/src/chevre/searchProductOffers.ts +0 -29
  176. package/example/src/chevre/stockHolder/checkIfConflicted.ts +0 -76
  177. package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +0 -195
  178. package/example/src/chevre/stockHolder/migratePendingReservations.ts +0 -96
  179. package/example/src/chevre/stockHolder/playAroundStockHolder.ts +0 -256
  180. package/example/src/chevre/transactionNumber/publishConfimationNumber.ts +0 -37
  181. package/example/src/chevre/transactionNumber/publishOrderNumber.ts +0 -40
  182. package/example/src/chevre/upsertProductsByProductId.ts +0 -100
  183. package/lib/chevre/adminAuth.d.ts +0 -2
  184. package/lib/chevre/adminAuth.js +0 -6
@@ -323,7 +323,7 @@ class TransactionRepo {
323
323
  .lean() // 2024-08-26~
324
324
  .exec();
325
325
  if (doc === null) {
326
- throw new factory.errors.NotFound(this.transactionModel.modelName);
326
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} not found`);
327
327
  }
328
328
  return doc;
329
329
  });
@@ -371,7 +371,7 @@ class TransactionRepo {
371
371
  .lean() // 2024-08-26~
372
372
  .exec();
373
373
  if (doc === null) {
374
- throw new factory.errors.NotFound(this.transactionModel.modelName);
374
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
375
375
  }
376
376
  return doc;
377
377
  });
@@ -389,7 +389,7 @@ class TransactionRepo {
389
389
  .lean() // 2024-08-26~
390
390
  .exec();
391
391
  if (doc === null) {
392
- throw new factory.errors.NotFound(this.transactionModel.modelName);
392
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
393
393
  }
394
394
  return doc.object.paymentMethods;
395
395
  });
@@ -407,7 +407,7 @@ class TransactionRepo {
407
407
  .lean() // 2024-08-26~
408
408
  .exec();
409
409
  if (doc === null) {
410
- throw new factory.errors.NotFound(this.transactionModel.modelName);
410
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
411
411
  }
412
412
  return doc.object.orderNumber;
413
413
  });
@@ -425,7 +425,7 @@ class TransactionRepo {
425
425
  .lean() // 2024-08-26~
426
426
  .exec();
427
427
  if (doc === null) {
428
- throw new factory.errors.NotFound(this.transactionModel.modelName);
428
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${params.status.$in.join(' or ')} not found`);
429
429
  }
430
430
  return doc.object.confirmationNumber;
431
431
  });
@@ -448,7 +448,7 @@ class TransactionRepo {
448
448
  .lean()
449
449
  .exec();
450
450
  if (doc === null) {
451
- throw new factory.errors.NotFound(this.transactionModel.modelName);
451
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
452
452
  }
453
453
  });
454
454
  }
@@ -471,7 +471,7 @@ class TransactionRepo {
471
471
  .lean()
472
472
  .exec();
473
473
  if (doc === null) {
474
- throw new factory.errors.NotFound(this.transactionModel.modelName);
474
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
475
475
  }
476
476
  });
477
477
  }
@@ -494,7 +494,7 @@ class TransactionRepo {
494
494
  .lean()
495
495
  .exec();
496
496
  if (doc === null) {
497
- throw new factory.errors.NotFound(this.transactionModel.modelName);
497
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
498
498
  }
499
499
  });
500
500
  }
@@ -538,7 +538,7 @@ class TransactionRepo {
538
538
  .isSameOrBefore(moment(endDate))) {
539
539
  throw new factory.errors.Argument('Transaction id', 'potentially expired');
540
540
  }
541
- throw new factory.errors.NotFound(this.transactionModel.modelName);
541
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
542
542
  }
543
543
  }
544
544
  transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
@@ -914,7 +914,7 @@ class TransactionRepo {
914
914
  throw new factory.errors.Argument('Transaction id', 'Confirmed transaction unable to cancel');
915
915
  }
916
916
  else {
917
- throw new factory.errors.NotFound(this.transactionModel.modelName);
917
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
918
918
  }
919
919
  }
920
920
  transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
@@ -1,5 +1,4 @@
1
1
  import type { Connection } from 'mongoose';
2
- import { RedisClientType } from 'redis';
3
2
  interface IPublishResult {
4
3
  transactionNumber: string;
5
4
  }
@@ -9,7 +8,6 @@ interface IPublishResult {
9
8
  export declare class TransactionNumberRepo {
10
9
  private readonly counterRepo;
11
10
  constructor(params: {
12
- redisClient: RedisClientType;
13
11
  connection: Connection;
14
12
  });
15
13
  /**
@@ -18,6 +16,5 @@ export declare class TransactionNumberRepo {
18
16
  publishByTimestamp(params: {
19
17
  startDate: Date;
20
18
  }): Promise<IPublishResult>;
21
- private useMongoBySettings;
22
19
  }
23
20
  export {};
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TransactionNumberRepo = void 0;
13
13
  const cdigit = require("cdigit");
14
14
  const moment = require("moment-timezone");
15
+ // import { RedisClientType } from 'redis';
15
16
  // tslint:disable-next-line:no-require-imports no-var-requires
16
17
  const fpe = require('node-fpe');
17
18
  // import { createSchema as createSettingSchema, modelName as settingModelName } from './mongoose/schemas/setting';
@@ -47,27 +48,15 @@ class TransactionNumberRepo {
47
48
  let dataFeedExpires;
48
49
  const dataFeedIdentifier = timestamp;
49
50
  let incrReply;
50
- const useMongoBySettings = yield this.useMongoBySettings(params);
51
- if (useMongoBySettings) {
52
- dataFeedExpires = moment(params.startDate)
53
- .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
54
- .toDate();
55
- incrReply = yield this.counterRepo.incrementByMongo({
56
- identifier: dataFeedIdentifier,
57
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.transactionNumber },
58
- expires: dataFeedExpires
59
- });
60
- }
61
- else {
62
- dataFeedExpires = moment(params.startDate)
63
- .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
64
- .toDate();
65
- incrReply = yield this.counterRepo.incrementByRedis({
66
- identifier: dataFeedIdentifier,
67
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.transactionNumber },
68
- expires: dataFeedExpires
69
- });
70
- }
51
+ // const useMongoBySettings = await this.useMongoBySettings(params);
52
+ dataFeedExpires = moment(params.startDate)
53
+ .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
54
+ .toDate();
55
+ incrReply = yield this.counterRepo.incrementByMongo({
56
+ identifier: dataFeedIdentifier,
57
+ includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.transactionNumber },
58
+ expires: dataFeedExpires
59
+ });
71
60
  let transactionNumber = `${timestamp}${incrReply}`;
72
61
  // checkdigit
73
62
  const cd = cdigit.luhn.compute(transactionNumber);
@@ -77,28 +66,5 @@ class TransactionNumberRepo {
77
66
  return { transactionNumber };
78
67
  });
79
68
  }
80
- // /**
81
- // * DB移行時のみに使用目的の設定更新
82
- // */
83
- // public async setUseMongo4transactionNumberFrom(params: {
84
- // useMongo4transactionNumberFrom: Date;
85
- // }) {
86
- // const { useMongo4transactionNumberFrom } = params;
87
- // return this.settingModel.findOneAndUpdate(
88
- // { 'project.id': { $eq: '*' } },
89
- // {
90
- // $set: { useMongo4transactionNumberFrom }
91
- // },
92
- // { projection: { _id: 0, useMongo4transactionNumberFrom: 1 } }
93
- // )
94
- // .lean<Pick<ISetting, 'useMongo4transactionNumberFrom'> | null>()
95
- // .exec();
96
- // }
97
- // tslint:disable-next-line:prefer-function-over-method
98
- useMongoBySettings(__) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- return true;
101
- });
102
- }
103
69
  }
104
70
  exports.TransactionNumberRepo = TransactionNumberRepo;
@@ -1,23 +1,13 @@
1
1
  import type { Connection } from 'mongoose';
2
- import { RedisClientType } from 'redis';
3
2
  import { DataCatalogIdentifier } from './mongoose/schemas/transactionNumber';
4
3
  /**
5
4
  * 取引番号カウンターリポジトリ
6
5
  */
7
6
  export declare class TransactionNumberCounterRepo {
8
- private readonly redisClient;
9
7
  private readonly transactionNumberModel;
10
8
  constructor(params: {
11
- redisClient: RedisClientType;
12
9
  connection: Connection;
13
10
  });
14
- incrementByRedis(params: {
15
- identifier: string;
16
- includedInDataCatalog: {
17
- identifier: DataCatalogIdentifier;
18
- };
19
- expires: Date;
20
- }): Promise<number>;
21
11
  incrementByMongo(params: {
22
12
  identifier: string;
23
13
  includedInDataCatalog: {
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TransactionNumberCounterRepo = void 0;
13
+ // import { RedisClientType } from 'redis';
13
14
  const errorHandler_1 = require("../errorHandler");
14
15
  const factory = require("../factory");
15
16
  const transactionNumber_1 = require("./mongoose/schemas/transactionNumber");
@@ -19,37 +20,41 @@ const MAX_RETRY_INCREMENT = 1;
19
20
  */
20
21
  class TransactionNumberCounterRepo {
21
22
  constructor(params) {
22
- const { redisClient, connection } = params;
23
- this.redisClient = redisClient;
23
+ const { connection } = params;
24
+ // this.redisClient = redisClient;
24
25
  this.transactionNumberModel = connection.model(transactionNumber_1.modelName, (0, transactionNumber_1.createSchema)());
25
26
  }
26
- incrementByRedis(params) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- // const now = moment();
29
- const { expires } = params;
30
- const key = `${params.includedInDataCatalog.identifier}:${params.identifier}`;
31
- // const TTL = moment(expires)
32
- // .diff(now, 'seconds');
33
- const [incrReply, expireAtReply] = yield this.redisClient.multi()
34
- .incr(key)
35
- // .expire(key, TTL)
36
- .expireAt(key, expires)
37
- .exec();
38
- // tslint:disable-next-line:no-single-line-block-comment
39
- /* istanbul ignore else: please write tests */
40
- if (typeof incrReply !== 'number') {
41
- // 基本的にありえないフロー
42
- throw new factory.errors.Internal('transaction number not incremented unexpectedly');
43
- }
44
- // expireAtReplyの検証も追加する(2023-04-19~)
45
- const expiredSet = expireAtReply === 1 || expireAtReply === true;
46
- if (!expiredSet) {
47
- // 基本的にありえないフロー
48
- throw new factory.errors.Internal('transaction number expiration not set unexpectedly');
49
- }
50
- return incrReply;
51
- });
52
- }
27
+ // public async incrementByRedis(params: {
28
+ // identifier: string;
29
+ // includedInDataCatalog: {
30
+ // identifier: DataCatalogIdentifier;
31
+ // };
32
+ // expires: Date;
33
+ // }): Promise<number> {
34
+ // // const now = moment();
35
+ // const { expires } = params;
36
+ // const key = `${params.includedInDataCatalog.identifier}:${params.identifier}`;
37
+ // // const TTL = moment(expires)
38
+ // // .diff(now, 'seconds');
39
+ // const [incrReply, expireAtReply] = await this.redisClient.multi()
40
+ // .incr(key)
41
+ // // .expire(key, TTL)
42
+ // .expireAt(key, expires)
43
+ // .exec();
44
+ // // tslint:disable-next-line:no-single-line-block-comment
45
+ // /* istanbul ignore else: please write tests */
46
+ // if (typeof incrReply !== 'number') {
47
+ // // 基本的にありえないフロー
48
+ // throw new factory.errors.Internal('transaction number not incremented unexpectedly');
49
+ // }
50
+ // // expireAtReplyの検証も追加する(2023-04-19~)
51
+ // const expiredSet = expireAtReply === 1 || <any>expireAtReply === true;
52
+ // if (!expiredSet) {
53
+ // // 基本的にありえないフロー
54
+ // throw new factory.errors.Internal('transaction number expiration not set unexpectedly');
55
+ // }
56
+ // return incrReply;
57
+ // }
53
58
  incrementByMongo(params) {
54
59
  return __awaiter(this, void 0, void 0, function* () {
55
60
  var _a;
@@ -18,7 +18,7 @@ export declare function validateStartParams(params: IStartParams): (repos: {
18
18
  assetTransaction: AssetTransactionRepo;
19
19
  }) => Promise<{
20
20
  reserveTransaction: import("@chevre/factory/lib/assetTransaction/reserve").ITransaction | undefined;
21
- reservations: (Pick<import("@chevre/factory/lib/reservation/event").IReservation, "id" | "typeOf" | "reservationNumber" | "issuedThrough"> & {
21
+ reservations: (Pick<import("@chevre/factory/lib/reservation/event").IReservation, "id" | "typeOf" | "issuedThrough" | "reservationNumber"> & {
22
22
  reservationFor: Pick<factory.reservation.IReservationFor<factory.reservationType.EventReservation>, "id" | "typeOf">;
23
23
  })[] | undefined;
24
24
  }>;
@@ -56,6 +56,10 @@ function start(params) {
56
56
  if (product === undefined) {
57
57
  throw new factory.errors.NotFound('Product');
58
58
  }
59
+ if (product.typeOf !== factory.product.ProductType.MembershipService
60
+ && product.typeOf !== factory.product.ProductType.PaymentCard) {
61
+ throw new factory.errors.Argument('object.itemOffered.id', `invalid product type: ${product.typeOf}`);
62
+ }
59
63
  const transactionNumber = params.transactionNumber;
60
64
  if (typeof transactionNumber !== 'string' || transactionNumber.length === 0) {
61
65
  throw new factory.errors.ArgumentNull('transactionNumber');
@@ -187,22 +187,25 @@ function searchAvailableAddOns(params) {
187
187
  const { offers, product } = yield OfferService.product.search(Object.assign({ ids: params.ids, project: { id: params.project.id }, itemOffered: { id: addOnProductId }, onlyValid: true, addSortIndex: false, includedInDataCatalog: { id: '' }, useIncludeInDataCatalog: false }, (typeof ((_a = params.availableAtOrFrom) === null || _a === void 0 ? void 0 : _a.id) === 'string')
188
188
  ? { availableAt: { id: params.availableAtOrFrom.id } }
189
189
  : undefined))(repos);
190
- availableAddOns.push(...offers.map((o) => {
191
- const itemOffered4addOn = {
192
- description: product.description,
193
- id: product.id,
194
- name: product.name,
195
- productID: product.productID,
196
- typeOf: product.typeOf
197
- };
198
- const unitPriceSpec = o.priceSpecification.priceComponent.find((component) => {
199
- return component.typeOf === factory.priceSpecificationType.UnitPriceSpecification;
200
- });
201
- if ((unitPriceSpec === null || unitPriceSpec === void 0 ? void 0 : unitPriceSpec.typeOf) !== factory.priceSpecificationType.UnitPriceSpecification) {
202
- throw new factory.errors.NotFound('UnitPriceSpecification of an addOn');
203
- }
204
- return Object.assign(Object.assign({ alternateName: o.alternateName, availability: o.availability, description: o.description, id: String(o.id), identifier: o.identifier, itemOffered: itemOffered4addOn, name: o.name, priceCurrency: o.priceCurrency, priceSpecification: unitPriceSpec, typeOf: o.typeOf }, (o.validFrom instanceof Date) ? { validFrom: o.validFrom } : undefined), (o.validThrough instanceof Date) ? { validThrough: o.validThrough } : undefined);
205
- }));
190
+ const productType = product.typeOf;
191
+ if (productType === factory.product.ProductType.Product) {
192
+ availableAddOns.push(...offers.map((o) => {
193
+ const itemOffered4addOn = {
194
+ description: product.description,
195
+ id: product.id,
196
+ name: product.name,
197
+ productID: product.productID,
198
+ typeOf: productType
199
+ };
200
+ const unitPriceSpec = o.priceSpecification.priceComponent.find((component) => {
201
+ return component.typeOf === factory.priceSpecificationType.UnitPriceSpecification;
202
+ });
203
+ if ((unitPriceSpec === null || unitPriceSpec === void 0 ? void 0 : unitPriceSpec.typeOf) !== factory.priceSpecificationType.UnitPriceSpecification) {
204
+ throw new factory.errors.NotFound('UnitPriceSpecification of an addOn');
205
+ }
206
+ return Object.assign(Object.assign({ alternateName: o.alternateName, availability: o.availability, description: o.description, id: String(o.id), identifier: o.identifier, itemOffered: itemOffered4addOn, name: o.name, priceCurrency: o.priceCurrency, priceSpecification: unitPriceSpec, typeOf: o.typeOf }, (o.validFrom instanceof Date) ? { validFrom: o.validFrom } : undefined), (o.validThrough instanceof Date) ? { validThrough: o.validThrough } : undefined);
207
+ }));
208
+ }
206
209
  }
207
210
  }
208
211
  return availableAddOns;
@@ -1,31 +1,8 @@
1
- import type { AuthorizationRepo } from '../repo/authorization';
2
- import type { JWTSettingRepo } from '../repo/setting/jwt';
3
- import type { TicketRepo } from '../repo/ticket';
4
- import * as factory from '../factory';
5
- type IToken = string;
6
- interface IPayload extends Pick<factory.clientUser.IClientUser, 'aud' | 'exp' | 'iat' | 'iss' | 'sub' | 'token_use' | 'typ' | 'version'> {
7
- version: string;
8
- typ: string;
9
- jti?: string;
10
- }
1
+ /**
2
+ * 承認サービス
3
+ * ひとまず不要なので廃止(2025-07-18~)
4
+ */
11
5
  /**
12
6
  * コードをトークンに変換する
13
7
  */
14
- declare function getToken(params: {
15
- agent: {
16
- id: string;
17
- typeOf: factory.creativeWorkType.SoftwareApplication | factory.creativeWorkType.WebApplication | factory.personType.Person;
18
- };
19
- project: {
20
- id: string;
21
- };
22
- code: string;
23
- expiresIn: number;
24
- }): (repos: {
25
- authorization: AuthorizationRepo;
26
- jwtSetting: JWTSettingRepo;
27
- ticket: TicketRepo;
28
- }) => Promise<{
29
- token: IToken;
30
- }>;
31
- export { IPayload, getToken };
8
+ export {};
@@ -1,83 +1,7 @@
1
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.getToken = getToken;
13
2
  /**
14
3
  * 承認サービス
4
+ * ひとまず不要なので廃止(2025-07-18~)
15
5
  */
16
- const jwt = require("jsonwebtoken");
17
- const factory = require("../factory");
18
- /**
19
- * コードをトークンに変換する
20
- */
21
- function getToken(params) {
22
- return (repos) => __awaiter(this, void 0, void 0, function* () {
23
- var _a;
24
- const jwtSetting = yield repos.jwtSetting.findDefault();
25
- if (typeof params.project.id !== 'string' || params.project.id.length === 0) {
26
- throw new factory.errors.ArgumentNull('project.id');
27
- }
28
- if (typeof params.code !== 'string' || params.code.length === 0) {
29
- throw new factory.errors.ArgumentNull('code');
30
- }
31
- const authorization = yield repos.authorization.findValidOneByCode({
32
- project: { id: params.project.id },
33
- code: params.code
34
- });
35
- // if (typeof params.issuer !== 'string' || params.issuer.length === 0) {
36
- // throw new factory.errors.ArgumentNull('issuer');
37
- // }
38
- let subject;
39
- let typ;
40
- // jti必須化(2024-08-22~)
41
- const { id } = yield repos.ticket.issueByTicketToken(Object.assign({ project: { id: params.project.id }, ticketToken: params.code }, (typeof ((_a = authorization.issuedBy) === null || _a === void 0 ? void 0 : _a.id) === 'string') ? { issuedBy: authorization.issuedBy } : undefined));
42
- const jti = id;
43
- // ロール承認の場合、subjectはメンバーID,typはメンバータイプ
44
- if (authorization.object.typeOf === factory.role.RoleType.OrganizationRole) {
45
- subject = authorization.object.member.id;
46
- typ = `${jwtSetting.payloadTypPrefix}:${authorization.object.member.typeOf}`;
47
- }
48
- else {
49
- // useJtiの場合、subject,typはagent(2024-05-09~)
50
- subject = params.agent.id;
51
- typ = `${jwtSetting.payloadTypPrefix}:${params.agent.typeOf}`;
52
- }
53
- const payload = {
54
- token_use: 'access', // 拡張(2024-05-01~)
55
- version: jwtSetting.version, // 拡張(2024-05-02~)
56
- typ // 拡張(2024-05-07~)
57
- };
58
- const token = yield new Promise((resolve, reject) => {
59
- // 所有権を暗号化する
60
- jwt.sign(payload, jwtSetting.secret, {
61
- algorithm: jwtSetting.algorithm, // 明示的に指定(2024-05-05~)
62
- issuer: jwtSetting.issuer, // 都度指定に変更(2024-05-05~)
63
- expiresIn: params.expiresIn,
64
- subject, // 拡張(2024-05-01~)
65
- audience: jwtSetting.issuer, // 拡張(2024-05-02~)
66
- jwtid: jti // 拡張(2024-05-08~)
67
- }, (err, encoded) => {
68
- if (err instanceof Error) {
69
- reject(err);
70
- }
71
- else {
72
- if (typeof encoded !== 'string') {
73
- reject(new factory.errors.Internal('authorization.object cannot be signed unexpectedly'));
74
- }
75
- else {
76
- resolve(encoded);
77
- }
78
- }
79
- });
80
- });
81
- return { token };
82
- });
83
- }
6
+ // import * as jwt from 'jsonwebtoken';
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -8,7 +8,7 @@ export type IPermission = string;
8
8
  /**
9
9
  * プロジェクトメンバーの権限を検索する
10
10
  */
11
- export declare function searchPermissions(params: {
11
+ export declare function findProjectPermissionsByMember(params: {
12
12
  project: {
13
13
  id: string;
14
14
  };
@@ -23,10 +23,20 @@ export declare function searchPermissions(params: {
23
23
  member: MemberRepo;
24
24
  role: RoleRepo;
25
25
  }) => Promise<{
26
- hasRole: {
27
- roleName: string;
28
- }[];
29
- permissions: {
30
- _id: string;
31
- }[];
26
+ roleNames: string[];
27
+ permissions: string[];
28
+ }>;
29
+ /**
30
+ * グローバル権限を検索する
31
+ */
32
+ export declare function findGloablPermissionsByMember(params: {
33
+ member: {
34
+ id: string;
35
+ };
36
+ }): (repos: {
37
+ member: MemberRepo;
38
+ role: RoleRepo;
39
+ }) => Promise<{
40
+ roleNames: string[];
41
+ permissions: string[];
32
42
  }>;
@@ -9,14 +9,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.searchPermissions = searchPermissions;
12
+ exports.findProjectPermissionsByMember = findProjectPermissionsByMember;
13
+ exports.findGloablPermissionsByMember = findGloablPermissionsByMember;
13
14
  /**
14
15
  * プロジェクトメンバーの権限を検索する
15
16
  */
16
- function searchPermissions(params) {
17
+ function findProjectPermissionsByMember(params) {
17
18
  return (repos) => __awaiter(this, void 0, void 0, function* () {
18
19
  let permissions = [];
19
- const hasRole = yield repos.member.aggregateRoleNames({
20
+ // const hasRole = await repos.member.aggregateRoleNames({
21
+ const roleNames = yield repos.member.findRoleNamesByMember({
20
22
  project: { id: { $eq: params.project.id } },
21
23
  member: {
22
24
  id: { $eq: params.member.id },
@@ -26,9 +28,27 @@ function searchPermissions(params) {
26
28
  }
27
29
  }
28
30
  });
29
- if (hasRole.length > 0) {
30
- permissions = yield repos.role.aggregatePermissions({ roleName: { $in: hasRole.map((r) => r.roleName) } });
31
+ if (roleNames.length > 0) {
32
+ // permissions = await repos.role.aggregatePermissions({ roleName: { $in: hasRole.map((r) => r.roleName) } });
33
+ permissions = yield repos.role.findUniquePermissionsByRoleName({ roleName: { $in: roleNames } });
31
34
  }
32
- return { hasRole, permissions };
35
+ return { roleNames, permissions };
36
+ });
37
+ }
38
+ /**
39
+ * グローバル権限を検索する
40
+ */
41
+ function findGloablPermissionsByMember(params) {
42
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
43
+ let permissions = [];
44
+ const roleNames = yield repos.member.findGlobalRoleNamesByMember({
45
+ member: {
46
+ id: { $eq: params.member.id }
47
+ }
48
+ });
49
+ if (roleNames.length > 0) {
50
+ permissions = yield repos.role.findUniquePermissionsByRoleName({ roleName: { $in: roleNames } });
51
+ }
52
+ return { roleNames, permissions };
33
53
  });
34
54
  }
@@ -0,0 +1,15 @@
1
+ import { SendGridCredentials } from '../../credentials/sendGrid';
2
+ import type { TaskRepo } from '../../repo/task';
3
+ import { Settings } from '../../settings';
4
+ /**
5
+ * 中止されたタスクリストをEメールで通知する
6
+ * add(2025-03-13~)
7
+ */
8
+ declare function notifyAbortedTasksByEmail(params: {
9
+ dateAbortedGte: Date;
10
+ }): (repos: {
11
+ task: TaskRepo;
12
+ }, settings: Pick<Settings, "abortedTasksWithoutReport">, credentials: {
13
+ sendGrid: SendGridCredentials;
14
+ }) => Promise<void>;
15
+ export { notifyAbortedTasksByEmail };
@@ -0,0 +1,38 @@
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.notifyAbortedTasksByEmail = notifyAbortedTasksByEmail;
13
+ const createDebug = require("debug");
14
+ const factory = require("../../factory");
15
+ const factory_1 = require("./factory");
16
+ const notifyByEmail_1 = require("./notifyByEmail");
17
+ const debug = createDebug('chevre-domain:service:notification');
18
+ /**
19
+ * 中止されたタスクリストをEメールで通知する
20
+ * add(2025-03-13~)
21
+ */
22
+ function notifyAbortedTasksByEmail(params) {
23
+ return (repos, settings, credentials) => __awaiter(this, void 0, void 0, function* () {
24
+ const { abortedTasksWithoutReport } = settings;
25
+ const abortedTasks = yield repos.task.projectFields(Object.assign({ status: { $eq: factory.taskStatus.Aborted }, dateAborted: { $gte: params.dateAbortedGte } }, (abortedTasksWithoutReport.length > 0)
26
+ ? { name: { $nin: abortedTasksWithoutReport } }
27
+ : undefined), []);
28
+ if (abortedTasks.length > 0) {
29
+ // 開発者へ報告
30
+ const message = (0, factory_1.tasks2lineNotify)({ tasks: abortedTasks });
31
+ const notifyResult = yield (0, notifyByEmail_1.notifyByEmail)({
32
+ subject: message.subject, content: message.content,
33
+ logLevel: 'error'
34
+ })({}, credentials);
35
+ debug('notifyResult:', notifyResult);
36
+ }
37
+ });
38
+ }
@@ -1,4 +1,5 @@
1
+ import { notifyAbortedTasksByEmail } from './notification/notifyAbortedTasksByEmail';
1
2
  import { notifyByEmail } from './notification/notifyByEmail';
2
3
  import { sendEmailMessage } from './notification/sendEmailMessage';
3
4
  import { triggerWebhook } from './notification/triggerWebhook';
4
- export { notifyByEmail, sendEmailMessage, triggerWebhook };
5
+ export { notifyAbortedTasksByEmail, notifyByEmail, sendEmailMessage, triggerWebhook };
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.triggerWebhook = exports.sendEmailMessage = exports.notifyByEmail = void 0;
3
+ exports.triggerWebhook = exports.sendEmailMessage = exports.notifyByEmail = exports.notifyAbortedTasksByEmail = void 0;
4
+ const notifyAbortedTasksByEmail_1 = require("./notification/notifyAbortedTasksByEmail");
5
+ Object.defineProperty(exports, "notifyAbortedTasksByEmail", { enumerable: true, get: function () { return notifyAbortedTasksByEmail_1.notifyAbortedTasksByEmail; } });
4
6
  const notifyByEmail_1 = require("./notification/notifyByEmail");
5
7
  Object.defineProperty(exports, "notifyByEmail", { enumerable: true, get: function () { return notifyByEmail_1.notifyByEmail; } });
6
8
  const sendEmailMessage_1 = require("./notification/sendEmailMessage");