@chevre/domain 21.30.0-alpha.35 → 21.30.0-alpha.37

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.
@@ -52,5 +52,6 @@ export declare const credentials: {
52
52
  */
53
53
  issuers: string[];
54
54
  version: string;
55
+ payloadTypPrefix: string;
55
56
  };
56
57
  };
@@ -64,6 +64,7 @@ exports.credentials = {
64
64
  issuers: (typeof process.env.TOKEN_ISSUERS_BY_AUTHORIZATION === 'string')
65
65
  ? process.env.TOKEN_ISSUERS_BY_AUTHORIZATION.split(' ')
66
66
  : [],
67
- version: (typeof process.env.TOKEN_VERSION === 'string') ? process.env.TOKEN_VERSION : '2024-05-02' // 追加(2024-05-02~)
67
+ version: (typeof process.env.TOKEN_VERSION === 'string') ? process.env.TOKEN_VERSION : '2024-05-02',
68
+ payloadTypPrefix: (typeof process.env.TOKEN_PAYLOAD_TYP_PREFIX === 'string') ? process.env.TOKEN_PAYLOAD_TYP_PREFIX : 'chevre'
68
69
  }
69
70
  };
@@ -9,11 +9,11 @@ interface IPayload {
9
9
  iss: string;
10
10
  exp: number;
11
11
  version: string;
12
- 'chevre:typeOf': factory.authorization.IAuthorization['typeOf'];
12
+ typ: string;
13
13
  }
14
14
  type IPayloadWithNoVersion = factory.authorization.IObject & {
15
15
  version?: never;
16
- 'chevre:typeOf'?: never;
16
+ typ?: never;
17
17
  };
