@chevre/domain 24.0.0-alpha.50 → 24.0.0-alpha.52

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.
@@ -51,7 +51,7 @@ export declare class PaymentServiceRepo {
51
51
  * payment service ID
52
52
  */
53
53
  id: string;
54
- }): Promise<Pick<factory.service.paymentService.IAvailableChannel, 'totalPaymentDue' | 'typeOf' | 'id'> & Pick<factory.serviceChannel.IServiceChannel, 'serviceUrl'> & {
54
+ }): Promise<Pick<factory.service.paymentService.IAvailableChannelCreditCard, 'totalPaymentDue' | 'typeOf' | 'id'> & Pick<factory.serviceChannel.IServiceChannel, 'serviceUrl'> & {
55
55
  id: string;
56
56
  credentials: factory.serviceChannel.ICredentialsCreditCard;
57
57
  }>;
@@ -63,7 +63,7 @@ export declare class PaymentServiceRepo {
63
63
  * payment service ID
64
64
  */
65
65
  id: string;
66
- }): Promise<Pick<factory.service.paymentService.IAvailableChannel, 'totalPaymentDue' | 'typeOf' | 'id'> & Pick<factory.serviceChannel.IServiceChannel, 'serviceUrl'> & {
66
+ }): Promise<Pick<factory.service.paymentService.IAvailableChannelMovieTicket, 'totalPaymentDue' | 'typeOf' | 'id'> & Pick<factory.serviceChannel.IServiceChannel, 'serviceUrl'> & {
67
67
  id: string;
68
68
  credentials: factory.serviceChannel.ICredentialsMovieTicket;
69
69
  }>;
@@ -5,6 +5,7 @@ import type { AcceptPayActionRepo } from '../../../repo/action/acceptPay';
5
5
  import type { AuthorizeInvoiceActionRepo } from '../../../repo/action/authorizeInvoice';
6
6
  import type { EventRepo } from '../../../repo/event';
7
7
  import type { EventSeriesRepo } from '../../../repo/eventSeries';
8
+ import type { IssuerRepo } from '../../../repo/issuer';
8
9
  import type { PaymentServiceRepo } from '../../../repo/paymentService';
9
10
  import type { PaymentServiceProviderRepo } from '../../../repo/paymentServiceProvider';
10
11
  import type { SellerPaymentAcceptedRepo } from '../../../repo/sellerPaymentAccepted';
