@chevre/domain 24.0.0-alpha.81 → 24.0.0-alpha.83
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.
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +0 -1
- package/lib/chevre/repository.d.ts +0 -10
- package/lib/chevre/repository.js +2 -24
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +0 -2
- package/lib/chevre/service/assetTransaction/reserve/start.js +0 -1
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.d.ts +0 -3
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +1 -11
- package/lib/chevre/service/notification/triggerWebhook.js +43 -48
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +0 -2
- package/lib/chevre/service/offer/event/authorize.d.ts +0 -2
- package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +1 -3
- package/lib/chevre/service/offer/event/issueEventOfferTicket.js +11 -13
- package/lib/chevre/service/payment/creditCard/authorize/handleAuthorizeError.js +2 -7
- package/lib/chevre/service/payment/creditCard/gmoError.d.ts +1 -31
- package/lib/chevre/service/payment/creditCard/refundCreditCard.js +2 -2
- package/lib/chevre/service/payment/creditCard/searchGMOTrade.js +1 -1
- package/lib/chevre/service/payment/creditCard/voidTransaction.js +1 -1
- package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.d.ts +0 -2
- package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.js +0 -6
- package/lib/chevre/service/task/onResourceDeleted.js +0 -2
- package/lib/chevre/service/task/onResourceUpdated.js +0 -2
- package/package.json +3 -3
- package/lib/chevre/repo/comment.d.ts +0 -42
- package/lib/chevre/repo/comment.js +0 -121
- package/lib/chevre/repo/mongoose/schemas/comments.d.ts +0 -11
- package/lib/chevre/repo/mongoose/schemas/comments.js +0 -103
- package/lib/chevre/repo/mongoose/schemas/productOffer.d.ts +0 -14
- package/lib/chevre/repo/mongoose/schemas/productOffer.js +0 -108
- package/lib/chevre/repo/productOffer.d.ts +0 -52
- package/lib/chevre/repo/productOffer.js +0 -209
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.d.ts +0 -16
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.js +0 -129
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateMemberTierIfExists = validateMemberTierIfExists;
|
|
7
|
-
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
8
|
-
const moment_1 = __importDefault(require("moment"));
|
|
9
|
-
const factory_1 = require("../../../../factory");
|
|
10
|
-
function validateMemberTier(params) {
|
|
11
|
-
return async (repos) => {
|
|
12
|
-
const { acceptedDate, event, verifiedValidForMemberTier, memberProgramIdentifierMustBe, aggregateOfferIdentifier } = params;
|
|
13
|
-
const tierIdentifier = verifiedValidForMemberTier.member?.memberOf?.identifier;
|
|
14
|
-
const memberProgramIdentifier = verifiedValidForMemberTier.member?.memberOf?.isTierOf?.identifier;
|
|
15
|
-
if (typeof tierIdentifier !== 'string') {
|
|
16
|
-
throw new factory_1.factory.errors.Argument('ticketedOffer.validForMemberTier', 'tier identifier must be string');
|
|
17
|
-
}
|
|
18
|
-
if (typeof memberProgramIdentifier !== 'string') {
|
|
19
|
-
throw new factory_1.factory.errors.Argument('ticketedOffer.validForMemberTier', 'member program must be string');
|
|
20
|
-
}
|
|
21
|
-
if (memberProgramIdentifier !== memberProgramIdentifierMustBe) {
|
|
22
|
-
throw new factory_1.factory.errors.Argument('ticketedOffer.validForMemberTier', 'member program not matched');
|
|
23
|
-
}
|
|
24
|
-
const sellerId = event.offers.seller.id;
|
|
25
|
-
if (typeof sellerId !== 'string' || sellerId === '') {
|
|
26
|
-
throw new factory_1.factory.errors.NotFound('event.offers.seller.id');
|
|
27
|
-
}
|
|
28
|
-
// 有効なプロダクトオファーを検証
|
|
29
|
-
const productOfferForMemberTier = (await repos.productOffer.findProductOffers({
|
|
30
|
-
limit: 1,
|
|
31
|
-
page: 1,
|
|
32
|
-
project: { id: { $eq: event.project.id } },
|
|
33
|
-
// availableAtOrFrom: { id: { $eq: availableAt.id } },
|
|
34
|
-
itemOffered: { identifier: { $eq: aggregateOfferIdentifier } }, // オファーコレクションコード
|
|
35
|
-
validForMemberTier: { identifier: { $eq: tierIdentifier } },
|
|
36
|
-
validFrom: { $lte: acceptedDate.toDate() },
|
|
37
|
-
validThrough: { $gte: acceptedDate.toDate() },
|
|
38
|
-
offeredBy: { id: { $eq: sellerId } } // オファー提供者も検証する
|
|
39
|
-
}, ['identifier'])).shift();
|
|
40
|
-
if (productOfferForMemberTier === undefined) {
|
|
41
|
-
throw new factory_1.factory.errors.NotFound(factory_1.factory.offerType.Offer, 'valid product offers for member tier not found');
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
async function verifyMemberTierToken(params) {
|
|
46
|
-
let result;
|
|
47
|
-
const { issuer, secret, token } = params;
|
|
48
|
-
try {
|
|
49
|
-
result = await new Promise((resolve, reject) => {
|
|
50
|
-
(0, jsonwebtoken_1.verify)(token, secret, {
|
|
51
|
-
algorithms: ['HS256'],
|
|
52
|
-
issuer
|
|
53
|
-
// ...(Array.isArray(params.audience)) ? { audience: params.audience } : undefined
|
|
54
|
-
}, (err, decoded) => {
|
|
55
|
-
if (err instanceof Error) {
|
|
56
|
-
reject(err);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
resolve(decoded);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// JWTエラーをハンドリング
|
|
66
|
-
if (error instanceof jsonwebtoken_1.TokenExpiredError) {
|
|
67
|
-
throw new factory_1.factory.errors.Argument('ticketedOffer.validForMemberTier', `invalid token. [${error.message} expiredAt:${error.expiredAt}]`);
|
|
68
|
-
}
|
|
69
|
-
else if (error instanceof jsonwebtoken_1.JsonWebTokenError) {
|
|
70
|
-
throw new factory_1.factory.errors.Argument('ticketedOffer.validForMemberTier', `invalid token. [${error.message}]`);
|
|
71
|
-
}
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
|
-
function validateMemberTierIfExists(params) {
|
|
77
|
-
return async (repos) => {
|
|
78
|
-
const { event, makesOfferOnApplication } = params;
|
|
79
|
-
const acceptedDate = (0, moment_1.default)(params.now);
|
|
80
|
-
const eventOffers = event.offers;
|
|
81
|
-
// 有効メンバープログラムティアが存在する場合
|
|
82
|
-
// support validForMemberTier(2025-05-14~)
|
|
83
|
-
const validForMemberTierExists = makesOfferOnApplication.validForMemberTier?.typeOf === 'MemberProgramTier';
|
|
84
|
-
if (validForMemberTierExists) {
|
|
85
|
-
const tokenizedMemberProgramTier = params.acceptedEventOffer?.validForMemberTier;
|
|
86
|
-
const validForMemberTierToken = tokenizedMemberProgramTier?.token;
|
|
87
|
-
const memberProgramIdentifierMustBe = tokenizedMemberProgramTier?.isTierOf?.identifier;
|
|
88
|
-
// ティアトークンが必須
|
|
89
|
-
if (typeof validForMemberTierToken !== 'string' || validForMemberTierToken === '') {
|
|
90
|
-
throw new factory_1.factory.errors.ArgumentNull('ticketedOffer.validForMemberTier.token');
|
|
91
|
-
}
|
|
92
|
-
// メンバープログラムコード指定が必須
|
|
93
|
-
if (typeof memberProgramIdentifierMustBe !== 'string' || memberProgramIdentifierMustBe === '') {
|
|
94
|
-
throw new factory_1.factory.errors.ArgumentNull('ticketedOffer.validForMemberTier.isTierOf.identifier');
|
|
95
|
-
}
|
|
96
|
-
// 有効メンバープログラムティアが存在する場合、オファーコレクションコードが必須
|
|
97
|
-
const aggregateOfferIdentifier = eventOffers.identifier;
|
|
98
|
-
if (typeof aggregateOfferIdentifier !== 'string' || aggregateOfferIdentifier === '') {
|
|
99
|
-
throw new factory_1.factory.errors.NotFound('makesOfferOnApplication.identifier');
|
|
100
|
-
}
|
|
101
|
-
// トークン検証
|
|
102
|
-
const memberProgram = (await repos.memberProgram.projectMemberPrograms({
|
|
103
|
-
limit: 1,
|
|
104
|
-
page: 1,
|
|
105
|
-
project: { id: { $eq: params.event.project.id } },
|
|
106
|
-
identifier: { $eq: memberProgramIdentifierMustBe }
|
|
107
|
-
})).shift();
|
|
108
|
-
if (memberProgram === undefined) {
|
|
109
|
-
throw new factory_1.factory.errors.NotFound('MemberProgram', `MemberProgram '${memberProgramIdentifierMustBe}' not found`);
|
|
110
|
-
}
|
|
111
|
-
const issuer = await repos.issuer.findByIdentifier({
|
|
112
|
-
project: { id: params.event.project.id },
|
|
113
|
-
identifier: memberProgram.hostingOrganization.identifier
|
|
114
|
-
});
|
|
115
|
-
if (typeof issuer.tokenSecret !== 'string' || issuer.tokenSecret === '') {
|
|
116
|
-
throw new factory_1.factory.errors.NotFound('issuer.tokenSecret');
|
|
117
|
-
}
|
|
118
|
-
const verifiedValidForMemberTier = await verifyMemberTierToken({
|
|
119
|
-
secret: issuer.tokenSecret,
|
|
120
|
-
issuer: issuer.url,
|
|
121
|
-
token: validForMemberTierToken
|
|
122
|
-
});
|
|
123
|
-
await validateMemberTier({
|
|
124
|
-
event, acceptedDate, verifiedValidForMemberTier,
|
|
125
|
-
memberProgramIdentifierMustBe, aggregateOfferIdentifier
|
|
126
|
-
})(repos);
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
}
|