18
18
  /**
19
19
  * コードをトークンに変換する
@@ -45,5 +45,5 @@ declare function verifyToken(params: {
45
45
  }): (repos: {
46
46
  action?: ActionRepo;
47
47
  authorization: AuthorizationRepo;
48
- }) => Promise<factory.authorization.IObject>;
48
+ }) => Promise<factory.authorization.IObject | import("@chevre/factory/lib/action/authorize/offer/eventService").IPurpose>;
49
49
  export { IToken, ICode, IPayload, IPayloadWithNoVersion, getToken, verifyToken };
@@ -33,10 +33,12 @@ function getToken(params) {
33
33
  project: { id: params.project.id },
34
34
  code: params.code
35
35
  });
36
- const isAuthorize4order = (!Array.isArray(authorization.object) && authorization.object.typeOf === factory.order.OrderType.Order);
36
+ const isAuthorize4order = authorization.object.typeOf === factory.order.OrderType.Order;
37
37
  const payload = Object.assign(Object.assign({}, (settings_1.USE_TOKEN_WITH_NO_VERSION && isAuthorize4order) ? authorization.object : undefined), {
38
38
  // sub: authorization.id, // 拡張(2024-05-01~)
39
- token_use: 'access', version: credentials_1.credentials.jwt.version, 'chevre:typeOf': authorization.typeOf // 拡張(2024-05-01~)
39
+ token_use: 'access', version: credentials_1.credentials.jwt.version,
40
+ // 'chevre:typeOf': authorization.typeOf // 拡張(2024-05-01~)
41
+ typ: `${credentials_1.credentials.jwt.payloadTypPrefix}:${authorization.typeOf}` // 拡張(2024-05-07~)
40
42
  });
41
43
  if (typeof params.issuer !== 'string' || params.issuer.length === 0) {
42
44
  throw new factory.errors.ArgumentNull('issuer');
@@ -120,11 +122,26 @@ function verifyToken(params) {
120
122
  if (typeof payload.sub !== 'string' || payload.sub.length === 0) {
121
123
  throw new factory.errors.Unauthorized(`invalid token [sub:${payload.sub}]`);
122
124
  }
123
- const { object } = yield repos.authorization.findValidOneById({
124
- project: { id: params.project.id },
125
- id: payload.sub
126
- });
127
- result = object;
125
+ // sskts.purposeTokenに対応
126
+ let resourceTypeByPayload;
127
+ if (typeof payload.typ === 'string') {
128
+ resourceTypeByPayload = payload.typ.split(`${credentials_1.credentials.jwt.payloadTypPrefix}:`)
129
+ .at(1);
130
+ }
131
+ if (resourceTypeByPayload === factory.transactionType.PlaceOrder) {
132
+ result = {
133
+ id: payload.sub,
134
+ typeOf: resourceTypeByPayload
135
+ };
136
+ }
137
+ else {
138
+ // 基本的には承認を参照
139
+ const { object } = yield repos.authorization.findValidOneById({
140
+ project: { id: params.project.id },
141
+ id: payload.sub
142
+ });
143
+ result = object;
144
+ }
128
145
  }
129
146
  else {
130
147
  // NO_VERSIONを廃止(2024-05-06~)
@@ -2,7 +2,7 @@ import * as factory from '../../../factory';
2
2
  import type { MongoRepository as TaskRepo } from '../../../repo/task';
3
3
  type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'potentialActions'>;
4
4
  declare function onOrderDelivered(params: {
5
- order: Pick<factory.order.IOrder, 'id' | 'customer' | 'orderDate' | 'orderNumber' | 'project' | 'typeOf'> & {
5
+ order: Pick<factory.order.IOrder, 'id' | 'customer' | 'orderDate' | 'orderNumber' | 'project' | 'typeOf' | 'price' | 'priceCurrency'> & {
6
6
  orderStatus: factory.orderStatus.OrderDelivered;
7
7
  };
8
8
  placeOrderTransaction?: IPlaceOrderTransaction;
@@ -39,7 +39,10 @@ function onOrderDelivered(params) {
39
39
  yield repos.task.saveMany(tasks, { emitImmediately: true });
40
40
  switch (params.order.orderStatus) {
41
41
  case factory.orderStatus.OrderDelivered:
42
- yield (0, createSendEmailMessageTaskIfNotExist_1.createSendEmailMessageTaskIfNotExist)({ potentialActions: sendOrderPotentialActions })(repos);
42
+ yield (0, createSendEmailMessageTaskIfNotExist_1.createSendEmailMessageTaskIfNotExist)({
43
+ potentialActions: sendOrderPotentialActions,
44
+ order: params.order
45
+ })(repos);
43
46
  break;
44
47
  default:
45
48
  throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
@@ -2,6 +2,7 @@ import type { MongoRepository as TaskRepo } from '../../../../repo/task';
2
2
  import * as factory from '../../../../factory';
3
3
  declare function createSendEmailMessageTaskIfNotExist(params: {
4
4
  potentialActions?: factory.action.transfer.send.order.IPotentialActions;
5
+ order: Pick<factory.order.IOrder, 'customer' | 'orderDate' | 'orderNumber' | 'price' | 'priceCurrency' | 'project' | 'typeOf'>;
5
6
  }): (repos: {
6
7
  task: TaskRepo;
7
8
  }) => Promise<void>;
@@ -19,19 +19,40 @@ function createSendEmailMessageTaskIfNotExist(params) {
19
19
  const now = new Date();
20
20
  if (Array.isArray(sendEmailMessageActions)) {
21
21
  yield Promise.all(sendEmailMessageActions.map((sendEmailMessageAction, index) => __awaiter(this, void 0, void 0, function* () {
22
- const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s', sendEmailMessageAction.project.id, factory.taskName.SendEmailMessage, sendEmailMessageAction.purpose.typeOf, sendEmailMessageAction.purpose.orderNumber, factory.orderStatus.OrderProcessing, index);
22
+ const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s',
23
+ // sendEmailMessageAction.project.id,
24
+ params.order.project.id, factory.taskName.SendEmailMessage,
25
+ // sendEmailMessageAction.purpose.typeOf,
26
+ // sendEmailMessageAction.purpose.orderNumber,
27
+ params.order.typeOf, params.order.orderNumber, factory.orderStatus.OrderProcessing, index);
28
+ // const actionAttributes: factory.task.sendEmailMessage.IData['actionAttributes'] = sendEmailMessageAction;
29
+ const simpleOrder = {
30
+ typeOf: params.order.typeOf,
31
+ orderNumber: params.order.orderNumber,
32
+ price: params.order.price,
33
+ priceCurrency: params.order.priceCurrency,
34
+ orderDate: params.order.orderDate
35
+ };
36
+ const actionAttributes = {
37
+ project: params.order.project,
38
+ typeOf: factory.actionType.SendAction,
39
+ object: sendEmailMessageAction.object,
40
+ agent: params.order.project,
41
+ recipient: { typeOf: params.order.customer.typeOf, id: params.order.customer.id },
42
+ potentialActions: {},
43
+ purpose: simpleOrder
44
+ };
23
45
  const sendEmailMessageTask = {
24
46
  identifier: taskIdentifier,
25
- project: sendEmailMessageAction.project,
47
+ // project: sendEmailMessageAction.project,
48
+ project: params.order.project,
26
49
  name: factory.taskName.SendEmailMessage,
27
50
  status: factory.taskStatus.Ready,
28
51
  runsAt: now,
29
52
  remainingNumberOfTries: 10,
30
53
  numberOfTried: 0,
31
54
  executionResults: [],
32
- data: {
33
- actionAttributes: sendEmailMessageAction
34
- }
55
+ data: { actionAttributes }
35
56
  };
36
57
  yield repos.task.createIfNotExistByIdentifier(sendEmailMessageTask, { emitImmediately: true });
37
58
  })));
@@ -70,7 +70,10 @@ function onOrderProcessing(params) {
70
70
  // })(repos);
71
71
  // OrderProcessingにおけるEメール送信に対応(2024-01-17~)
72
72
  if (settings_1.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING) {
73
- yield (0, createSendEmailMessageTaskIfNotExist_1.createSendEmailMessageTaskIfNotExist)({ potentialActions: sendOrderPotentialActions })(repos);
73
+ yield (0, createSendEmailMessageTaskIfNotExist_1.createSendEmailMessageTaskIfNotExist)({
74
+ potentialActions: sendOrderPotentialActions,
75
+ order: params.order
76
+ })(repos);
74
77
  }
75
78
  break;
76
79
  default:
@@ -155,7 +155,9 @@ function sendOrder(params) {
155
155
  orderNumber: order.orderNumber,
156
156
  project: order.project,
157
157
  typeOf: order.typeOf,
158
- orderStatus: factory.orderStatus.OrderDelivered
158
+ orderStatus: factory.orderStatus.OrderDelivered,
159
+ price: order.price,
160
+ priceCurrency: order.priceCurrency
159
161
  },
160
162
  placeOrderTransaction
161
163
  })({
@@ -25,9 +25,6 @@ function findByCode(params) {
25
25
  project: { id: params.project.id },
26
26
  code: params.code
27
27
  });
28
- if (Array.isArray(authorization.object)) {
29
- throw new factory.errors.NotImplemented('payload as an array not implemented');
30
- }
31
28
  switch (authorization.object.typeOf) {
32
29
  case factory.order.OrderType.Order:
33
30
  const { orderNumber } = authorization.object;
@@ -21,50 +21,36 @@ const debug = createDebug('chevre-domain:service:reserve:useReservation');
21
21
  // tslint:disable-next-line:max-func-body-length
22
22
  function useReservation(params) {
23
23
  return (repos) => __awaiter(this, void 0, void 0, function* () {
24
- var _a, _b, _c;
24
+ var _a, _b, _c, _d;
25
25
  const now = new Date();
26
26
  const reservationId = params.object.id;
27
27
  const ticketToken = (_a = params === null || params === void 0 ? void 0 : params.instrument) === null || _a === void 0 ? void 0 : _a.ticketToken;
28
28
  const token = (_b = params === null || params === void 0 ? void 0 : params.instrument) === null || _b === void 0 ? void 0 : _b.token;
29
- // タスク作成前に検証済なので検証不要
30
- // if (params.verifyToken === true) {
31
- // // instrument?.tokenを検証
32
- // if (typeof token === 'string') {
33
- // await verifyToken4reservation({
34
- // project: { id: params.project.id },
35
- // agent: params.agent,
36
- // reservationId,
37
- // token
38
- // })({ order: repos.order });
39
- // }
40
- // }
29
+ // if (params.verifyToken === true) {} // タスク作成前に検証済なので検証不要
41
30
  // confirmReservationが間に合わない可能性を考慮する(2023-06-01~)
42
31
  yield reserveIfNotYet({ object: params.object })(repos);
43
32
  // 予約検索
44
- // 取得属性最適化(2023-01-30~)
45
33
  const reservation = yield repos.reservation.findById({
46
34
  id: reservationId,
47
35
  inclusion: ['_id', 'issuedThrough', 'project', 'reservationFor', 'reservationNumber', 'reservedTicket', 'typeOf']
48
36
  });
49
37
  // UseActionを作成する
38
+ // optimize(2024-05-07~)
39
+ // const reservationAsObject: IReservationAsUseObject = {
40
+ // id: reservation.id, issuedThrough: reservation.issuedThrough, reservationFor: reservation.reservationFor,
41
+ // reservationNumber: reservation.reservationNumber, reservedTicket: reservation.reservedTicket, typeOf: reservation.typeOf
42
+ // };
43
+ const { reservedTicket } = reservation;
50
44
  const reservationAsObject = {
51
45
  id: reservation.id,
52
- issuedThrough: reservation.issuedThrough,
53
- reservationFor: reservation.reservationFor,
54
46
  reservationNumber: reservation.reservationNumber,
55
- reservedTicket: reservation.reservedTicket,
56
- typeOf: reservation.typeOf
47
+ typeOf: reservation.typeOf,
48
+ issuedThrough: { id: reservation.issuedThrough.id, typeOf: reservation.issuedThrough.typeOf },
49
+ reservationFor: { id: reservation.reservationFor.id, typeOf: reservation.reservationFor.typeOf },
50
+ reservedTicket: Object.assign(Object.assign({ typeOf: reservedTicket.typeOf, ticketType: Object.assign({ identifier: reservedTicket.ticketType.identifier, typeOf: reservedTicket.ticketType.typeOf }, (typeof reservedTicket.ticketType.id === 'string') ? { id: reservedTicket.ticketType.id } : undefined) }, (typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined), (typeof ((_c = reservedTicket.ticketedSeat) === null || _c === void 0 ? void 0 : _c.typeOf) === 'string') ? { ticketedSeat: reservedTicket.ticketedSeat } : undefined)
57
51
  };
58
- const actionAttributes = Object.assign({ project: reservation.project, typeOf: factory.actionType.UseAction, agent: params.agent, instrument: Object.assign(Object.assign(Object.assign({}, (typeof token === 'string') ? { token } : undefined), (typeof ticketToken === 'string') ? { ticketToken } : undefined), { typeOf: factory.action.check.token.ObjectType.Ticket }),
59
- // object最適化(2023-01-30~)
60
- // どの予約を
61
- object: [reservationAsObject] }, (typeof ((_c = params.location) === null || _c === void 0 ? void 0 : _c.identifier) === 'string')
62
- ? {
63
- location: {
64
- typeOf: factory.placeType.Place,
65
- identifier: params.location.identifier
66
- }
67
- }
52
+ const actionAttributes = Object.assign({ project: reservation.project, typeOf: factory.actionType.UseAction, agent: params.agent, instrument: Object.assign(Object.assign(Object.assign({}, (typeof token === 'string') ? { token } : undefined), (typeof ticketToken === 'string') ? { ticketToken } : undefined), { typeOf: factory.action.check.token.ObjectType.Ticket }), object: [reservationAsObject] }, (typeof ((_d = params.location) === null || _d === void 0 ? void 0 : _d.identifier) === 'string')
53
+ ? { location: { typeOf: factory.placeType.Place, identifier: params.location.identifier } }
68
54
  : undefined);
69
55
  const action = yield repos.action.start(actionAttributes);
70
56
  // ひとまず予約数:1に限定する
@@ -85,10 +71,8 @@ function useReservation(params) {
85
71
  }
86
72
  throw error;
87
73
  }
88
- // アクション完了
89
74
  yield repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: {} });
90
75
  yield (0, onReservationUsed_1.onReservationUsed)(attendedReservation)({ task: repos.task });
91
- // return action;
92
76
  });
93
77
  }
94
78
  exports.useReservation = useReservation;
@@ -37,9 +37,6 @@ function verifyToken4reservation(params) {
37
37
  else {
38
38
  throw new factory.errors.ArgumentNull('ticket.token or ticket.ticketToken');
39
39
  }
40
- if (Array.isArray(payload)) {
41
- throw new factory.errors.NotImplemented('payload as an array not implemented');
42
- }
43
40
  switch (payload.typeOf) {
44
41
  case factory.order.OrderType.Order:
45
42
  const { orderNumber } = payload;
@@ -53,9 +53,6 @@ function onAuthorizationCreated(params) {
53
53
  code: params.code,
54
54
  project: { id: params.project.id }
55
55
  });
56
- if (Array.isArray(authorization.object)) {
57
- return;
58
- }
59
56
  switch (authorization.object.typeOf) {
60
57
  case factory.order.OrderType.Order:
61
58
  // 注文検索
@@ -6,5 +6,5 @@ export declare function createSendEmailMessageActions(params: {
6
6
  useOptimizedSendEmailAction: boolean;
7
7
  }): Promise<{
8
8
  emailMessages: factory.action.transfer.send.message.email.IObjectAsEmailMessage[];
9
- sendEmailMessageActions: factory.action.transfer.send.message.email.IAttributes[];
9
+ sendEmailMessageActions: factory.action.transfer.send.order.ISendEmailMessage[];
10
10
  }>;
@@ -17,14 +17,15 @@ function createSendEmailMessageActions(params) {
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
18
  // 注文配送メール送信設定
19
19
  const emailMessages = [];
20
+ // const sendEmailMessageActions: factory.action.transfer.send.message.email.IAttributes[] = [];
20
21
  const sendEmailMessageActions = [];
21
- const sendActionPurpose = {
22
- typeOf: params.order.typeOf,
23
- orderNumber: params.order.orderNumber,
24
- price: params.order.price,
25
- priceCurrency: params.order.priceCurrency,
26
- orderDate: params.order.orderDate
27
- };
22
+ // const sendActionPurpose: factory.action.transfer.send.message.email.IPurpose = {
23
+ // typeOf: params.order.typeOf,
24
+ // orderNumber: params.order.orderNumber,
25
+ // price: params.order.price,
26
+ // priceCurrency: params.order.priceCurrency,
27
+ // orderDate: params.order.orderDate
28
+ // };
28
29
  const sendEmailMessageOnOrderSentParams = (_e = (_d = (_c = (_b = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.order) === null || _b === void 0 ? void 0 : _b.potentialActions) === null || _c === void 0 ? void 0 : _c.sendOrder) === null || _d === void 0 ? void 0 : _d.potentialActions) === null || _e === void 0 ? void 0 : _e.sendEmailMessage;
29
30
  if (Array.isArray(sendEmailMessageOnOrderSentParams)) {
30
31
  yield Promise.all(sendEmailMessageOnOrderSentParams.map((s, index) => __awaiter(this, void 0, void 0, function* () {
@@ -38,17 +39,18 @@ function createSendEmailMessageActions(params) {
38
39
  typeOf: factory.creativeWorkType.EmailMessage
39
40
  };
40
41
  }
42
+ // optimize(2024-05-07~)
41
43
  sendEmailMessageActions.push({
42
- project: params.order.project,
43
- typeOf: factory.actionType.SendAction,
44
- object: sendEmailMessageActionObject,
45
- agent: params.order.project,
46
- recipient: {
47
- typeOf: params.order.customer.typeOf,
48
- id: params.order.customer.id
49
- },
50
- potentialActions: {},
51
- purpose: sendActionPurpose
44
+ // project: params.order.project,
45
+ // typeOf: factory.actionType.SendAction,
46
+ object: sendEmailMessageActionObject
47
+ // agent: params.order.project,
48
+ // recipient: {
49
+ // typeOf: params.order.customer.typeOf,
50
+ // id: params.order.customer.id
51
+ // },
52
+ // potentialActions: {},
53
+ // purpose: sendActionPurpose
52
54
  });
53
55
  })));
54
56
  }
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "@aws-sdk/credential-providers": "3.433.0",
13
- "@chevre/factory": "4.369.0-alpha.7",
13
+ "@chevre/factory": "4.369.0-alpha.9",
14
14
  "@cinerino/sdk": "5.18.0-alpha.19",
15
15
  "@motionpicture/coa-service": "9.4.0",
16
16
  "@motionpicture/gmo-service": "5.3.0",
@@ -110,5 +110,5 @@
110
110
  "postversion": "git push origin --tags",
111
111
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
112
112
  },
113
- "version": "21.30.0-alpha.35"
113
+ "version": "21.30.0-alpha.37"
114
114
  }