@@ -15,6 +16,7 @@ export interface IPublishPaymentUrlRepos {
15
16
  acceptPayAction: AcceptPayActionRepo;
16
17
  event: EventRepo;
17
18
  eventSeries: EventSeriesRepo;
19
+ issuer: IssuerRepo;
18
20
  paymentAccepted: SellerPaymentAcceptedRepo;
19
21
  paymentService: PaymentServiceRepo;
20
22
  paymentServiceProvider: PaymentServiceProviderRepo;
@@ -2,20 +2,17 @@ import * as factory from '../../../../../factory';
2
2
  import type { AcceptedPaymentMethodRepo } from '../../../../../repo/acceptedPaymentMethod';
3
3
  import type { EventRepo } from '../../../../../repo/event';
4
4
  import type { EventSeriesRepo } from '../../../../../repo/eventSeries';
5
+ import type { IssuerRepo } from '../../../../../repo/issuer';
6
+ import type { PaymentServiceRepo } from '../../../../../repo/paymentService';
5
7
  /**
6
8
  * 必要あらば関連リソースの対応決済方法を検証する
7
9
  */
8
10
  export declare function validateAcceptedPaymentMethodIfNeeded(params: Pick<factory.assetTransaction.pay.IStartParamsWithoutDetail, 'object'> & {
9
11
  instrument: factory.action.trade.pay.IPlaceOrderRelatedInstrument[];
10
- } | {
11
- object: factory.action.accept.pay.IPayObject & {
12
- paymentMethod: factory.action.accept.pay.IPaymentMethod & {
13
- movieTickets: never;
14
- };
15
- };
16
- instrument: factory.action.accept.pay.IInstrument[];
17
12
  }): (repos: {
18
13
  acceptedPaymentMethod: AcceptedPaymentMethodRepo;
19
14
  event: EventRepo;
20
15
  eventSeries: EventSeriesRepo;
16
+ issuer: IssuerRepo;
17
+ paymentService: PaymentServiceRepo;
21
18
  }) => Promise<void>;
@@ -28,18 +28,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.validateAcceptedPaymentMethodIfNeeded = validateAcceptedPaymentMethodIfNeeded;
30
30
  const debug_1 = __importDefault(require("debug"));
31
+ // import * as jwt from 'jsonwebtoken';
31
32
  const factory = __importStar(require("../../../../../factory"));
32
33
  const debug = (0, debug_1.default)('chevre-domain:service:assetTransaction:pay');
33
34
  /**
34
35
  * 必要あらば関連リソースの対応決済方法を検証する
35
36
  */
36
- function validateAcceptedPaymentMethodIfNeeded(params) {
37
+ function validateAcceptedPaymentMethodIfNeeded(params
38
+ // | {
39
+ // object: factory.action.accept.pay.IPayObject & {
40
+ // paymentMethod: factory.action.accept.pay.IPaymentMethod & {
41
+ // movieTickets: never;
42
+ // };
43
+ // };
44
+ // instrument: factory.action.accept.pay.IInstrument[];
45
+ // }
46
+ ) {
37
47
  return async (repos) => {
38
48
  const now = new Date();
39
49
  /**
40
50
  * 検証対象のイベントIDリスト
41
51
  */
42
52
  let checkingEventIds;
53
+ let paymentService;
43
54
  const paymentServiceType = params.object.typeOf;
44
55
  const paymentServiceId = params.object.id;
45
56
  // CreditCard or MovieTicket?
@@ -49,6 +60,16 @@ function validateAcceptedPaymentMethodIfNeeded(params) {
49
60
  if (Array.isArray(orderedItems)) {
50
61
  checkingEventIds = orderedItems.map((orderedItem) => orderedItem.orderedItem.serviceOutput.reservationFor.id);
51
62
  }
63
+ paymentService = (await repos.paymentService.projectFields({
64
+ limit: 1,
65
+ page: 1,
66
+ // project: { id: { $eq: params.project.id } },
67
+ typeOf: { $eq: paymentServiceType },
68
+ id: { $eq: paymentServiceId }
69
+ }, ['availableChannel', 'serviceType'])).shift();
70
+ if (paymentService === undefined) {
71
+ throw new factory.errors.NotFound(factory.service.paymentService.PaymentServiceType.CreditCard);
72
+ }
52
73
  }
53
74
  else if (paymentServiceType === factory.service.paymentService.PaymentServiceType.MovieTicket) {
54
75
  const movieTickets = params.object.paymentMethod.movieTickets;
@@ -59,12 +80,22 @@ function validateAcceptedPaymentMethodIfNeeded(params) {
59
80
  throw new factory.errors.Argument('movieTickets', 'Number of events must be 1');
60
81
  }
61
82
  }
83
+ paymentService = (await repos.paymentService.projectFields({
84
+ limit: 1,
85
+ page: 1,
86
+ // project: { id: { $eq: params.project.id } },
87
+ typeOf: { $eq: paymentServiceType },
88
+ id: { $eq: paymentServiceId }
89
+ }, ['availableChannel', 'serviceType'])).shift();
90
+ if (paymentService === undefined) {
91
+ throw new factory.errors.NotFound(factory.service.paymentService.PaymentServiceType.MovieTicket);
92
+ }
62
93
  }
63
94
  else {
64
95
  // 対面決済ではひとまず対応決済方法検証なし
65
96
  }
66
97
  debug('validateAcceptedPaymentMethodIfNeeded: checkingEventIds:', checkingEventIds, paymentServiceType);
67
- if (Array.isArray(checkingEventIds)) {
98
+ if (Array.isArray(checkingEventIds) && paymentService !== undefined) {
68
99
  // 検証対象のイベントIDが存在する場合、その数が0ということはありえない
69
100
  if (checkingEventIds.length === 0) {
70
101
  throw new factory.errors.ArgumentNull('object.serviceOutput.referencesOrder.orderedItem');
@@ -81,47 +112,235 @@ function validateAcceptedPaymentMethodIfNeeded(params) {
81
112
  }
82
113
  const uniqueEventSeriesIds = [...new Set(eventSeriesIds)];
83
114
  debug('validateAcceptedPaymentMethodIfNeeded: eventSeries with AggregateOffer?', uniqueEventSeriesIds);
84
- for (const eventSeriesId of uniqueEventSeriesIds) {
85
- const eventSeries = (await repos.eventSeries.projectEventSeriesFields({
86
- limit: 1,
87
- page: 1,
88
- id: { $eq: eventSeriesId }
89
- }, ['offers'])).shift();
90
- if (eventSeries === undefined) {
91
- throw new factory.errors.NotFound(factory.eventType.ScreeningEventSeries);
92
- }
93
- if (eventSeries.offers?.typeOf === factory.offerType.AggregateOffer) {
94
- // 対応決済方法オファーIDの指定が必要
95
- const acceptedPaymentMethodOfferIds = [];
96
- params.instrument.forEach((instrument) => {
97
- if (instrument.typeOf === factory.offerType.Offer) {
98
- acceptedPaymentMethodOfferIds.push(instrument.id);
99
- }
100
- });
101
- if (acceptedPaymentMethodOfferIds.length === 0) {
102
- throw new factory.errors.ArgumentNull('acceptedPaymentMethodOfferIds');
103
- }
104
- // 全施設コンテンツについて有効な対応決済方法オファーの存在を検証
105
- const validAcceptedPaymentMethodOffer = (await repos.acceptedPaymentMethod.findAcceptedPaymentMethods({
106
- limit: 1,
107
- page: 1,
108
- id: { $in: acceptedPaymentMethodOfferIds }, // 指定されたIDで
109
- itemOffered: { id: { $eq: eventSeriesId } }, // リソースに対して
110
- acceptedPaymentMethod: { id: { $eq: paymentServiceId } }, // 決済方法を許可
111
- validFrom: { $lte: now }, // 現在有効
112
- validThrough: { $gte: now } // 現在有効
113
- }, ['identifier'])).shift();
114
- if (validAcceptedPaymentMethodOffer === undefined) {
115
- throw new factory.errors.NotFound(factory.offerType.Offer, `payment not accepted. eventSeriesId: ${eventSeriesId}`);
116
- }
117
- }
118
- else {
119
- // 集約オファーでなければ検証の必要なし
120
- }
115
+ // 決済方法に設定されたカスタム検証URLに依存する場合はこちら↓
116
+ const customValidationUrl = paymentService.availableChannel?.customValidationUrl;
117
+ if (typeof customValidationUrl === 'string' && customValidationUrl !== '') {
118
+ await validateByCustomUrl({
119
+ customValidationUrl,
120
+ eventSeriesIds: uniqueEventSeriesIds,
121
+ paymentMethodType: paymentService.serviceType.codeValue,
122
+ // amount: number,
123
+ now
124
+ });
121
125
  }
126
+ // トークンで検証する場合はこち↓
127
+ // // 指定された全トークンを抽出
128
+ // const acceptedPaymentMethodOfferTokens: string[] = [];
129
+ // params.instrument.forEach((instrument) => {
130
+ // if (instrument.typeOf === factory.offerType.Offer) {
131
+ // acceptedPaymentMethodOfferTokens.push(instrument.id);
132
+ // }
133
+ // });
134
+ // await validateAllItemTokens(
135
+ // paymentServiceId,
136
+ // uniqueEventSeriesIds,
137
+ // acceptedPaymentMethodOfferTokens,
138
+ // now
139
+ // )(repos);
122
140
  }
123
141
  else {
124
142
  // 関連注文の指定がなければ検証の必要なし
125
143
  }
126
144
  };
127
145
  }
146
+ const TIMEOUT = 2000;
147
+ // interface ICustomValidationResponse {
148
+ // isAllowed: boolean;
149
+ // };
150
+ async function validateByCustomUrl(params) {
151
+ try {
152
+ // 判定エンジンへのリクエスト
153
+ const validationRequest = {
154
+ eventSeriesIds: params.eventSeriesIds,
155
+ paymentMethodType: params.paymentMethodType,
156
+ // amount: params.amount
157
+ };
158
+ const res = await fetch(params.customValidationUrl, {
159
+ method: 'POST',
160
+ headers: { 'Content-Type': 'application/json' },
161
+ body: JSON.stringify(validationRequest),
162
+ // body data type must match "Content-Type" header
163
+ signal: AbortSignal.timeout(TIMEOUT)
164
+ });
165
+ if (!res.ok) {
166
+ throw new factory.errors.Argument('paymentMethod', `paymentMethod denied by the customValidation. statusCode: ${res.status}`);
167
+ }
168
+ }
169
+ catch (error) {
170
+ // ネットワークエラーやタイムアウト時のハンドリング
171
+ // サービス継続を優先するか、安全側に倒してエラーにするかはポリシー次第
172
+ debug('Custom validation failed:', error.message);
173
+ throw error;
174
+ }
175
+ }
176
+ // /**
177
+ // * トークンのペイロード構造
178
+ // */
179
+ // interface IPaymentOfferPayload extends Pick<factory.acceptedPaymentMethodOffer.IAcceptedPaymentMethodOffer, 'acceptedPaymentMethod' | 'itemOffered' | 'validFrom' | 'validThrough'> {
180
+ // iss: string;
181
+ // // sub: string; // 商品ID
182
+ // // paymentOffer: {
183
+ // // allowedMethods: string[];
184
+ // // limitAmount: number;
185
+ // // currency: string;
186
+ // // };
187
+ // }
188
+ // async function verifyOfferToken(params: {
189
+ // token: string;
190
+ // secret: string;
191
+ // issuer?: string;
192
+ // }): Promise<IPaymentOfferPayload> {
193
+ // let result: IPaymentOfferPayload;
194
+ // const { issuer, secret, token } = params;
195
+ // try {
196
+ // result = await new Promise<IPaymentOfferPayload>((resolve, reject) => {
197
+ // jwt.verify(
198
+ // token,
199
+ // secret,
200
+ // {
201
+ // algorithms: ['HS256'],
202
+ // issuer
203
+ // // ...(Array.isArray(params.audience)) ? { audience: params.audience } : undefined
204
+ // },
205
+ // (err, decoded: any) => {
206
+ // if (err instanceof Error) {
207
+ // reject(err);
208
+ // } else {
209
+ // resolve(decoded);
210
+ // }
211
+ // });
212
+ // });
213
+ // } catch (error) {
214
+ // // JWTエラーをハンドリング
215
+ // if (error instanceof jwt.TokenExpiredError) {
216
+ // throw new factory.errors.Argument('token', `invalid token. [${error.message} expiredAt:${error.expiredAt}]`);
217
+ // } else if (error instanceof jwt.JsonWebTokenError) {
218
+ // throw new factory.errors.Argument('token', `invalid token. [${error.message}]`);
219
+ // }
220
+ // throw error;
221
+ // }
222
+ // return result;
223
+ // }
224
+ // /**
225
+ // * 複数アイテムのトークン検証メイン関数
226
+ // */
227
+ // function validateAllItemTokens(
228
+ // selectedMethodId: string, // ユーザーが選択した決済方法ID
229
+ // eventSeriesIds: string[], // DBから取得した注文商品リスト
230
+ // providedTokens: string[], // クライアントから送られたJWT配列
231
+ // now: Date
232
+ // ) {
233
+ // return async (repos: {
234
+ // eventSeries: EventSeriesRepo;
235
+ // issuer: IssuerRepo;
236
+ // }) => {
237
+ // // 1. トークンをデコードして、商品ID(sub)をキーにしたマップを作成
238
+ // // ※ここでは署名検証前なので、decodeのみ行う
239
+ // const tokenMap = new Map<string, string>();
240
+ // providedTokens.forEach(t => {
241
+ // try {
242
+ // const decoded = jwt.decode(t) as IPaymentOfferPayload;
243
+ // if (decoded && typeof decoded.itemOffered?.id === 'string') {
244
+ // tokenMap.set(decoded.itemOffered.id, t);
245
+ // }
246
+ // } catch {
247
+ // // no op
248
+ // }
249
+ // });
250
+ // // 2. 全アイテムについてループを回して検証
251
+ // for (const eventSeriesId of eventSeriesIds) {
252
+ // const eventSeries = (await repos.eventSeries.projectEventSeriesFields(
253
+ // {
254
+ // limit: 1,
255
+ // page: 1,
256
+ // id: { $eq: eventSeriesId }
257
+ // },
258
+ // ['offers', 'project']
259
+ // )).shift();
260
+ // if (eventSeries === undefined) {
261
+ // throw new factory.errors.NotFound(factory.eventType.ScreeningEventSeries);
262
+ // }
263
+ // if (eventSeries.offers?.typeOf === factory.offerType.AggregateOffer) {
264
+ // // // 対応決済方法オファーIDの指定が必要
265
+ // // const acceptedPaymentMethodOfferTokens: string[] = [];
266
+ // // // const acceptedPaymentMethodOfferIds: string[] = [];
267
+ // // params.instrument.forEach((instrument) => {
268
+ // // if (instrument.typeOf === factory.offerType.Offer) {
269
+ // // acceptedPaymentMethodOfferTokens.push(instrument.id);
270
+ // // // acceptedPaymentMethodOfferIds.push(instrument.id);
271
+ // // }
272
+ // // });
273
+ // // if (acceptedPaymentMethodOfferTokens.length === 0) {
274
+ // // throw new factory.errors.ArgumentNull('acceptedPaymentMethodOfferTokens');
275
+ // // }
276
+ // // // if (acceptedPaymentMethodOfferIds.length === 0) {
277
+ // // // throw new factory.errors.ArgumentNull('acceptedPaymentMethodOfferIds');
278
+ // // // }
279
+ // const token = tokenMap.get(eventSeriesId);
280
+ // if (!token) {
281
+ // // throw new Error(`商品[${eventSeriesId}]の決済許可トークンが不足しています。`);
282
+ // throw new factory.errors.ArgumentNull(
283
+ // factory.offerType.Offer,
284
+ // `token required. eventSeriesId: ${eventSeriesId}`
285
+ // );
286
+ // }
287
+ // console.log('check token...:', token);
288
+ // // 3. 既存の「発行者管理」から公開鍵を取得
289
+ // const issuerCode = 'DefaultTokenIssuer';
290
+ // const issuer = await repos.issuer.findByIdentifier({
291
+ // project: { id: eventSeries.project.id },
292
+ // identifier: issuerCode
293
+ // });
294
+ // if (typeof issuer.tokenSecret !== 'string' || issuer.tokenSecret === '') {
295
+ // throw new factory.errors.NotFound('issuer.tokenSecret');
296
+ // }
297
+ // const verifiedOffer = await verifyOfferToken({
298
+ // secret: issuer.tokenSecret,
299
+ // issuer: issuer.url,
300
+ // token
301
+ // });
302
+ // // 5. ビジネスルールの厳密な検証
303
+ // // (a) トークン内の商品IDが、現在のアイテムと一致するか(すり替え防止)
304
+ // if (verifiedOffer.itemOffered.id !== eventSeriesId) {
305
+ // throw new factory.errors.Argument('token', `invalid token. [itemOffered.id not matched]`);
306
+ // }
307
+ // // (b) 選択された決済方法が、この商品の許可リストに含まれているか
308
+ // if (verifiedOffer.acceptedPaymentMethod.id !== selectedMethodId) {
309
+ // throw new factory.errors.NotFound(
310
+ // factory.offerType.Offer,
311
+ // `payment not accepted. eventSeriesId: ${eventSeriesId}`
312
+ // );
313
+ // }
314
+ // // // (c) 金額の検証(判定時より金額が上がっていないか)
315
+ // // if (item.amount > payload.paymentOffer.limitAmount) {
316
+ // // throw new Error(`商品[${item.productId}]の金額が承認された上限を超えています。`);
317
+ // // }
318
+ // // 現在有効検証
319
+ // console.log('check validFrom?:', now);
320
+ // // // 全施設コンテンツについて有効な対応決済方法オファーの存在を検証
321
+ // // const validAcceptedPaymentMethodOffer = (await repos.acceptedPaymentMethod.findAcceptedPaymentMethods(
322
+ // // {
323
+ // // limit: 1,
324
+ // // page: 1,
325
+ // // id: { $in: acceptedPaymentMethodOfferIds }, // 指定されたIDで
326
+ // // itemOffered: { id: { $eq: eventSeriesId } }, // リソースに対して
327
+ // // acceptedPaymentMethod: { id: { $eq: paymentServiceId } }, // 決済方法を許可
328
+ // // validFrom: { $lte: now }, // 現在有効
329
+ // // validThrough: { $gte: now } // 現在有効
330
+ // // },
331
+ // // ['identifier']
332
+ // // )).shift();
333
+ // // if (validAcceptedPaymentMethodOffer === undefined) {
334
+ // // throw new factory.errors.NotFound(
335
+ // // factory.offerType.Offer,
336
+ // // `payment not accepted. eventSeriesId: ${eventSeriesId}`
337
+ // // );
338
+ // // }
339
+ // } else {
340
+ // // 集約オファーでなければ検証の必要なし
341
+ // }
342
+ // }
343
+ // // 全てのアイテムで検証が通れば true
344
+ // return true;
345
+ // }
346
+ // }
@@ -10,6 +10,7 @@ import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
10
10
  import type { CredentialsRepo } from '../../../repo/credentials';
11
11
  import type { EventRepo } from '../../../repo/event';
12
12
  import type { EventSeriesRepo } from '../../../repo/eventSeries';
13
+ import type { IssuerRepo } from '../../../repo/issuer';
13
14
  import type { PaymentServiceRepo } from '../../../repo/paymentService';
14
15
  import type { PaymentServiceProviderRepo } from '../../../repo/paymentServiceProvider';
15
16
  import type { PotentialActionRepo } from '../../../repo/potentialAction';
@@ -29,6 +30,7 @@ export interface IStartOperationRepos {
29
30
  authorizeInvoiceAction: AuthorizeInvoiceActionRepo;
30
31
  credentials: CredentialsRepo;
31
32
  event: EventRepo;
33
+ issuer: IssuerRepo;
32
34
  eventSeries: EventSeriesRepo;
33
35
  paymentAccepted: SellerPaymentAcceptedRepo;
34
36
  paymentService: PaymentServiceRepo;
@@ -14,6 +14,7 @@ import type { ConfirmationNumberRepo } from '../../../repo/confirmationNumber';
14
14
  import type { CredentialsRepo } from '../../../repo/credentials';
15
15
  import type { EventRepo } from '../../../repo/event';
16
16
  import type { EventSeriesRepo } from '../../../repo/eventSeries';
17
+ import type { IssuerRepo } from '../../../repo/issuer';
17
18
  import type { OrderNumberRepo } from '../../../repo/orderNumber';
18
19
  import type { PaymentServiceRepo } from '../../../repo/paymentService';
19
20
  import type { PaymentServiceProviderRepo } from '../../../repo/paymentServiceProvider';
@@ -43,6 +44,7 @@ interface IAuthorizeRepos {
43
44
  credentials: CredentialsRepo;
44
45
  event: EventRepo;
45
46
  eventSeries: EventSeriesRepo;
47
+ issuer: IssuerRepo;
46
48
  orderNumber: OrderNumberRepo;
47
49
  paymentAccepted: SellerPaymentAcceptedRepo;
48
50
  paymentService: PaymentServiceRepo;
@@ -7,6 +7,7 @@ import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
7
7
  import type { AuthorizationRepo } from '../../../repo/authorization';
8
8
  import type { EventRepo } from '../../../repo/event';
9
9
  import type { EventSeriesRepo } from '../../../repo/eventSeries';
10
+ import type { IssuerRepo } from '../../../repo/issuer';
10
11
  import type { OrderNumberRepo } from '../../../repo/orderNumber';
11
12
  import type { PaymentServiceRepo } from '../../../repo/paymentService';
12
13
  import type { PaymentServiceProviderRepo } from '../../../repo/paymentServiceProvider';
@@ -24,6 +25,7 @@ interface IPublishPaymentUrlRepos {
24
25
  authorization: AuthorizationRepo;
25
26
  event: EventRepo;
26
27
  eventSeries: EventSeriesRepo;
28
+ issuer: IssuerRepo;
27
29
  orderNumber: OrderNumberRepo;
28
30
  paymentAccepted: SellerPaymentAcceptedRepo;
29
31
  paymentService: PaymentServiceRepo;
@@ -40,6 +40,7 @@ const confirmationNumber_1 = require("../../repo/confirmationNumber");
40
40
  const credentials_1 = require("../../repo/credentials");
41
41
  const event_1 = require("../../repo/event");
42
42
  const eventSeries_1 = require("../../repo/eventSeries");
43
+ const issuer_1 = require("../../repo/issuer");
43
44
  const orderNumber_1 = require("../../repo/orderNumber");
44
45
  const paymentService_1 = require("../../repo/paymentService");
45
46
  const paymentServiceProvider_1 = require("../../repo/paymentServiceProvider");
@@ -100,6 +101,7 @@ function call(params) {
100
101
  }),
101
102
  event: new event_1.EventRepo(connection),
102
103
  eventSeries: new eventSeries_1.EventSeriesRepo(connection),
104
+ issuer: new issuer_1.IssuerRepo(connection),
103
105
  orderNumber: new orderNumber_1.OrderNumberRepo({ connection }),
104
106
  paymentAccepted: new sellerPaymentAccepted_1.SellerPaymentAcceptedRepo(connection),
105
107
  paymentService: new paymentService_1.PaymentServiceRepo(connection),
@@ -33,6 +33,7 @@ const assetTransaction_1 = require("../../repo/assetTransaction");
33
33
  const authorization_1 = require("../../repo/authorization");
34
34
  const event_1 = require("../../repo/event");
35
35
  const eventSeries_1 = require("../../repo/eventSeries");
36
+ const issuer_1 = require("../../repo/issuer");
36
37
  const orderNumber_1 = require("../../repo/orderNumber");
37
38
  const paymentService_1 = require("../../repo/paymentService");
38
39
  const paymentServiceProvider_1 = require("../../repo/paymentServiceProvider");
@@ -72,6 +73,7 @@ function call(params) {
72
73
  authorization: new authorization_1.AuthorizationRepo(connection),
73
74
  event: new event_1.EventRepo(connection),
74
75
  eventSeries: new eventSeries_1.EventSeriesRepo(connection),
76
+ issuer: new issuer_1.IssuerRepo(connection),
75
77
  orderNumber: new orderNumber_1.OrderNumberRepo({ connection }),
76
78
  paymentAccepted: new sellerPaymentAccepted_1.SellerPaymentAcceptedRepo(connection),
77
79
  paymentService: new paymentService_1.PaymentServiceRepo(connection),
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-cognito-identity-provider": "3.600.0",
13
13
  "@aws-sdk/credential-providers": "3.600.0",
14
- "@chevre/factory": "6.2.0-alpha.0",
14
+ "@chevre/factory": "6.2.0-alpha.2",
15
15
  "@cinerino/sdk": "13.4.0-alpha.0",
16
16
  "@motionpicture/coa-service": "9.6.0",
17
17
  "@motionpicture/gmo-service": "5.4.0-alpha.1",
@@ -99,5 +99,5 @@
99
99
  "postversion": "git push origin --tags",
100
100
  "prepublishOnly": "npm run clean && npm run build"
101
101
  },
102
- "version": "24.0.0-alpha.50"
102
+ "version": "24.0.0-alpha.52"
103
103
  }