nestjs-monobank 1.2.8
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/LICENSE +661 -0
- package/README.md +18 -0
- package/dist/common/enums/discount.enum.d.ts +24 -0
- package/dist/common/enums/discount.enum.js +2 -0
- package/dist/common/enums/index.d.ts +1 -0
- package/dist/common/enums/index.js +17 -0
- package/dist/common/interfaces/common.interface.d.ts +177 -0
- package/dist/common/interfaces/common.interface.js +2 -0
- package/dist/common/interfaces/index.d.ts +2 -0
- package/dist/common/interfaces/index.js +18 -0
- package/dist/common/interfaces/monobank-options.interface.d.ts +15 -0
- package/dist/common/interfaces/monobank-options.interface.js +4 -0
- package/dist/core/config/monobank.constants.d.ts +1 -0
- package/dist/core/config/monobank.constants.js +4 -0
- package/dist/core/http/monobank.error.d.ts +6 -0
- package/dist/core/http/monobank.error.js +13 -0
- package/dist/core/http/monobank.http-client.d.ts +16 -0
- package/dist/core/http/monobank.http-client.js +66 -0
- package/dist/core/http/monobank.interceptor.d.ts +2 -0
- package/dist/core/http/monobank.interceptor.js +19 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/modules/invoice/enums/cancel-status.enum.d.ts +18 -0
- package/dist/modules/invoice/enums/cancel-status.enum.js +22 -0
- package/dist/modules/invoice/enums/charge-status.enum.d.ts +14 -0
- package/dist/modules/invoice/enums/charge-status.enum.js +18 -0
- package/dist/modules/invoice/enums/index.d.ts +3 -0
- package/dist/modules/invoice/enums/index.js +19 -0
- package/dist/modules/invoice/enums/invoice-status.enum.d.ts +34 -0
- package/dist/modules/invoice/enums/invoice-status.enum.js +38 -0
- package/dist/modules/invoice/interfaces/index.d.ts +2 -0
- package/dist/modules/invoice/interfaces/index.js +18 -0
- package/dist/modules/invoice/interfaces/requests/create-cancel.request.d.ts +22 -0
- package/dist/modules/invoice/interfaces/requests/create-cancel.request.js +2 -0
- package/dist/modules/invoice/interfaces/requests/create-charge.request.d.ts +42 -0
- package/dist/modules/invoice/interfaces/requests/create-charge.request.js +2 -0
- package/dist/modules/invoice/interfaces/requests/create-finalize.request.d.ts +19 -0
- package/dist/modules/invoice/interfaces/requests/create-finalize.request.js +2 -0
- package/dist/modules/invoice/interfaces/requests/create-invoice.request.d.ts +88 -0
- package/dist/modules/invoice/interfaces/requests/create-invoice.request.js +2 -0
- package/dist/modules/invoice/interfaces/requests/index.d.ts +4 -0
- package/dist/modules/invoice/interfaces/requests/index.js +20 -0
- package/dist/modules/invoice/interfaces/responses/cancel.response.d.ts +18 -0
- package/dist/modules/invoice/interfaces/responses/cancel.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/charge.response.d.ts +35 -0
- package/dist/modules/invoice/interfaces/responses/charge.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/create-cancel.response.d.ts +7 -0
- package/dist/modules/invoice/interfaces/responses/create-cancel.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/create-charge.response.d.ts +7 -0
- package/dist/modules/invoice/interfaces/responses/create-charge.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/create-finalize.response.d.ts +7 -0
- package/dist/modules/invoice/interfaces/responses/create-finalize.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/create-invoice.response.d.ts +7 -0
- package/dist/modules/invoice/interfaces/responses/create-invoice.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/finalize.response.d.ts +9 -0
- package/dist/modules/invoice/interfaces/responses/finalize.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/fiscal-checks.response.d.ts +42 -0
- package/dist/modules/invoice/interfaces/responses/fiscal-checks.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/index.d.ts +9 -0
- package/dist/modules/invoice/interfaces/responses/index.js +25 -0
- package/dist/modules/invoice/interfaces/responses/invoice-status.response.d.ts +116 -0
- package/dist/modules/invoice/interfaces/responses/invoice-status.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/invoice.response.d.ts +13 -0
- package/dist/modules/invoice/interfaces/responses/invoice.response.js +2 -0
- package/dist/modules/invoice/interfaces/responses/receipt.response.d.ts +6 -0
- package/dist/modules/invoice/interfaces/responses/receipt.response.js +2 -0
- package/dist/modules/invoice/invoice.module.d.ts +2 -0
- package/dist/modules/invoice/invoice.module.js +20 -0
- package/dist/modules/invoice/invoice.service.d.ts +154 -0
- package/dist/modules/invoice/invoice.service.js +187 -0
- package/dist/modules/merchant/interfaces/index.d.ts +1 -0
- package/dist/modules/merchant/interfaces/index.js +17 -0
- package/dist/modules/merchant/interfaces/responses/index.d.ts +2 -0
- package/dist/modules/merchant/interfaces/responses/index.js +18 -0
- package/dist/modules/merchant/interfaces/responses/merchant.response.d.ts +17 -0
- package/dist/modules/merchant/interfaces/responses/merchant.response.js +2 -0
- package/dist/modules/merchant/interfaces/responses/pubkey.response.d.ts +10 -0
- package/dist/modules/merchant/interfaces/responses/pubkey.response.js +2 -0
- package/dist/modules/merchant/merchant.module.d.ts +2 -0
- package/dist/modules/merchant/merchant.module.js +20 -0
- package/dist/modules/merchant/merchant.service.d.ts +36 -0
- package/dist/modules/merchant/merchant.service.js +58 -0
- package/dist/modules/qr/enums/amount-type.enum.d.ts +11 -0
- package/dist/modules/qr/enums/amount-type.enum.js +15 -0
- package/dist/modules/qr/enums/index.d.ts +1 -0
- package/dist/modules/qr/enums/index.js +17 -0
- package/dist/modules/qr/interfaces/index.d.ts +0 -0
- package/dist/modules/qr/interfaces/index.js +0 -0
- package/dist/modules/qr/interfaces/responses/index.d.ts +2 -0
- package/dist/modules/qr/interfaces/responses/index.js +18 -0
- package/dist/modules/qr/interfaces/responses/list.response.d.ts +8 -0
- package/dist/modules/qr/interfaces/responses/list.response.js +2 -0
- package/dist/modules/qr/interfaces/responses/qr.response.d.ts +14 -0
- package/dist/modules/qr/interfaces/responses/qr.response.js +2 -0
- package/dist/modules/qr/qr.module.d.ts +2 -0
- package/dist/modules/qr/qr.module.js +20 -0
- package/dist/modules/qr/qr.service.d.ts +32 -0
- package/dist/modules/qr/qr.service.js +56 -0
- package/dist/modules/statement/interfaces/index.d.ts +1 -0
- package/dist/modules/statement/interfaces/index.js +17 -0
- package/dist/modules/statement/interfaces/responses/index.d.ts +1 -0
- package/dist/modules/statement/interfaces/responses/index.js +17 -0
- package/dist/modules/statement/interfaces/responses/statement.response.d.ts +99 -0
- package/dist/modules/statement/interfaces/responses/statement.response.js +2 -0
- package/dist/modules/statement/statement.module.d.ts +2 -0
- package/dist/modules/statement/statement.module.js +20 -0
- package/dist/modules/statement/statement.service.d.ts +17 -0
- package/dist/modules/statement/statement.service.js +38 -0
- package/dist/modules/subscription/enums/index.d.ts +2 -0
- package/dist/modules/subscription/enums/index.js +18 -0
- package/dist/modules/subscription/enums/subscription-status.enum.d.ts +13 -0
- package/dist/modules/subscription/enums/subscription-status.enum.js +17 -0
- package/dist/modules/subscription/enums/wallet-status.enum.d.ts +17 -0
- package/dist/modules/subscription/enums/wallet-status.enum.js +21 -0
- package/dist/modules/subscription/interfaces/index.d.ts +2 -0
- package/dist/modules/subscription/interfaces/index.js +18 -0
- package/dist/modules/subscription/interfaces/requests/client-subscriptions.request.d.ts +26 -0
- package/dist/modules/subscription/interfaces/requests/client-subscriptions.request.js +2 -0
- package/dist/modules/subscription/interfaces/requests/create-subscription.request.d.ts +32 -0
- package/dist/modules/subscription/interfaces/requests/create-subscription.request.js +2 -0
- package/dist/modules/subscription/interfaces/requests/edit-subscription.request.d.ts +18 -0
- package/dist/modules/subscription/interfaces/requests/edit-subscription.request.js +2 -0
- package/dist/modules/subscription/interfaces/requests/history.request.d.ts +15 -0
- package/dist/modules/subscription/interfaces/requests/history.request.js +2 -0
- package/dist/modules/subscription/interfaces/requests/index.d.ts +4 -0
- package/dist/modules/subscription/interfaces/requests/index.js +20 -0
- package/dist/modules/subscription/interfaces/responses/client-subscriptions.response.d.ts +27 -0
- package/dist/modules/subscription/interfaces/responses/client-subscriptions.response.js +2 -0
- package/dist/modules/subscription/interfaces/responses/create-subscription.response.d.ts +5 -0
- package/dist/modules/subscription/interfaces/responses/create-subscription.response.js +2 -0
- package/dist/modules/subscription/interfaces/responses/history.response.d.ts +9 -0
- package/dist/modules/subscription/interfaces/responses/history.response.js +2 -0
- package/dist/modules/subscription/interfaces/responses/index.d.ts +5 -0
- package/dist/modules/subscription/interfaces/responses/index.js +21 -0
- package/dist/modules/subscription/interfaces/responses/subscription-status.response.d.ts +29 -0
- package/dist/modules/subscription/interfaces/responses/subscription-status.response.js +2 -0
- package/dist/modules/subscription/interfaces/responses/subscription.response.d.ts +9 -0
- package/dist/modules/subscription/interfaces/responses/subscription.response.js +2 -0
- package/dist/modules/subscription/subscription.module.d.ts +2 -0
- package/dist/modules/subscription/subscription.module.js +20 -0
- package/dist/modules/subscription/subscription.service.d.ts +91 -0
- package/dist/modules/subscription/subscription.service.js +121 -0
- package/dist/modules/wallet/interfaces/index.d.ts +2 -0
- package/dist/modules/wallet/interfaces/index.js +18 -0
- package/dist/modules/wallet/interfaces/requests/create-card-token.request.d.ts +42 -0
- package/dist/modules/wallet/interfaces/requests/create-card-token.request.js +2 -0
- package/dist/modules/wallet/interfaces/requests/index.d.ts +1 -0
- package/dist/modules/wallet/interfaces/requests/index.js +17 -0
- package/dist/modules/wallet/interfaces/responses/card-token.response.d.ts +37 -0
- package/dist/modules/wallet/interfaces/responses/card-token.response.js +2 -0
- package/dist/modules/wallet/interfaces/responses/create-card-token.response.d.ts +7 -0
- package/dist/modules/wallet/interfaces/responses/create-card-token.response.js +2 -0
- package/dist/modules/wallet/interfaces/responses/index.d.ts +2 -0
- package/dist/modules/wallet/interfaces/responses/index.js +18 -0
- package/dist/modules/wallet/wallet.module.d.ts +2 -0
- package/dist/modules/wallet/wallet.module.js +20 -0
- package/dist/modules/wallet/wallet.service.d.ts +54 -0
- package/dist/modules/wallet/wallet.service.js +78 -0
- package/dist/modules/webhook/webhook.module.d.ts +2 -0
- package/dist/modules/webhook/webhook.module.js +24 -0
- package/dist/modules/webhook/webhook.service.d.ts +44 -0
- package/dist/modules/webhook/webhook.service.js +72 -0
- package/dist/monobank.module.d.ts +36 -0
- package/dist/monobank.module.js +117 -0
- package/dist/monobank.service.d.ts +17 -0
- package/dist/monobank.service.js +42 -0
- package/package.json +68 -0
- package/src/common/enums/discount.enum.ts +26 -0
- package/src/common/enums/index.ts +1 -0
- package/src/common/interfaces/common.interface.ts +206 -0
- package/src/common/interfaces/index.ts +2 -0
- package/src/common/interfaces/monobank-options.interface.ts +18 -0
- package/src/core/config/monobank.constants.ts +1 -0
- package/src/core/http/monobank.error.ts +10 -0
- package/src/core/http/monobank.http-client.ts +66 -0
- package/src/core/http/monobank.interceptor.ts +24 -0
- package/src/index.ts +3 -0
- package/src/modules/invoice/enums/cancel-status.enum.ts +20 -0
- package/src/modules/invoice/enums/charge-status.enum.ts +16 -0
- package/src/modules/invoice/enums/index.ts +3 -0
- package/src/modules/invoice/enums/invoice-status.enum.ts +40 -0
- package/src/modules/invoice/interfaces/index.ts +2 -0
- package/src/modules/invoice/interfaces/requests/create-cancel.request.ts +26 -0
- package/src/modules/invoice/interfaces/requests/create-charge.request.ts +52 -0
- package/src/modules/invoice/interfaces/requests/create-finalize.request.ts +22 -0
- package/src/modules/invoice/interfaces/requests/create-invoice.request.ts +103 -0
- package/src/modules/invoice/interfaces/requests/index.ts +4 -0
- package/src/modules/invoice/interfaces/responses/cancel.response.ts +21 -0
- package/src/modules/invoice/interfaces/responses/charge.response.ts +43 -0
- package/src/modules/invoice/interfaces/responses/create-cancel.response.ts +7 -0
- package/src/modules/invoice/interfaces/responses/create-charge.response.ts +7 -0
- package/src/modules/invoice/interfaces/responses/create-finalize.response.ts +7 -0
- package/src/modules/invoice/interfaces/responses/create-invoice.response.ts +7 -0
- package/src/modules/invoice/interfaces/responses/finalize.response.ts +9 -0
- package/src/modules/invoice/interfaces/responses/fiscal-checks.response.ts +49 -0
- package/src/modules/invoice/interfaces/responses/index.ts +10 -0
- package/src/modules/invoice/interfaces/responses/invoice-status.response.ts +142 -0
- package/src/modules/invoice/interfaces/responses/invoice.response.ts +14 -0
- package/src/modules/invoice/interfaces/responses/receipt.response.ts +6 -0
- package/src/modules/invoice/invoice.module.ts +8 -0
- package/src/modules/invoice/invoice.service.ts +191 -0
- package/src/modules/merchant/interfaces/index.ts +1 -0
- package/src/modules/merchant/interfaces/responses/index.ts +2 -0
- package/src/modules/merchant/interfaces/responses/merchant.response.ts +19 -0
- package/src/modules/merchant/interfaces/responses/pubkey.response.ts +10 -0
- package/src/modules/merchant/merchant.module.ts +8 -0
- package/src/modules/merchant/merchant.service.ts +46 -0
- package/src/modules/qr/enums/amount-type.enum.ts +13 -0
- package/src/modules/qr/enums/index.ts +1 -0
- package/src/modules/qr/interfaces/index.ts +0 -0
- package/src/modules/qr/interfaces/responses/index.ts +2 -0
- package/src/modules/qr/interfaces/responses/list.response.ts +11 -0
- package/src/modules/qr/interfaces/responses/qr.response.ts +18 -0
- package/src/modules/qr/qr.module.ts +8 -0
- package/src/modules/qr/qr.service.ts +43 -0
- package/src/modules/statement/interfaces/index.ts +1 -0
- package/src/modules/statement/interfaces/responses/index.ts +1 -0
- package/src/modules/statement/interfaces/responses/statement.response.ts +119 -0
- package/src/modules/statement/statement.module.ts +8 -0
- package/src/modules/statement/statement.service.ts +25 -0
- package/src/modules/subscription/enums/index.ts +2 -0
- package/src/modules/subscription/enums/subscription-status.enum.ts +14 -0
- package/src/modules/subscription/enums/wallet-status.enum.ts +19 -0
- package/src/modules/subscription/interfaces/index.ts +2 -0
- package/src/modules/subscription/interfaces/requests/client-subscriptions.request.ts +31 -0
- package/src/modules/subscription/interfaces/requests/create-subscription.request.ts +38 -0
- package/src/modules/subscription/interfaces/requests/edit-subscription.request.ts +20 -0
- package/src/modules/subscription/interfaces/requests/history.request.ts +20 -0
- package/src/modules/subscription/interfaces/requests/index.ts +4 -0
- package/src/modules/subscription/interfaces/responses/client-subscriptions.response.ts +36 -0
- package/src/modules/subscription/interfaces/responses/create-subscription.response.ts +6 -0
- package/src/modules/subscription/interfaces/responses/history.response.ts +12 -0
- package/src/modules/subscription/interfaces/responses/index.ts +5 -0
- package/src/modules/subscription/interfaces/responses/subscription-status.response.ts +40 -0
- package/src/modules/subscription/interfaces/responses/subscription.response.ts +11 -0
- package/src/modules/subscription/subscription.module.ts +8 -0
- package/src/modules/subscription/subscription.service.ts +121 -0
- package/src/modules/wallet/interfaces/index.ts +2 -0
- package/src/modules/wallet/interfaces/requests/create-card-token.request.ts +50 -0
- package/src/modules/wallet/interfaces/requests/index.ts +1 -0
- package/src/modules/wallet/interfaces/responses/card-token.response.ts +44 -0
- package/src/modules/wallet/interfaces/responses/create-card-token.response.ts +7 -0
- package/src/modules/wallet/interfaces/responses/index.ts +2 -0
- package/src/modules/wallet/wallet.module.ts +8 -0
- package/src/modules/wallet/wallet.service.ts +71 -0
- package/src/modules/webhook/webhook.module.ts +12 -0
- package/src/modules/webhook/webhook.service.ts +60 -0
- package/src/monobank.module.ts +115 -0
- package/src/monobank.service.ts +21 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.WalletService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const monobank_http_client_1 = require("../../core/http/monobank.http-client");
|
|
15
|
+
let WalletService = class WalletService {
|
|
16
|
+
constructor(http) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Створює токен картки (Card Token) для збереження платіжної картки.
|
|
21
|
+
*
|
|
22
|
+
* Використовується для:
|
|
23
|
+
* - привʼязки картки клієнта
|
|
24
|
+
* - повторних платежів без повторного введення реквізитів
|
|
25
|
+
* - роботи з wallet-платежами Monobank
|
|
26
|
+
*
|
|
27
|
+
* @param {CreateCardTokenRequest} data - Дані для створення токена картки.
|
|
28
|
+
* @returns {Promise<CreateCardTokenResponse>} Дані створеного токена картки.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* const data: CreateCardTokenRequest = {
|
|
32
|
+
* amount: 100,
|
|
33
|
+
* ccy: 980,
|
|
34
|
+
* redirectUrl: "https://example.com/success",
|
|
35
|
+
* webHookUrl: "https://example.com/webhook"
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* const token = await this.monobankService.wallet.create(data);
|
|
39
|
+
* console.log(token.cardToken);
|
|
40
|
+
*/
|
|
41
|
+
async create(data) {
|
|
42
|
+
return this.http.post("/merchant/wallet/payment", data);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Отримує інформацію про wallet за його ідентифікатором.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} id - Унікальний ідентифікатор wallet.
|
|
48
|
+
* @returns {Promise<CardTokenResponse>} Дані wallet (привʼязана картка, статус тощо).
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const wallet = await this.monobankService.wallet.getById("wlt_123456");
|
|
52
|
+
* console.log(wallet);
|
|
53
|
+
*/
|
|
54
|
+
async getById(id) {
|
|
55
|
+
return this.http.get(`/merchant/wallet?walletId=${id}`);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Видаляє привʼязану картку за токеном.
|
|
59
|
+
*
|
|
60
|
+
* Після видалення:
|
|
61
|
+
* - токен стає недійсним
|
|
62
|
+
* - повторні списання по цій картці неможливі
|
|
63
|
+
*
|
|
64
|
+
* @param {string} token - Токен картки (cardToken).
|
|
65
|
+
* @returns {Promise<void>} Результат операції видалення.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* await this.monobankService.wallet.deleteByToken("card_token_abc123");
|
|
69
|
+
*/
|
|
70
|
+
async deleteByToken(token) {
|
|
71
|
+
return this.http.delete(`/merchant/wallet/card?cardToken=${token}`);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.WalletService = WalletService;
|
|
75
|
+
exports.WalletService = WalletService = __decorate([
|
|
76
|
+
(0, common_1.Injectable)(),
|
|
77
|
+
__metadata("design:paramtypes", [monobank_http_client_1.MonobankHttpClient])
|
|
78
|
+
], WalletService);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.WebhookModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const webhook_service_1 = require("./webhook.service");
|
|
12
|
+
const merchant_module_1 = require("../merchant/merchant.module");
|
|
13
|
+
let WebhookModule = class WebhookModule {
|
|
14
|
+
};
|
|
15
|
+
exports.WebhookModule = WebhookModule;
|
|
16
|
+
exports.WebhookModule = WebhookModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [
|
|
19
|
+
merchant_module_1.MerchantModule
|
|
20
|
+
],
|
|
21
|
+
providers: [webhook_service_1.WebhookService],
|
|
22
|
+
exports: [webhook_service_1.WebhookService]
|
|
23
|
+
})
|
|
24
|
+
], WebhookModule);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MerchantService } from '../merchant/merchant.service';
|
|
2
|
+
export declare class WebhookService {
|
|
3
|
+
readonly merchant: MerchantService;
|
|
4
|
+
constructor(merchant: MerchantService);
|
|
5
|
+
/**
|
|
6
|
+
* Верифікує підпис webhook-повідомлення від Monobank.
|
|
7
|
+
*
|
|
8
|
+
* Метод:
|
|
9
|
+
* 1. Отримує публічний ключ мерчанта через Merchant API
|
|
10
|
+
* 2. Декодує підпис з Base64
|
|
11
|
+
* 3. Перевіряє цифровий підпис за алгоритмом SHA256
|
|
12
|
+
*
|
|
13
|
+
* Використовується для гарантії, що webhook:
|
|
14
|
+
* - дійсно надісланий Monobank
|
|
15
|
+
* - не був змінений під час передачі
|
|
16
|
+
*
|
|
17
|
+
* @param {Buffer} rawBody - Сире тіло HTTP-запиту (без JSON.parse).
|
|
18
|
+
* @param {string} xSignBase64 - Значення заголовка `X-Sign` у форматі Base64.
|
|
19
|
+
*
|
|
20
|
+
* @returns {Promise<boolean>}
|
|
21
|
+
* - `true` — підпис валідний
|
|
22
|
+
* - `false` — підпис невалідний
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // controller.ts
|
|
26
|
+
* @Post('/mono-webhook')
|
|
27
|
+
* async handleWebhook(
|
|
28
|
+
* @Headers('x-sign') xSign: string,
|
|
29
|
+
* @Req() req: RawBodyRequest<Request>
|
|
30
|
+
* ) {
|
|
31
|
+
* const isValid = await this.webhookService.verifyWebhookSignature(
|
|
32
|
+
* req.rawBody,
|
|
33
|
+
* xSign
|
|
34
|
+
* );
|
|
35
|
+
*
|
|
36
|
+
* if (!isValid) {
|
|
37
|
+
* throw new UnauthorizedException('Invalid webhook signature');
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* // обробка події
|
|
41
|
+
* }
|
|
42
|
+
*/
|
|
43
|
+
verifyWebhookSignature(rawBody: Buffer, xSignBase64: string): Promise<boolean>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.WebhookService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const merchant_service_1 = require("../merchant/merchant.service");
|
|
15
|
+
const crypto = require("crypto");
|
|
16
|
+
let WebhookService = class WebhookService {
|
|
17
|
+
constructor(merchant) {
|
|
18
|
+
this.merchant = merchant;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Верифікує підпис webhook-повідомлення від Monobank.
|
|
22
|
+
*
|
|
23
|
+
* Метод:
|
|
24
|
+
* 1. Отримує публічний ключ мерчанта через Merchant API
|
|
25
|
+
* 2. Декодує підпис з Base64
|
|
26
|
+
* 3. Перевіряє цифровий підпис за алгоритмом SHA256
|
|
27
|
+
*
|
|
28
|
+
* Використовується для гарантії, що webhook:
|
|
29
|
+
* - дійсно надісланий Monobank
|
|
30
|
+
* - не був змінений під час передачі
|
|
31
|
+
*
|
|
32
|
+
* @param {Buffer} rawBody - Сире тіло HTTP-запиту (без JSON.parse).
|
|
33
|
+
* @param {string} xSignBase64 - Значення заголовка `X-Sign` у форматі Base64.
|
|
34
|
+
*
|
|
35
|
+
* @returns {Promise<boolean>}
|
|
36
|
+
* - `true` — підпис валідний
|
|
37
|
+
* - `false` — підпис невалідний
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // controller.ts
|
|
41
|
+
* @Post('/mono-webhook')
|
|
42
|
+
* async handleWebhook(
|
|
43
|
+
* @Headers('x-sign') xSign: string,
|
|
44
|
+
* @Req() req: RawBodyRequest<Request>
|
|
45
|
+
* ) {
|
|
46
|
+
* const isValid = await this.webhookService.verifyWebhookSignature(
|
|
47
|
+
* req.rawBody,
|
|
48
|
+
* xSign
|
|
49
|
+
* );
|
|
50
|
+
*
|
|
51
|
+
* if (!isValid) {
|
|
52
|
+
* throw new UnauthorizedException('Invalid webhook signature');
|
|
53
|
+
* }
|
|
54
|
+
*
|
|
55
|
+
* // обробка події
|
|
56
|
+
* }
|
|
57
|
+
*/
|
|
58
|
+
async verifyWebhookSignature(rawBody, xSignBase64) {
|
|
59
|
+
const { key: publicKeyBase64 } = await this.merchant.getMerchantPubkey();
|
|
60
|
+
const sign = Buffer.from(xSignBase64, "base64");
|
|
61
|
+
const publicKey = Buffer.from(publicKeyBase64, "base64");
|
|
62
|
+
const verifier = crypto.createVerify("SHA256");
|
|
63
|
+
verifier.write(rawBody);
|
|
64
|
+
verifier.end();
|
|
65
|
+
return verifier.verify({ key: publicKey, format: "pem", type: "spki" }, sign);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.WebhookService = WebhookService;
|
|
69
|
+
exports.WebhookService = WebhookService = __decorate([
|
|
70
|
+
(0, common_1.Injectable)(),
|
|
71
|
+
__metadata("design:paramtypes", [merchant_service_1.MerchantService])
|
|
72
|
+
], WebhookService);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type DynamicModule } from "@nestjs/common";
|
|
2
|
+
import { type MonobankModuleAsyncOptions, type MonobankModuleOptions } from './common/interfaces';
|
|
3
|
+
export declare class MonobankModule {
|
|
4
|
+
/**
|
|
5
|
+
* Метод для реєстрації модуля з синхронними параметрами.
|
|
6
|
+
* Цей метод використовується для конфігурації модуля з наперед заданими параметрами.
|
|
7
|
+
* @param {MonobankModuleOptions} options - Налаштування для конфігурації Monobank API.
|
|
8
|
+
* @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* MonobankModule.forRoot({
|
|
13
|
+
* apiKey: configService.getOrThrow('MONOBANK_API_KEY')
|
|
14
|
+
* });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
static forRoot(options: MonobankModuleOptions): DynamicModule;
|
|
18
|
+
/**
|
|
19
|
+
* Метод для реєстрації модуля з асинхронною конфігурацією.
|
|
20
|
+
* Цей метод використовується для конфігурації модуля з параметрами, які будуть передані через фабричну функцію.
|
|
21
|
+
* @param {MonobankModuleAsyncOptions} options - Асинхронні параметри для конфігурації Monobank API.
|
|
22
|
+
* @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* MonobankModule.forRootAsync({
|
|
27
|
+
* imports: [ConfigModule],
|
|
28
|
+
* useFactory: async (configService: ConfigService) => ({
|
|
29
|
+
* apiKey: configService.getOrThrow('MONOBANK_API_KEY')
|
|
30
|
+
* }),
|
|
31
|
+
* inject: [ConfigService]
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
static forRootAsync(options: MonobankModuleAsyncOptions): DynamicModule;
|
|
36
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var MonobankModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MonobankModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const interfaces_1 = require("./common/interfaces");
|
|
13
|
+
const monobank_service_1 = require("./monobank.service");
|
|
14
|
+
const invoice_module_1 = require("./modules/invoice/invoice.module");
|
|
15
|
+
const merchant_module_1 = require("./modules/merchant/merchant.module");
|
|
16
|
+
const statement_module_1 = require("./modules/statement/statement.module");
|
|
17
|
+
const wallet_module_1 = require("./modules/wallet/wallet.module");
|
|
18
|
+
const webhook_module_1 = require("./modules/webhook/webhook.module");
|
|
19
|
+
const monobank_http_client_1 = require("./core/http/monobank.http-client");
|
|
20
|
+
const subscription_module_1 = require("./modules/subscription/subscription.module");
|
|
21
|
+
const qr_module_1 = require("./modules/qr/qr.module");
|
|
22
|
+
let MonobankModule = MonobankModule_1 = class MonobankModule {
|
|
23
|
+
/**
|
|
24
|
+
* Метод для реєстрації модуля з синхронними параметрами.
|
|
25
|
+
* Цей метод використовується для конфігурації модуля з наперед заданими параметрами.
|
|
26
|
+
* @param {MonobankModuleOptions} options - Налаштування для конфігурації Monobank API.
|
|
27
|
+
* @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* MonobankModule.forRoot({
|
|
32
|
+
* apiKey: configService.getOrThrow('MONOBANK_API_KEY')
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
static forRoot(options) {
|
|
37
|
+
return {
|
|
38
|
+
module: MonobankModule_1,
|
|
39
|
+
imports: [
|
|
40
|
+
invoice_module_1.InvoiceModule,
|
|
41
|
+
merchant_module_1.MerchantModule,
|
|
42
|
+
statement_module_1.StatementModule,
|
|
43
|
+
wallet_module_1.WalletModule,
|
|
44
|
+
qr_module_1.QrModule,
|
|
45
|
+
subscription_module_1.SubscriptionModule,
|
|
46
|
+
webhook_module_1.WebhookModule
|
|
47
|
+
],
|
|
48
|
+
providers: [
|
|
49
|
+
{
|
|
50
|
+
provide: interfaces_1.MonobankOptionsSymbol,
|
|
51
|
+
useValue: options,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
provide: monobank_http_client_1.MonobankHttpClient,
|
|
55
|
+
useFactory: (cfg) => new monobank_http_client_1.MonobankHttpClient(cfg),
|
|
56
|
+
inject: [interfaces_1.MonobankOptionsSymbol]
|
|
57
|
+
},
|
|
58
|
+
monobank_service_1.MonobankService,
|
|
59
|
+
],
|
|
60
|
+
exports: [monobank_service_1.MonobankService, monobank_http_client_1.MonobankHttpClient],
|
|
61
|
+
global: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Метод для реєстрації модуля з асинхронною конфігурацією.
|
|
66
|
+
* Цей метод використовується для конфігурації модуля з параметрами, які будуть передані через фабричну функцію.
|
|
67
|
+
* @param {MonobankModuleAsyncOptions} options - Асинхронні параметри для конфігурації Monobank API.
|
|
68
|
+
* @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* MonobankModule.forRootAsync({
|
|
73
|
+
* imports: [ConfigModule],
|
|
74
|
+
* useFactory: async (configService: ConfigService) => ({
|
|
75
|
+
* apiKey: configService.getOrThrow('MONOBANK_API_KEY')
|
|
76
|
+
* }),
|
|
77
|
+
* inject: [ConfigService]
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
static forRootAsync(options) {
|
|
82
|
+
return {
|
|
83
|
+
module: MonobankModule_1,
|
|
84
|
+
imports: [
|
|
85
|
+
...(options.imports || []),
|
|
86
|
+
invoice_module_1.InvoiceModule,
|
|
87
|
+
merchant_module_1.MerchantModule,
|
|
88
|
+
statement_module_1.StatementModule,
|
|
89
|
+
wallet_module_1.WalletModule,
|
|
90
|
+
webhook_module_1.WebhookModule,
|
|
91
|
+
qr_module_1.QrModule,
|
|
92
|
+
subscription_module_1.SubscriptionModule,
|
|
93
|
+
invoice_module_1.InvoiceModule
|
|
94
|
+
],
|
|
95
|
+
providers: [
|
|
96
|
+
{
|
|
97
|
+
provide: interfaces_1.MonobankOptionsSymbol,
|
|
98
|
+
useFactory: options.useFactory,
|
|
99
|
+
inject: options.inject || []
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
provide: monobank_http_client_1.MonobankHttpClient,
|
|
103
|
+
useFactory: (cfg) => new monobank_http_client_1.MonobankHttpClient(cfg),
|
|
104
|
+
inject: [interfaces_1.MonobankOptionsSymbol]
|
|
105
|
+
},
|
|
106
|
+
monobank_service_1.MonobankService
|
|
107
|
+
],
|
|
108
|
+
exports: [monobank_service_1.MonobankService, monobank_http_client_1.MonobankHttpClient],
|
|
109
|
+
global: true
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
exports.MonobankModule = MonobankModule;
|
|
114
|
+
exports.MonobankModule = MonobankModule = MonobankModule_1 = __decorate([
|
|
115
|
+
(0, common_1.Global)(),
|
|
116
|
+
(0, common_1.Module)({})
|
|
117
|
+
], MonobankModule);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InvoiceService } from './modules/invoice/invoice.service';
|
|
2
|
+
import { MerchantService } from './modules/merchant/merchant.service';
|
|
3
|
+
import { StatementService } from './modules/statement/statement.service';
|
|
4
|
+
import { WalletService } from './modules/wallet/wallet.service';
|
|
5
|
+
import { SubscriptionService } from "./modules/subscription/subscription.service";
|
|
6
|
+
import { WebhookService } from "./modules/webhook/webhook.service";
|
|
7
|
+
import { QrService } from "./modules/qr/qr.service";
|
|
8
|
+
export declare class MonobankService {
|
|
9
|
+
invoices: InvoiceService;
|
|
10
|
+
merchants: MerchantService;
|
|
11
|
+
statements: StatementService;
|
|
12
|
+
wallets: WalletService;
|
|
13
|
+
qr: QrService;
|
|
14
|
+
subscriptions: SubscriptionService;
|
|
15
|
+
webhook: WebhookService;
|
|
16
|
+
constructor(invoices: InvoiceService, merchants: MerchantService, statements: StatementService, wallets: WalletService, qr: QrService, subscriptions: SubscriptionService, webhook: WebhookService);
|
|
17
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MonobankService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const invoice_service_1 = require("./modules/invoice/invoice.service");
|
|
15
|
+
const merchant_service_1 = require("./modules/merchant/merchant.service");
|
|
16
|
+
const statement_service_1 = require("./modules/statement/statement.service");
|
|
17
|
+
const wallet_service_1 = require("./modules/wallet/wallet.service");
|
|
18
|
+
const subscription_service_1 = require("./modules/subscription/subscription.service");
|
|
19
|
+
const webhook_service_1 = require("./modules/webhook/webhook.service");
|
|
20
|
+
const qr_service_1 = require("./modules/qr/qr.service");
|
|
21
|
+
let MonobankService = class MonobankService {
|
|
22
|
+
constructor(invoices, merchants, statements, wallets, qr, subscriptions, webhook) {
|
|
23
|
+
this.invoices = invoices;
|
|
24
|
+
this.merchants = merchants;
|
|
25
|
+
this.statements = statements;
|
|
26
|
+
this.wallets = wallets;
|
|
27
|
+
this.qr = qr;
|
|
28
|
+
this.subscriptions = subscriptions;
|
|
29
|
+
this.webhook = webhook;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.MonobankService = MonobankService;
|
|
33
|
+
exports.MonobankService = MonobankService = __decorate([
|
|
34
|
+
(0, common_1.Injectable)(),
|
|
35
|
+
__metadata("design:paramtypes", [invoice_service_1.InvoiceService,
|
|
36
|
+
merchant_service_1.MerchantService,
|
|
37
|
+
statement_service_1.StatementService,
|
|
38
|
+
wallet_service_1.WalletService,
|
|
39
|
+
qr_service_1.QrService,
|
|
40
|
+
subscription_service_1.SubscriptionService,
|
|
41
|
+
webhook_service_1.WebhookService])
|
|
42
|
+
], MonobankService);
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nestjs-monobank",
|
|
3
|
+
"version": "1.2.8",
|
|
4
|
+
"description": "A NestJS library for integrating with Monobank API",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "MikroTik_3",
|
|
7
|
+
"url": "https://docenko.vercel.app"
|
|
8
|
+
},
|
|
9
|
+
"contributors": [
|
|
10
|
+
{
|
|
11
|
+
"name": "Artur Docenko",
|
|
12
|
+
"email": "dotsenk20034@gmail.com"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"keywords": [
|
|
16
|
+
"nest",
|
|
17
|
+
"nestjs",
|
|
18
|
+
"nestjs-module",
|
|
19
|
+
"monobank",
|
|
20
|
+
"invoice",
|
|
21
|
+
"payment"
|
|
22
|
+
],
|
|
23
|
+
"license": "AGPL-3.0-only",
|
|
24
|
+
"homepage": "https://nestjs-monobank.vercel.app",
|
|
25
|
+
"repository": "git@github.com:MikroTik3/nestjs-monobank.git",
|
|
26
|
+
"main": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc -p tsconfig.json",
|
|
30
|
+
"precommit": "lint-staged",
|
|
31
|
+
"prepublish:npm": "npm run build",
|
|
32
|
+
"publish:npm": "npm publish --access public",
|
|
33
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
34
|
+
"lint": "eslint \"{src,apps,libs}/**/*.ts\" --fix"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"axios": "^1.13.5",
|
|
38
|
+
"rxjs": "^7.8.1",
|
|
39
|
+
"undici": "^6.22.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@eslint/eslintrc": "^3.2.0",
|
|
43
|
+
"@eslint/js": "^9.18.0",
|
|
44
|
+
"@nestjs/cli": "^11.0.0",
|
|
45
|
+
"@nestjs/common": "^11.0.17",
|
|
46
|
+
"@nestjs/core": "^11.0.17",
|
|
47
|
+
"@nestjs/schematics": "^11.0.0",
|
|
48
|
+
"@nestjs/testing": "^11.0.1",
|
|
49
|
+
"@types/express": "^5.0.0",
|
|
50
|
+
"@types/jest": "^29.5.14",
|
|
51
|
+
"@types/node": "^22.10.7",
|
|
52
|
+
"@types/supertest": "^6.0.2",
|
|
53
|
+
"eslint": "^9.18.0",
|
|
54
|
+
"eslint-config-prettier": "^10.1.2",
|
|
55
|
+
"eslint-plugin-prettier": "^5.2.2",
|
|
56
|
+
"globals": "^16.0.0",
|
|
57
|
+
"jest": "^29.7.0",
|
|
58
|
+
"prettier": "^3.4.2",
|
|
59
|
+
"source-map-support": "^0.5.21",
|
|
60
|
+
"supertest": "^7.0.0",
|
|
61
|
+
"ts-jest": "^29.2.5",
|
|
62
|
+
"ts-loader": "^9.5.2",
|
|
63
|
+
"ts-node": "^10.9.2",
|
|
64
|
+
"tsconfig-paths": "^4.2.0",
|
|
65
|
+
"typescript": "^5.7.3",
|
|
66
|
+
"typescript-eslint": "^8.20.0"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Тип знижки або надбавки.
|
|
3
|
+
*/
|
|
4
|
+
export interface Discount {
|
|
5
|
+
/**
|
|
6
|
+
* Тип:
|
|
7
|
+
* - DISCOUNT — знижка
|
|
8
|
+
* - EXTRA_CHARGE — надбавка
|
|
9
|
+
* Обов’язкове поле.
|
|
10
|
+
*/
|
|
11
|
+
type: "DISCOUNT" | "EXTRA_CHARGE";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Режим:
|
|
15
|
+
* - PERCENT — у відсотках
|
|
16
|
+
* - VALUE — фіксоване значення
|
|
17
|
+
* Обов’язкове поле.
|
|
18
|
+
*/
|
|
19
|
+
mode: "PERCENT" | "VALUE";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Значення знижки або надбавки.
|
|
23
|
+
* Обов’язкове поле.
|
|
24
|
+
*/
|
|
25
|
+
value: number;
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './discount.enum'
|