@escapenavigator/utils 2.1.23 → 2.1.24
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/dist/balance-card-commission.d.ts +7 -0
- package/dist/balance-card-commission.js +12 -0
- package/dist/balance-card-commission.spec.d.ts +1 -0
- package/dist/balance-card-commission.spec.js +13 -0
- package/dist/role-client-delete-permissions.d.ts +7 -0
- package/dist/role-client-delete-permissions.js +9 -0
- package/dist/role-client-delete-permissions.spec.d.ts +1 -0
- package/dist/role-client-delete-permissions.spec.js +16 -0
- package/package.json +3 -3
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Комиссия эквайринга CloudPayments: 2,7%. */
|
|
2
|
+
export declare const BALANCE_CARD_COMMISSION_PER_MILLE = 27;
|
|
3
|
+
/**
|
|
4
|
+
* Возвращает сумму списания, при которой после удержания 2,7% останется
|
|
5
|
+
* указанная сумма пополнения. Все значения передаются в копейках.
|
|
6
|
+
*/
|
|
7
|
+
export declare const balanceCardChargeKopecks: (balanceKopecks: number) => number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.balanceCardChargeKopecks = exports.BALANCE_CARD_COMMISSION_PER_MILLE = void 0;
|
|
4
|
+
/** Комиссия эквайринга CloudPayments: 2,7%. */
|
|
5
|
+
exports.BALANCE_CARD_COMMISSION_PER_MILLE = 27;
|
|
6
|
+
const NET_PER_MILLE = 1000 - exports.BALANCE_CARD_COMMISSION_PER_MILLE;
|
|
7
|
+
/**
|
|
8
|
+
* Возвращает сумму списания, при которой после удержания 2,7% останется
|
|
9
|
+
* указанная сумма пополнения. Все значения передаются в копейках.
|
|
10
|
+
*/
|
|
11
|
+
const balanceCardChargeKopecks = (balanceKopecks) => Math.round((balanceKopecks * 1000) / NET_PER_MILLE);
|
|
12
|
+
exports.balanceCardChargeKopecks = balanceCardChargeKopecks;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const balance_card_commission_1 = require("./balance-card-commission");
|
|
4
|
+
describe('balance card commission', () => {
|
|
5
|
+
it('grosses up the balance amount so the acquiring fee is paid by the payer', () => {
|
|
6
|
+
expect(balance_card_commission_1.BALANCE_CARD_COMMISSION_PER_MILLE).toBe(27);
|
|
7
|
+
expect((0, balance_card_commission_1.balanceCardChargeKopecks)(1_000_000)).toBe(1_027_749);
|
|
8
|
+
});
|
|
9
|
+
it('rounds the charge to whole kopecks', () => {
|
|
10
|
+
expect((0, balance_card_commission_1.balanceCardChargeKopecks)(100)).toBe(103);
|
|
11
|
+
expect((0, balance_card_commission_1.balanceCardChargeKopecks)(12_345)).toBe(12_688);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RoleRO } from '@escapenavigator/types/dist/role/role.ro';
|
|
2
|
+
export type RoleClientDeletePermissions = Pick<RoleRO, 'totalAccess' | 'canDeleteClients'>;
|
|
3
|
+
/**
|
|
4
|
+
* Анонимизировать клиента может владелец профиля или сотрудник, которому
|
|
5
|
+
* владелец явно выдал это право.
|
|
6
|
+
*/
|
|
7
|
+
export declare const canDeleteClients: (role?: RoleClientDeletePermissions | null) => boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canDeleteClients = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Анонимизировать клиента может владелец профиля или сотрудник, которому
|
|
6
|
+
* владелец явно выдал это право.
|
|
7
|
+
*/
|
|
8
|
+
const canDeleteClients = (role) => !!role?.totalAccess || !!role?.canDeleteClients;
|
|
9
|
+
exports.canDeleteClients = canDeleteClients;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const role_client_delete_permissions_1 = require("./role-client-delete-permissions");
|
|
4
|
+
describe('canDeleteClients', () => {
|
|
5
|
+
it('denies access without a role or an explicit permission', () => {
|
|
6
|
+
expect((0, role_client_delete_permissions_1.canDeleteClients)()).toBe(false);
|
|
7
|
+
expect((0, role_client_delete_permissions_1.canDeleteClients)(null)).toBe(false);
|
|
8
|
+
expect((0, role_client_delete_permissions_1.canDeleteClients)({ totalAccess: false, canDeleteClients: false })).toBe(false);
|
|
9
|
+
});
|
|
10
|
+
it('allows a role with the explicit permission', () => {
|
|
11
|
+
expect((0, role_client_delete_permissions_1.canDeleteClients)({ totalAccess: false, canDeleteClients: true })).toBe(true);
|
|
12
|
+
});
|
|
13
|
+
it('always allows the owner role', () => {
|
|
14
|
+
expect((0, role_client_delete_permissions_1.canDeleteClients)({ totalAccess: true, canDeleteClients: false })).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@escapenavigator/utils",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.24",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"test": "jest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@escapenavigator/types": "^2.1.
|
|
17
|
+
"@escapenavigator/types": "^2.1.24",
|
|
18
18
|
"axios": "^0.21.4",
|
|
19
19
|
"class-transformer": "^0.5.1",
|
|
20
20
|
"class-validator": "^0.13.2",
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"ts-jest": "^29.1.1",
|
|
30
30
|
"typescript": "^5.6"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "153992d51e958b46acefa16ab49c9a0c1f727150"
|
|
33
33
|
}
|