@zorionapp/gg-toolkit 4.14.0
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/README.md +11 -0
- package/decorator/index.d.ts +1 -0
- package/decorator/index.js +5 -0
- package/decorator/index.js.map +1 -0
- package/decorator/swagger.decorators.d.ts +4 -0
- package/decorator/swagger.decorators.js +41 -0
- package/decorator/swagger.decorators.js.map +1 -0
- package/dto/index.d.ts +5 -0
- package/dto/index.js +9 -0
- package/dto/index.js.map +1 -0
- package/dto/merchant.dto.d.ts +16 -0
- package/dto/merchant.dto.js +113 -0
- package/dto/merchant.dto.js.map +1 -0
- package/dto/meta.dto.d.ts +8 -0
- package/dto/meta.dto.js +36 -0
- package/dto/meta.dto.js.map +1 -0
- package/dto/pagination.dto.d.ts +8 -0
- package/dto/pagination.dto.js +44 -0
- package/dto/pagination.dto.js.map +1 -0
- package/dto/user.dto.d.ts +33 -0
- package/dto/user.dto.js +258 -0
- package/dto/user.dto.js.map +1 -0
- package/dto/wallet.dto.d.ts +14 -0
- package/dto/wallet.dto.js +95 -0
- package/dto/wallet.dto.js.map +1 -0
- package/enum/antifraud.enums.d.ts +42 -0
- package/enum/antifraud.enums.js +52 -0
- package/enum/antifraud.enums.js.map +1 -0
- package/enum/currency.enum.d.ts +391 -0
- package/enum/currency.enum.js +400 -0
- package/enum/currency.enum.js.map +1 -0
- package/enum/db-schemas.enum.d.ts +10 -0
- package/enum/db-schemas.enum.js +15 -0
- package/enum/db-schemas.enum.js.map +1 -0
- package/enum/exchange.enums.d.ts +20 -0
- package/enum/exchange.enums.js +27 -0
- package/enum/exchange.enums.js.map +1 -0
- package/enum/index.d.ts +17 -0
- package/enum/index.js +21 -0
- package/enum/index.js.map +1 -0
- package/enum/invoice.enums.d.ts +12 -0
- package/enum/invoice.enums.js +18 -0
- package/enum/invoice.enums.js.map +1 -0
- package/enum/merchant-agent.enums.d.ts +15 -0
- package/enum/merchant-agent.enums.js +22 -0
- package/enum/merchant-agent.enums.js.map +1 -0
- package/enum/merchant.enums.d.ts +8 -0
- package/enum/merchant.enums.js +14 -0
- package/enum/merchant.enums.js.map +1 -0
- package/enum/mop.enums.d.ts +20 -0
- package/enum/mop.enums.js +26 -0
- package/enum/mop.enums.js.map +1 -0
- package/enum/notification.enum.d.ts +73 -0
- package/enum/notification.enum.js +83 -0
- package/enum/notification.enum.js.map +1 -0
- package/enum/operation.enums.d.ts +22 -0
- package/enum/operation.enums.js +29 -0
- package/enum/operation.enums.js.map +1 -0
- package/enum/otp.enums.d.ts +12 -0
- package/enum/otp.enums.js +19 -0
- package/enum/otp.enums.js.map +1 -0
- package/enum/payment.enums.d.ts +69 -0
- package/enum/payment.enums.js +82 -0
- package/enum/payment.enums.js.map +1 -0
- package/enum/refill.enums.d.ts +10 -0
- package/enum/refill.enums.js +16 -0
- package/enum/refill.enums.js.map +1 -0
- package/enum/refund.enums.d.ts +6 -0
- package/enum/refund.enums.js +12 -0
- package/enum/refund.enums.js.map +1 -0
- package/enum/transfer.enums.d.ts +66 -0
- package/enum/transfer.enums.js +78 -0
- package/enum/transfer.enums.js.map +1 -0
- package/enum/user.enums.d.ts +32 -0
- package/enum/user.enums.js +44 -0
- package/enum/user.enums.js.map +1 -0
- package/enum/wallet.enums.d.ts +30 -0
- package/enum/wallet.enums.js +39 -0
- package/enum/wallet.enums.js.map +1 -0
- package/microservices/commands/index.d.ts +1 -0
- package/microservices/commands/index.js +5 -0
- package/microservices/commands/index.js.map +1 -0
- package/microservices/commands/rmq.command.d.ts +34 -0
- package/microservices/commands/rmq.command.js +34 -0
- package/microservices/commands/rmq.command.js.map +1 -0
- package/microservices/events/index.d.ts +1 -0
- package/microservices/events/index.js +5 -0
- package/microservices/events/index.js.map +1 -0
- package/microservices/events/rmq.event.d.ts +5 -0
- package/microservices/events/rmq.event.js +10 -0
- package/microservices/events/rmq.event.js.map +1 -0
- package/microservices/index.d.ts +2 -0
- package/microservices/index.js +6 -0
- package/microservices/index.js.map +1 -0
- package/models/abstract-entity.d.ts +5 -0
- package/models/abstract-entity.js +30 -0
- package/models/abstract-entity.js.map +1 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +5 -0
- package/models/index.js.map +1 -0
- package/nominal-type/currency/currency-type.validator.d.ts +15 -0
- package/nominal-type/currency/currency-type.validator.js +61 -0
- package/nominal-type/currency/currency-type.validator.js.map +1 -0
- package/nominal-type/currency/currency.ntype.d.ts +61 -0
- package/nominal-type/currency/currency.ntype.js +136 -0
- package/nominal-type/currency/currency.ntype.js.map +1 -0
- package/nominal-type/index.d.ts +5 -0
- package/nominal-type/index.js +9 -0
- package/nominal-type/index.js.map +1 -0
- package/nominal-type/money/money-type.validator.d.ts +13 -0
- package/nominal-type/money/money-type.validator.js +62 -0
- package/nominal-type/money/money-type.validator.js.map +1 -0
- package/nominal-type/money/money.ntype.d.ts +136 -0
- package/nominal-type/money/money.ntype.js +395 -0
- package/nominal-type/money/money.ntype.js.map +1 -0
- package/nominal-type/mop/mop-type.map.d.ts +2 -0
- package/nominal-type/mop/mop-type.map.js +653 -0
- package/nominal-type/mop/mop-type.map.js.map +1 -0
- package/nominal-type/mop/mop.ntype.d.ts +28 -0
- package/nominal-type/mop/mop.ntype.js +39 -0
- package/nominal-type/mop/mop.ntype.js.map +1 -0
- package/nominal-type/mop/mop.validator.d.ts +7 -0
- package/nominal-type/mop/mop.validator.js +24 -0
- package/nominal-type/mop/mop.validator.js.map +1 -0
- package/nominal-type/operation-id/operation-id.ntype.d.ts +30 -0
- package/nominal-type/operation-id/operation-id.ntype.js +33 -0
- package/nominal-type/operation-id/operation-id.ntype.js.map +1 -0
- package/nominal-type/operation-id/operation-id.validator.d.ts +7 -0
- package/nominal-type/operation-id/operation-id.validator.js +23 -0
- package/nominal-type/operation-id/operation-id.validator.js.map +1 -0
- package/nominal-type/wallet-id/wallet-id.ntype.d.ts +58 -0
- package/nominal-type/wallet-id/wallet-id.ntype.js +154 -0
- package/nominal-type/wallet-id/wallet-id.ntype.js.map +1 -0
- package/nominal-type/wallet-id/wallet-id.validator.d.ts +50 -0
- package/nominal-type/wallet-id/wallet-id.validator.js +79 -0
- package/nominal-type/wallet-id/wallet-id.validator.js.map +1 -0
- package/package.json +55 -0
- package/transformer/currency-dto.transformer.d.ts +1 -0
- package/transformer/currency-dto.transformer.js +15 -0
- package/transformer/currency-dto.transformer.js.map +1 -0
- package/transformer/currency-typeorm.transformer.d.ts +6 -0
- package/transformer/currency-typeorm.transformer.js +21 -0
- package/transformer/currency-typeorm.transformer.js.map +1 -0
- package/transformer/index.d.ts +5 -0
- package/transformer/index.js +9 -0
- package/transformer/index.js.map +1 -0
- package/transformer/money-dto.transformer.d.ts +4 -0
- package/transformer/money-dto.transformer.js +21 -0
- package/transformer/money-dto.transformer.js.map +1 -0
- package/transformer/money-typeorm.transformer.d.ts +7 -0
- package/transformer/money-typeorm.transformer.js +25 -0
- package/transformer/money-typeorm.transformer.js.map +1 -0
- package/transformer/to-boolean.transformer.d.ts +1 -0
- package/transformer/to-boolean.transformer.js +29 -0
- package/transformer/to-boolean.transformer.js.map +1 -0
- package/util/compact-object.d.ts +8 -0
- package/util/compact-object.js +43 -0
- package/util/compact-object.js.map +1 -0
- package/util/index.d.ts +3 -0
- package/util/index.js +7 -0
- package/util/index.js.map +1 -0
- package/util/money-math-formulas.d.ts +13 -0
- package/util/money-math-formulas.js +18 -0
- package/util/money-math-formulas.js.map +1 -0
- package/util/response-wrapper.d.ts +16 -0
- package/util/response-wrapper.js +41 -0
- package/util/response-wrapper.js.map +1 -0
- package/validator/index.d.ts +2 -0
- package/validator/index.js +6 -0
- package/validator/index.js.map +1 -0
- package/validator/is-login.validator.d.ts +3 -0
- package/validator/is-login.validator.js +26 -0
- package/validator/is-login.validator.js.map +1 -0
- package/validator/is-valid-enum.validator.d.ts +2 -0
- package/validator/is-valid-enum.validator.js +7 -0
- package/validator/is-valid-enum.validator.js.map +1 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Currency = void 0;
|
|
4
|
+
const nominal_types_1 = require("@horizon-republic/nominal-types");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
const class_transformer_1 = require("class-transformer");
|
|
8
|
+
const class_validator_1 = require("class-validator");
|
|
9
|
+
const enum_1 = require("../../enum");
|
|
10
|
+
const currency_type_validator_1 = require("./currency-type.validator");
|
|
11
|
+
const IS_DEBUG_MODE = process.env.DEBUG_NTYPES === 'true' || false;
|
|
12
|
+
const cryptoCurrencyList = [
|
|
13
|
+
enum_1.Currency.Name.BTC,
|
|
14
|
+
enum_1.Currency.Name.BNB,
|
|
15
|
+
enum_1.Currency.Name.ETH,
|
|
16
|
+
enum_1.Currency.Name.DOGE,
|
|
17
|
+
enum_1.Currency.Name['USDT-TRC20'],
|
|
18
|
+
enum_1.Currency.Name['USDT-ERC20'],
|
|
19
|
+
enum_1.Currency.Name.TBTC,
|
|
20
|
+
];
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
22
|
+
const debug = IS_DEBUG_MODE ? console.log : () => { };
|
|
23
|
+
class Currency extends (0, nominal_types_1.NType)({
|
|
24
|
+
name: 'currency',
|
|
25
|
+
validator: currency_type_validator_1.CurrencyValidator,
|
|
26
|
+
}) {
|
|
27
|
+
constructor(name = enum_1.Currency.Name.DEFAULT) {
|
|
28
|
+
super(name);
|
|
29
|
+
this.precision = enum_1.Currency.Precision[name];
|
|
30
|
+
this.countryCode = enum_1.Currency.CountryCode[name];
|
|
31
|
+
this.digitalCode = enum_1.Currency.DigitalCode[name];
|
|
32
|
+
}
|
|
33
|
+
toString() {
|
|
34
|
+
return this.value;
|
|
35
|
+
}
|
|
36
|
+
getName() {
|
|
37
|
+
return this.value;
|
|
38
|
+
}
|
|
39
|
+
getPrecision() {
|
|
40
|
+
return this.precision;
|
|
41
|
+
}
|
|
42
|
+
getDigitalCode() {
|
|
43
|
+
return this.digitalCode;
|
|
44
|
+
}
|
|
45
|
+
getCountryCode() {
|
|
46
|
+
return this.countryCode;
|
|
47
|
+
}
|
|
48
|
+
isCrypto() {
|
|
49
|
+
return cryptoCurrencyList.includes(this.value);
|
|
50
|
+
}
|
|
51
|
+
isDefault() {
|
|
52
|
+
return this.value === enum_1.Currency.Name.DEFAULT;
|
|
53
|
+
}
|
|
54
|
+
isEqualTo(currency) {
|
|
55
|
+
return this.value === currency.value;
|
|
56
|
+
}
|
|
57
|
+
isNotEqual(currency) {
|
|
58
|
+
return !this.isEqualTo(currency);
|
|
59
|
+
}
|
|
60
|
+
eq(currency) {
|
|
61
|
+
return this.isEqualTo(currency);
|
|
62
|
+
}
|
|
63
|
+
ne(currency) {
|
|
64
|
+
return this.isNotEqual(currency);
|
|
65
|
+
}
|
|
66
|
+
static getRequestDecorators(params) {
|
|
67
|
+
return (0, common_1.applyDecorators)((0, class_validator_1.IsObject)(), (0, swagger_1.ApiProperty)(Object.assign(Object.assign({}, this.apiPropertyOptions), ((params === null || params === void 0 ? void 0 : params.apiProperty) || {}))), (0, class_validator_1.Validate)(this.getValidator()), (0, class_transformer_1.Transform)(({ value }) => new Currency(value), { toClassOnly: true }));
|
|
68
|
+
}
|
|
69
|
+
static getResponseDecorators(propertyName) {
|
|
70
|
+
return (0, common_1.applyDecorators)((0, swagger_1.ApiProperty)(this.apiPropertyOptions), (0, class_validator_1.IsString)(), (0, class_transformer_1.Transform)(({ obj }) => { var _a; return (_a = obj[propertyName]) === null || _a === void 0 ? void 0 : _a.toString(); }, {
|
|
71
|
+
toPlainOnly: true,
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
static getResourceDecorators(params) {
|
|
75
|
+
var _a, _b, _c, _d, _e, _f;
|
|
76
|
+
const isOptional = (_a = params === null || params === void 0 ? void 0 : params.optional) !== null && _a !== void 0 ? _a : false;
|
|
77
|
+
const isArray = (_b = params === null || params === void 0 ? void 0 : params.array) !== null && _b !== void 0 ? _b : false;
|
|
78
|
+
const notEmptyArray = (_d = (_c = params === null || params === void 0 ? void 0 : params.validation) === null || _c === void 0 ? void 0 : _c.notEmptyArray) !== null && _d !== void 0 ? _d : false;
|
|
79
|
+
const apiProperty = Object.assign(Object.assign(Object.assign({}, this.apiPropertyOptions), ((params === null || params === void 0 ? void 0 : params.apiProperty) || {})), { required: !isOptional });
|
|
80
|
+
const baseValidationDecorators = [];
|
|
81
|
+
if (isOptional) {
|
|
82
|
+
baseValidationDecorators.push((0, class_validator_1.IsOptional)());
|
|
83
|
+
}
|
|
84
|
+
if (isArray) {
|
|
85
|
+
baseValidationDecorators.push((0, class_validator_1.IsArray)());
|
|
86
|
+
apiProperty.isArray = true;
|
|
87
|
+
apiProperty.type = [(_e = apiProperty.type) !== null && _e !== void 0 ? _e : 'string'];
|
|
88
|
+
apiProperty.example = `[${(_f = apiProperty.example) !== null && _f !== void 0 ? _f : enum_1.Currency.Name.UAH}]`;
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
baseValidationDecorators.push((0, class_validator_1.IsObject)());
|
|
92
|
+
return (0, common_1.applyDecorators)((0, swagger_1.ApiProperty)(apiProperty), ...baseValidationDecorators, (0, class_validator_1.Validate)(this.getValidator(), [isOptional, isArray]), (0, class_transformer_1.Transform)(({ obj, key }) => {
|
|
93
|
+
const value = obj[key];
|
|
94
|
+
debug('Currency.getResourceDecorators.Transform { toClassOnly }', key, value, obj);
|
|
95
|
+
const isValid = currency_type_validator_1.CurrencyValidator.validateForTransformDecorator(key, value, {
|
|
96
|
+
isOptional,
|
|
97
|
+
isArray,
|
|
98
|
+
notEmptyArray,
|
|
99
|
+
});
|
|
100
|
+
if (!isValid) {
|
|
101
|
+
if (isOptional)
|
|
102
|
+
return undefined;
|
|
103
|
+
throw new common_1.BadRequestException(`${key} is not a valid currency`);
|
|
104
|
+
}
|
|
105
|
+
if (value instanceof Currency || (value instanceof Array && value.every((item) => item instanceof Currency)))
|
|
106
|
+
return value;
|
|
107
|
+
if (isArray) {
|
|
108
|
+
return value.map((item) => new this(item));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return new this(value);
|
|
112
|
+
}
|
|
113
|
+
}, { toClassOnly: true }), (0, class_transformer_1.Transform)(({ key, obj }) => {
|
|
114
|
+
const value = obj[key];
|
|
115
|
+
debug('Currency.getResourceDecorators.Transform { toPlainOnly }', key, value, obj);
|
|
116
|
+
if (value instanceof Currency)
|
|
117
|
+
return value.toString();
|
|
118
|
+
if (isArray && value instanceof Array)
|
|
119
|
+
return value.map((item) => item.toString());
|
|
120
|
+
return value;
|
|
121
|
+
}, { toPlainOnly: true }));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.Currency = Currency;
|
|
125
|
+
Currency.apiPropertyOptions = {
|
|
126
|
+
type: 'string',
|
|
127
|
+
example: enum_1.Currency.Name.UAH,
|
|
128
|
+
enum: enum_1.Currency.Name,
|
|
129
|
+
};
|
|
130
|
+
Currency.logger = new common_1.Logger(Currency.name);
|
|
131
|
+
// reexport enum
|
|
132
|
+
Currency.Name = enum_1.Currency.Name;
|
|
133
|
+
Currency.Precision = enum_1.Currency.Precision;
|
|
134
|
+
Currency.CountryCode = enum_1.Currency.CountryCode;
|
|
135
|
+
Currency.DigitalCode = enum_1.Currency.DigitalCode;
|
|
136
|
+
//# sourceMappingURL=currency.ntype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency.ntype.js","sourceRoot":"","sources":["../../../../../libs/gg-toolkit/nominal-type/currency/currency.ntype.ts"],"names":[],"mappings":";;;AAAA,mEAAwD;AACxD,2CAA8E;AAC9E,6CAAkE;AAClE,yDAA8C;AAC9C,qDAAoF;AACpF,qCAAoD;AACpD,uEAA8D;AAE9D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,IAAI,KAAK,CAAC;AAenE,MAAM,kBAAkB,GAAsB;IAC5C,eAAU,CAAC,IAAI,CAAC,GAAG;IACnB,eAAU,CAAC,IAAI,CAAC,GAAG;IACnB,eAAU,CAAC,IAAI,CAAC,GAAG;IACnB,eAAU,CAAC,IAAI,CAAC,IAAI;IACpB,eAAU,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7B,eAAU,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7B,eAAU,CAAC,IAAI,CAAC,IAAI;CACrB,CAAC;AAEF,gEAAgE;AAChE,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAErD,MAAa,QAAS,SAAQ,IAAA,qBAAK,EAAC;IAClC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,2CAAiB;CAC7B,CAAC;IAkBA,YAAmB,OAAwB,eAAU,CAAC,IAAI,CAAC,OAAO;QAChE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,eAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,eAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,eAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,QAAQ;QACb,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,KAAK,KAAK,eAAU,CAAC,IAAI,CAAC,OAAO,CAAC;IAChD,CAAC;IAEM,SAAS,CAAC,QAAkB;QACjC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,QAAkB;QAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,EAAE,CAAC,QAAkB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEM,EAAE,CAAC,QAAkB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,MAAyC;QAC1E,OAAO,IAAA,wBAAe,EACpB,IAAA,0BAAQ,GAAE,EACV,IAAA,qBAAW,kCAAM,IAAI,CAAC,kBAAkB,GAAK,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,KAAI,EAAE,CAAC,EAAG,EAC3E,IAAA,0BAAQ,EAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAC7B,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,YAAoB;QACtD,OAAO,IAAA,wBAAe,EACpB,IAAA,qBAAW,EAAC,IAAI,CAAC,kBAAkB,CAAC,EACpC,IAAA,0BAAQ,GAAE,EACV,IAAA,6BAAS,EAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,YAAY,CAAC,0CAAE,QAAQ,EAAE,CAAA,EAAA,EAAE;YACpD,WAAW,EAAE,IAAI;SAClB,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,MAA0C;;QAC5E,MAAM,UAAU,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,KAAK,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCAAI,KAAK,CAAC;QACvC,MAAM,aAAa,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,0CAAE,aAAa,mCAAI,KAAK,CAAC;QACjE,MAAM,WAAW,iDAAQ,IAAI,CAAC,kBAAkB,GAAK,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,KAAI,EAAE,CAAC,KAAE,QAAQ,EAAE,CAAC,UAAU,GAAE,CAAC;QAC1G,MAAM,wBAAwB,GAAG,EAAE,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,wBAAwB,CAAC,IAAI,CAAC,IAAA,4BAAU,GAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,wBAAwB,CAAC,IAAI,CAAC,IAAA,yBAAO,GAAE,CAAC,CAAC;YACzC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,WAAW,CAAC,IAAI,GAAG,CAAC,MAAA,WAAW,CAAC,IAAI,mCAAI,QAAQ,CAAC,CAAC;YAClD,WAAW,CAAC,OAAO,GAAG,IAAI,MAAA,WAAW,CAAC,OAAO,mCAAI,eAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC1E,CAAC;;YAAM,wBAAwB,CAAC,IAAI,CAAC,IAAA,0BAAQ,GAAE,CAAC,CAAC;QAEjD,OAAO,IAAA,wBAAe,EACpB,IAAA,qBAAW,EAAC,WAAW,CAAC,EACxB,GAAG,wBAAwB,EAC3B,IAAA,0BAAQ,EAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EACpD,IAAA,6BAAS,EACP,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,0DAA0D,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAEnF,MAAM,OAAO,GAAG,2CAAiB,CAAC,6BAA6B,CAAC,GAAG,EAAE,KAAK,EAAE;gBAC1E,UAAU;gBACV,OAAO;gBACP,aAAa;aACd,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,UAAU;oBAAE,OAAO,SAAS,CAAC;gBACjC,MAAM,IAAI,4BAAmB,CAAC,GAAG,GAAG,0BAA0B,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,KAAK,YAAY,QAAQ,IAAI,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,QAAQ,CAAC,CAAC;gBAC1G,OAAO,KAAK,CAAC;YAEf,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,EACD,IAAA,6BAAS,EACP,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,0DAA0D,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAEnF,IAAI,KAAK,YAAY,QAAQ;gBAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;YACvD,IAAI,OAAO,IAAI,KAAK,YAAY,KAAK;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEnF,OAAO,KAAK,CAAC;QACf,CAAC,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CACF,CAAC;IACJ,CAAC;;AAvJH,4BAwJC;AApJwB,2BAAkB,GAAuB;IAC9D,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,eAAU,CAAC,IAAI,CAAC,GAAG;IAC5B,IAAI,EAAE,eAAU,CAAC,IAAI;CACtB,CAAC;AACe,eAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAMpD,gBAAgB;AACF,aAAI,GAAG,eAAU,CAAC,IAAI,CAAC;AACvB,kBAAS,GAAG,eAAU,CAAC,SAAS,CAAC;AACjC,oBAAW,GAAG,eAAU,CAAC,WAAW,CAAC;AACrC,oBAAW,GAAG,eAAU,CAAC,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./currency/currency.ntype"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./money/money.ntype"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./mop/mop.ntype"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./operation-id/operation-id.ntype"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./wallet-id/wallet-id.ntype"), exports);
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/gg-toolkit/nominal-type/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,8DAAoC;AACpC,0DAAgC;AAChC,4EAAkD;AAClD,sEAA4C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NTypeValidator } from '@horizon-republic/nominal-types';
|
|
2
|
+
import { ValidationArguments } from 'class-validator';
|
|
3
|
+
import { Money } from './money.ntype';
|
|
4
|
+
export interface MoneyDecoratorValidatorOptions {
|
|
5
|
+
isOptional?: boolean;
|
|
6
|
+
minValue?: string | number;
|
|
7
|
+
maxValue?: string | number;
|
|
8
|
+
}
|
|
9
|
+
export declare class MoneyValidator extends NTypeValidator<Money> {
|
|
10
|
+
message(validationArguments: ValidationArguments | undefined): string;
|
|
11
|
+
rule(value: Money['value'], validationArguments: ValidationArguments | undefined): Promise<boolean> | boolean;
|
|
12
|
+
static validateForTransformDecorator(key: string, value: any, options?: MoneyDecoratorValidatorOptions): boolean;
|
|
13
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MoneyValidator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const nominal_types_1 = require("@horizon-republic/nominal-types");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const class_validator_1 = require("class-validator");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const mathFormulas = require("../../util/money-math-formulas");
|
|
10
|
+
const money_ntype_1 = require("./money.ntype");
|
|
11
|
+
const StringAmountPattern = new RegExp(/^\d{1,15}$|^\d{0,15}(?=.{0,18}$)\d*\.\d*\d$/);
|
|
12
|
+
let MoneyValidator = class MoneyValidator extends nominal_types_1.NTypeValidator {
|
|
13
|
+
message(validationArguments) {
|
|
14
|
+
var _a;
|
|
15
|
+
return `${validationArguments.property}: ${(_a = validationArguments === null || validationArguments === void 0 ? void 0 : validationArguments.value) !== null && _a !== void 0 ? _a : 'Specified value'} is not a valid money.`;
|
|
16
|
+
}
|
|
17
|
+
rule(value, validationArguments) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
const isOptional = (_b = (_a = validationArguments === null || validationArguments === void 0 ? void 0 : validationArguments.constraints) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : false;
|
|
20
|
+
const isEmptyValue = (0, lodash_1.isNil)(value) || value.amount === null;
|
|
21
|
+
if (isEmptyValue)
|
|
22
|
+
return !!isOptional;
|
|
23
|
+
return StringAmountPattern.test(value.amount) || typeof value.amount === 'number';
|
|
24
|
+
}
|
|
25
|
+
static validateForTransformDecorator(key, value, options) {
|
|
26
|
+
const { isOptional = false, minValue, maxValue } = options !== null && options !== void 0 ? options : {};
|
|
27
|
+
if (value instanceof money_ntype_1.Money)
|
|
28
|
+
return true;
|
|
29
|
+
const trimmedStrValue = (typeof value === 'string' ? value : `${value}`).trim();
|
|
30
|
+
const isDefined = value !== null && value !== undefined;
|
|
31
|
+
const isInvalidNumber = typeof value === 'number' && Number.isNaN(value);
|
|
32
|
+
const isInvalidString = typeof value === 'string' &&
|
|
33
|
+
(!StringAmountPattern.test(trimmedStrValue) || ['NULL', 'UNDEFINED', ''].includes(trimmedStrValue.toUpperCase()));
|
|
34
|
+
if (!isDefined || isInvalidString || isInvalidNumber) {
|
|
35
|
+
if (!isOptional)
|
|
36
|
+
throw new common_1.BadRequestException(`${key} is not a valid money`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (minValue !== undefined && minValue !== null) {
|
|
40
|
+
const isValidMin = mathFormulas.greaterThanOrEqualToFormula.evaluate({
|
|
41
|
+
x: trimmedStrValue,
|
|
42
|
+
y: minValue,
|
|
43
|
+
});
|
|
44
|
+
if (!isValidMin)
|
|
45
|
+
throw new common_1.BadRequestException(`${key} must be greater than ${minValue}`);
|
|
46
|
+
}
|
|
47
|
+
if (maxValue !== undefined && maxValue !== null) {
|
|
48
|
+
const isValidMax = mathFormulas.lessThanOrEqualToFormula.evaluate({
|
|
49
|
+
x: trimmedStrValue,
|
|
50
|
+
y: maxValue,
|
|
51
|
+
});
|
|
52
|
+
if (!isValidMax)
|
|
53
|
+
throw new common_1.BadRequestException(`${key} must be less than ${maxValue}`);
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.MoneyValidator = MoneyValidator;
|
|
59
|
+
exports.MoneyValidator = MoneyValidator = tslib_1.__decorate([
|
|
60
|
+
(0, class_validator_1.ValidatorConstraint)({ name: MoneyValidator.name, async: false })
|
|
61
|
+
], MoneyValidator);
|
|
62
|
+
//# sourceMappingURL=money-type.validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money-type.validator.js","sourceRoot":"","sources":["../../../../../libs/gg-toolkit/nominal-type/money/money-type.validator.ts"],"names":[],"mappings":";;;;AAAA,mEAAiE;AACjE,2CAAqD;AACrD,qDAA2E;AAC3E,mCAA+B;AAC/B,+DAA+D;AAC/D,+CAAsC;AAQtC,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC,6CAA6C,CAAC,CAAC;AAG/E,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAAqB;IAChD,OAAO,CAAC,mBAAoD;;QACjE,OAAO,GAAG,mBAAmB,CAAC,QAAQ,KAAK,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,mCAAI,iBAAiB,wBAAwB,CAAC;IACrH,CAAC;IAEM,IAAI,CAAC,KAAqB,EAAE,mBAAoD;;QACrF,MAAM,UAAU,GAAG,MAAA,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAG,CAAC,CAAC,mCAAI,KAAK,CAAC;QAClE,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAE3D,IAAI,YAAY;YAAE,OAAO,CAAC,CAAC,UAAU,CAAC;QAEtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;IACpF,CAAC;IAEM,MAAM,CAAC,6BAA6B,CACzC,GAAW,EACX,KAAU,EACV,OAAwC;QAExC,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAEjE,IAAI,KAAK,YAAY,mBAAK;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEhF,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;QACxD,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,eAAe,GACnB,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEpH,IAAI,CAAC,SAAS,IAAI,eAAe,IAAI,eAAe,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,4BAAmB,CAAC,GAAG,GAAG,uBAAuB,CAAC,CAAC;YAE9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,YAAY,CAAC,2BAA2B,CAAC,QAAQ,CAAC;gBACnE,CAAC,EAAE,eAAe;gBAClB,CAAC,EAAE,QAAQ;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,4BAAmB,CAAC,GAAG,GAAG,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,YAAY,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBAChE,CAAC,EAAE,eAAe;gBAClB,CAAC,EAAE,QAAQ;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,4BAAmB,CAAC,GAAG,GAAG,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAzDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,qCAAmB,EAAC,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;GACpD,cAAc,CAyD1B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Constructor, Type } from '@mikro-orm/core';
|
|
2
|
+
import { ApiPropertyOptions } from '@nestjs/swagger';
|
|
3
|
+
import { Currency } from '../currency/currency.ntype';
|
|
4
|
+
export declare enum MoneyFormat {
|
|
5
|
+
Human = "human",
|
|
6
|
+
Calculation = "calculation"
|
|
7
|
+
}
|
|
8
|
+
export type MoneyValue = {
|
|
9
|
+
amount: string | number;
|
|
10
|
+
currency?: Currency;
|
|
11
|
+
format?: MoneyFormat;
|
|
12
|
+
};
|
|
13
|
+
export type MoneyRequestDecoratorsOptions = {
|
|
14
|
+
apiProperty?: ApiPropertyOptions;
|
|
15
|
+
currencyKey?: string;
|
|
16
|
+
min?: string | number;
|
|
17
|
+
max?: string | number;
|
|
18
|
+
};
|
|
19
|
+
export type MoneyResourceDecoratorsOptions = {
|
|
20
|
+
optional?: boolean;
|
|
21
|
+
apiProperty?: ApiPropertyOptions;
|
|
22
|
+
outputFormat?: MoneyFormat;
|
|
23
|
+
outputTrimByPrecision?: boolean;
|
|
24
|
+
currencyKey?: string;
|
|
25
|
+
defaultValue?: string | number;
|
|
26
|
+
validation?: {
|
|
27
|
+
min?: string | number;
|
|
28
|
+
max?: string | number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type MoneyOrmTypeOptions = {
|
|
32
|
+
outputFormat?: MoneyFormat;
|
|
33
|
+
defaultJSValue?: string | number;
|
|
34
|
+
};
|
|
35
|
+
declare const Money_base: (abstract new (value: any) => {
|
|
36
|
+
readonly "__#2@#_nominalType": "money";
|
|
37
|
+
readonly value: any;
|
|
38
|
+
toString(): any;
|
|
39
|
+
toJSON(): any;
|
|
40
|
+
isIdentical(value: any): boolean;
|
|
41
|
+
}) & {
|
|
42
|
+
readonly apiPropertyOptions: ApiPropertyOptions;
|
|
43
|
+
getOrmType(): Constructor<Type<any, any>>;
|
|
44
|
+
getValidator(): Constructor<import("class-validator").ValidatorConstraintInterface>;
|
|
45
|
+
getResourceDecorators(...args: any[]): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
46
|
+
getPipe(): import("@nestjs/common").PipeTransform<any, any>;
|
|
47
|
+
createInstance<T extends {
|
|
48
|
+
readonly "__#2@#_nominalType": "money";
|
|
49
|
+
readonly value: any;
|
|
50
|
+
toString(): any;
|
|
51
|
+
toJSON(): any;
|
|
52
|
+
isIdentical(value: any): boolean;
|
|
53
|
+
}>(this: new (...args: any[]) => T, ...args: any[]): T;
|
|
54
|
+
};
|
|
55
|
+
export declare class Money extends Money_base {
|
|
56
|
+
static readonly apiPropertyOptions: ApiPropertyOptions;
|
|
57
|
+
protected format: MoneyFormat;
|
|
58
|
+
protected currency: Currency;
|
|
59
|
+
protected precision: Currency['precision'];
|
|
60
|
+
protected amount: string;
|
|
61
|
+
protected humanAmount: string;
|
|
62
|
+
protected calculationAmount: string;
|
|
63
|
+
constructor(params?: MoneyValue);
|
|
64
|
+
clone(params: Pick<MoneyValue, 'amount' | 'format'>): Money;
|
|
65
|
+
protected static validateMinMax(valueKey: string, value: string, params: Pick<MoneyRequestDecoratorsOptions, 'min' | 'max'>): void;
|
|
66
|
+
static getOrmType(params?: MoneyOrmTypeOptions): Constructor<Type<any>>;
|
|
67
|
+
/**
|
|
68
|
+
* todo: whole validation should be refactored
|
|
69
|
+
* 1. Remove 'optional' param and use decorator directly from class-validator
|
|
70
|
+
* 2. Simplify expressions
|
|
71
|
+
* 3. Part of this code is redundant
|
|
72
|
+
* 4. Decompose and make possible tests creation
|
|
73
|
+
*/
|
|
74
|
+
static getResourceDecorators(params?: MoneyResourceDecoratorsOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
75
|
+
/** Private */
|
|
76
|
+
private static throwMoneyKeyValidation;
|
|
77
|
+
private parseInputMoney;
|
|
78
|
+
private parseInputAmount;
|
|
79
|
+
/** Protected */
|
|
80
|
+
protected initMoney(currency?: Currency): void;
|
|
81
|
+
/**
|
|
82
|
+
* This method should be used before all calculations to ensure that we use right precision
|
|
83
|
+
*/
|
|
84
|
+
protected ensureCurrencyIsNotDefault(): void;
|
|
85
|
+
protected checkComparison(money: Money): void;
|
|
86
|
+
protected toCalculationView(): string;
|
|
87
|
+
protected toHumanView(): string;
|
|
88
|
+
/** Setters */
|
|
89
|
+
setCurrency(currency: Currency): Money;
|
|
90
|
+
/** Getters */
|
|
91
|
+
getCurrency(): Currency;
|
|
92
|
+
getCalculationAmount(): string;
|
|
93
|
+
getHumanAmount(trimByPrecision?: boolean): string;
|
|
94
|
+
toString(): string;
|
|
95
|
+
toFloat(): number;
|
|
96
|
+
/** Calculations */
|
|
97
|
+
add(amount: string | number | Money): Money;
|
|
98
|
+
minus(amount: string | number | Money): Money;
|
|
99
|
+
multiplyBy(amount: string | number): Money;
|
|
100
|
+
divideBy(amount: string | number): Money;
|
|
101
|
+
rate(coefficient: string | number, currency: Currency): Money;
|
|
102
|
+
/**
|
|
103
|
+
* Returns the minimum Money instance from the provided list.
|
|
104
|
+
*/
|
|
105
|
+
static min(...monies: Money[]): Money;
|
|
106
|
+
/**
|
|
107
|
+
* Returns the maximum Money instance from the provided list.
|
|
108
|
+
*/
|
|
109
|
+
static max(...monies: Money[]): Money;
|
|
110
|
+
/**
|
|
111
|
+
* Compares Money instances using the provided comparator function.
|
|
112
|
+
*
|
|
113
|
+
* @param monies - List of Money instances to compare.
|
|
114
|
+
* @param comparator - Function to determine the comparison logic.
|
|
115
|
+
* @returns The Money instance that meets the comparison criteria.
|
|
116
|
+
* @throws InternalServerErrorException if no Money instances are provided.
|
|
117
|
+
* @throws UnprocessableEntityException if Money instances have different currencies.
|
|
118
|
+
*/
|
|
119
|
+
private static compareMonies;
|
|
120
|
+
/** Comparison */
|
|
121
|
+
isEqualTo(money: string | number | Money): boolean;
|
|
122
|
+
isNotEqualTo(money: string | number | Money): boolean;
|
|
123
|
+
isGreaterThan(money: string | number | Money): boolean;
|
|
124
|
+
isGreaterThanOrEqualTo(money: string | number | Money): boolean;
|
|
125
|
+
isLessThan(money: string | number | Money): boolean;
|
|
126
|
+
isLessThanOrEqualTo(money: string | number | Money): boolean;
|
|
127
|
+
/** Aliases */
|
|
128
|
+
plus(amount: string | number | Money): Money;
|
|
129
|
+
eq(money: string | number | Money): boolean;
|
|
130
|
+
ne(money: string | number | Money): boolean;
|
|
131
|
+
gt(money: string | number | Money): boolean;
|
|
132
|
+
gte(money: string | number | Money): boolean;
|
|
133
|
+
lt(money: string | number | Money): boolean;
|
|
134
|
+
lte(money: string | number | Money): boolean;
|
|
135
|
+
}
|
|
136
|
+
export {};
|