@fintekkers/ledger-models 0.4.2 → 0.4.4
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/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.d.ts +1 -0
- package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.js +61 -0
- package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.js.map +1 -0
- package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.ts +65 -0
- package/node/fintekkers/requests/position/query_position_request_pb.js +2 -2
- package/node/fintekkers/requests/security/get_fields_response_pb.js +1 -1
- package/node/fintekkers/requests/valuation/curve_request_pb.js +1 -1
- package/node/fintekkers/requests/valuation/valuation_request_pb.js +1 -1
- package/node/wrappers/models/security/BondSecurity.d.ts +5 -21
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +17 -11
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +17 -11
- package/node/wrappers/models/security/BondSecurity.js +15 -32
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.ts +18 -37
- package/node/wrappers/models/security/Issuance.d.ts +3 -5
- package/node/wrappers/models/security/Issuance.js +3 -8
- package/node/wrappers/models/security/Issuance.js.map +1 -1
- package/node/wrappers/models/security/Issuance.test.js +16 -8
- package/node/wrappers/models/security/Issuance.test.js.map +1 -1
- package/node/wrappers/models/security/Issuance.test.ts +10 -2
- package/node/wrappers/models/security/Issuance.ts +6 -12
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js +11 -7
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js.map +1 -1
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.ts +12 -8
- package/node/wrappers/models/security/TIPSBond.d.ts +2 -3
- package/node/wrappers/models/security/TIPSBond.js +2 -4
- package/node/wrappers/models/security/TIPSBond.js.map +1 -1
- package/node/wrappers/models/security/TIPSBond.ts +5 -7
- package/node/wrappers/models/security/security.d.ts +38 -12
- package/node/wrappers/models/security/security.js +58 -15
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.test.js +91 -10
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +106 -11
- package/node/wrappers/models/security/security.ts +64 -16
- package/node/wrappers/models/transaction/transaction.d.ts +2 -3
- package/node/wrappers/models/transaction/transaction.js +23 -21
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.ts +22 -21
- package/node/wrappers/models/transaction/transaction_constructor.test.js +4 -2
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +10 -8
- package/node/wrappers/models/utils/date.d.ts +13 -1
- package/node/wrappers/models/utils/date.js +26 -1
- package/node/wrappers/models/utils/date.js.map +1 -1
- package/node/wrappers/models/utils/date.ts +25 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.js +4 -2
- package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.ts +3 -2
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ import { ProductTypeProto } from "../../../fintekkers/models/security/product_ty
|
|
|
16
16
|
//Model Utils
|
|
17
17
|
import { ZonedDateTime } from "../utils/datetime";
|
|
18
18
|
import { UUID } from "../utils/uuid";
|
|
19
|
-
import {
|
|
19
|
+
import { dateToLocalDateProto, localDateProtoToDate } from "../utils/date";
|
|
20
20
|
import { Decimal } from "decimal.js";
|
|
21
21
|
|
|
22
22
|
interface TransactionConstructorParams {
|
|
@@ -55,8 +55,8 @@ class Transaction {
|
|
|
55
55
|
transactionProto.setAsOf(asOfZonedDateTime.toProto());
|
|
56
56
|
|
|
57
57
|
// Convert tradeDate and settlementDate to LocalDateProto
|
|
58
|
-
transactionProto.setTradeDate(
|
|
59
|
-
transactionProto.setSettlementDate(
|
|
58
|
+
transactionProto.setTradeDate(dateToLocalDateProto(params.tradeDate));
|
|
59
|
+
transactionProto.setSettlementDate(dateToLocalDateProto(params.settlementDate));
|
|
60
60
|
|
|
61
61
|
// Create Price using Price.create() factory method
|
|
62
62
|
const price = Price.create(params.price, params.security, asOfZonedDateTime);
|
|
@@ -96,7 +96,7 @@ class Transaction {
|
|
|
96
96
|
this.proto.getStrategyAllocation()?.toString() ?? "NULL";
|
|
97
97
|
|
|
98
98
|
return `${/*this.proto.isCancelled()*/ false ? "INVALIDATED: " : ""}TXN[${this.getID().toString()}], ` +
|
|
99
|
-
`TradeDate[${this.getTradeDate()
|
|
99
|
+
`TradeDate[${this.getTradeDate()?.toString() ?? "NULL"}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
|
|
100
100
|
`AsOf[${this.getAsOf().toString()}], Portfolio[${this.getPortfolio().getPortfolioName()}], Issuer[${this.getSecurity().getIssuerName()}], ` +
|
|
101
101
|
`ValidFrom[${validFrom}], ValidTo[${validTo}], Strategy[${strategyAllocation}]`;
|
|
102
102
|
} catch (e) {
|
|
@@ -186,16 +186,12 @@ class Transaction {
|
|
|
186
186
|
return this.getQuantity().mul(this.getTransactionType().getDirectionMultiplier());
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
getTradeDate():
|
|
190
|
-
|
|
191
|
-
if (!tradeDate) throw new Error("TradeDate is required");
|
|
192
|
-
return new LocalDate(tradeDate);
|
|
189
|
+
getTradeDate(): Date | null {
|
|
190
|
+
return localDateProtoToDate(this.proto.getTradeDate());
|
|
193
191
|
}
|
|
194
192
|
|
|
195
|
-
getSettlementDate():
|
|
196
|
-
|
|
197
|
-
if (!settlementDate) throw new Error("SettlementDate is required");
|
|
198
|
-
return new LocalDate(settlementDate);
|
|
193
|
+
getSettlementDate(): Date | null {
|
|
194
|
+
return localDateProtoToDate(this.proto.getSettlementDate());
|
|
199
195
|
}
|
|
200
196
|
|
|
201
197
|
getTransactionType(): TransactionType {
|
|
@@ -291,8 +287,8 @@ class Transaction {
|
|
|
291
287
|
const bondSecurity = new BondSecurity(parentTransaction.getSecurity().proto);
|
|
292
288
|
|
|
293
289
|
const priceScaleFactor = bondSecurity.getPriceScaleFactor();
|
|
294
|
-
const
|
|
295
|
-
|
|
290
|
+
const faceValue = bondSecurity.getFaceValue();
|
|
291
|
+
if (!faceValue) throw new Error("Face value is required for bond cash impact calculation");
|
|
296
292
|
|
|
297
293
|
const priceProto = parentTransaction.getPrice();
|
|
298
294
|
const priceValue = new Decimal(priceProto.getPrice()?.getArbitraryPrecisionValue() || '0');
|
|
@@ -313,10 +309,15 @@ class Transaction {
|
|
|
313
309
|
// Get asOf ZonedDateTime
|
|
314
310
|
const asOf = parentTransaction.getAsOf();
|
|
315
311
|
|
|
312
|
+
const tradeDate = parentTransaction.getTradeDate();
|
|
313
|
+
const settlementDate = parentTransaction.getSettlementDate();
|
|
314
|
+
if (!tradeDate) throw new Error("TradeDate is required to derive a cash transaction");
|
|
315
|
+
if (!settlementDate) throw new Error("SettlementDate is required to derive a cash transaction");
|
|
316
|
+
|
|
316
317
|
// Create cash transaction using parameter-based constructor
|
|
317
318
|
const cashTransaction = new Transaction({
|
|
318
|
-
tradeDate
|
|
319
|
-
settlementDate
|
|
319
|
+
tradeDate,
|
|
320
|
+
settlementDate,
|
|
320
321
|
asOfDate: asOf.toDateTime().toJSDate(),
|
|
321
322
|
price: new Decimal('1.0'), // Cash price is always 1.0
|
|
322
323
|
security: cashSecurity,
|
|
@@ -351,11 +352,11 @@ class Transaction {
|
|
|
351
352
|
|
|
352
353
|
// Get maturity date
|
|
353
354
|
const maturityDate = bondSecurity.getMaturityDate();
|
|
355
|
+
if (!maturityDate) throw new Error("Maturity date is required to derive a maturation transaction");
|
|
354
356
|
|
|
355
357
|
// Calculate settlement date: maturity date + 2 days
|
|
356
|
-
const
|
|
357
|
-
|
|
358
|
-
const settlementDate = LocalDate.from(maturityDateObj);
|
|
358
|
+
const settlementDate = new Date(maturityDate.getTime());
|
|
359
|
+
settlementDate.setDate(settlementDate.getDate() + 2);
|
|
359
360
|
|
|
360
361
|
// Get price as Decimal
|
|
361
362
|
const priceProto = transaction.getPrice();
|
|
@@ -366,8 +367,8 @@ class Transaction {
|
|
|
366
367
|
|
|
367
368
|
// Create maturation transaction
|
|
368
369
|
const maturation = new Transaction({
|
|
369
|
-
tradeDate: maturityDate
|
|
370
|
-
settlementDate
|
|
370
|
+
tradeDate: maturityDate,
|
|
371
|
+
settlementDate,
|
|
371
372
|
asOfDate: asOf.toDateTime().toJSDate(),
|
|
372
373
|
price: priceValue,
|
|
373
374
|
security: transaction.getSecurity(),
|
|
@@ -45,12 +45,14 @@ function testTransactionConstructor() {
|
|
|
45
45
|
});
|
|
46
46
|
// Verify all getters return expected values
|
|
47
47
|
// getTradeDate() - should match input tradeDate
|
|
48
|
-
const tradeDateFromTransaction = transaction.getTradeDate()
|
|
48
|
+
const tradeDateFromTransaction = transaction.getTradeDate();
|
|
49
|
+
assert(tradeDateFromTransaction !== null, 'TradeDate should not be null');
|
|
49
50
|
assert(tradeDateFromTransaction.getFullYear() === tradeDate.getFullYear());
|
|
50
51
|
assert(tradeDateFromTransaction.getMonth() === tradeDate.getMonth());
|
|
51
52
|
assert(tradeDateFromTransaction.getDate() === tradeDate.getDate());
|
|
52
53
|
// getSettlementDate() - should match input settlementDate
|
|
53
|
-
const settlementDateFromTransaction = transaction.getSettlementDate()
|
|
54
|
+
const settlementDateFromTransaction = transaction.getSettlementDate();
|
|
55
|
+
assert(settlementDateFromTransaction !== null, 'SettlementDate should not be null');
|
|
54
56
|
assert(settlementDateFromTransaction.getFullYear() === settlementDate.getFullYear());
|
|
55
57
|
assert(settlementDateFromTransaction.getMonth() === settlementDate.getMonth());
|
|
56
58
|
assert(settlementDateFromTransaction.getDate() === settlementDate.getDate());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction_constructor.test.js","sourceRoot":"","sources":["transaction_constructor.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,gEAAwC;AACxC,yDAAqD;AACrD,oGAAkG;AAClG,+FAA6F;AAC7F,oEAA4C;AAE5C,iFAAkG;AAClG,iFAA+E;AAC/E,uFAAqF;AACrF,6GAA0G;AAC1G,iGAA+F;AAC/F,uFAAqF;AACrF,wCAAqC;AAErC,2CAAqC;AACrC,gEAA6D;AAE7D,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,0BAA0B,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,SAAS,0BAA0B;;IAC/B,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,oBAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAA,+BAAc,GAAE,CAAC;IACnC,MAAM,eAAe,GAAG,oBAAoB,EAAE,CAAC;IAE/C,uDAAuD;IACvD,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC;QAChC,SAAS;QACT,cAAc;QACd,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,eAAe;QACf,SAAS;QACT,QAAQ;KACX,CAAC,CAAC;IAEH,4CAA4C;IAE5C,gDAAgD;IAChD,MAAM,wBAAwB,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction_constructor.test.js","sourceRoot":"","sources":["transaction_constructor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,16 +46,18 @@ function testTransactionConstructor(): void {
|
|
|
46
46
|
// Verify all getters return expected values
|
|
47
47
|
|
|
48
48
|
// getTradeDate() - should match input tradeDate
|
|
49
|
-
const tradeDateFromTransaction = transaction.getTradeDate()
|
|
50
|
-
assert(tradeDateFromTransaction
|
|
51
|
-
assert(tradeDateFromTransaction
|
|
52
|
-
assert(tradeDateFromTransaction
|
|
49
|
+
const tradeDateFromTransaction = transaction.getTradeDate();
|
|
50
|
+
assert(tradeDateFromTransaction !== null, 'TradeDate should not be null');
|
|
51
|
+
assert(tradeDateFromTransaction!.getFullYear() === tradeDate.getFullYear());
|
|
52
|
+
assert(tradeDateFromTransaction!.getMonth() === tradeDate.getMonth());
|
|
53
|
+
assert(tradeDateFromTransaction!.getDate() === tradeDate.getDate());
|
|
53
54
|
|
|
54
55
|
// getSettlementDate() - should match input settlementDate
|
|
55
|
-
const settlementDateFromTransaction = transaction.getSettlementDate()
|
|
56
|
-
assert(settlementDateFromTransaction
|
|
57
|
-
assert(settlementDateFromTransaction
|
|
58
|
-
assert(settlementDateFromTransaction
|
|
56
|
+
const settlementDateFromTransaction = transaction.getSettlementDate();
|
|
57
|
+
assert(settlementDateFromTransaction !== null, 'SettlementDate should not be null');
|
|
58
|
+
assert(settlementDateFromTransaction!.getFullYear() === settlementDate.getFullYear());
|
|
59
|
+
assert(settlementDateFromTransaction!.getMonth() === settlementDate.getMonth());
|
|
60
|
+
assert(settlementDateFromTransaction!.getDate() === settlementDate.getDate());
|
|
59
61
|
|
|
60
62
|
// getAsOf() - should match input asOfDate (converted to ZonedDateTime)
|
|
61
63
|
const asOfFromTransaction = transaction.getAsOf();
|
|
@@ -8,4 +8,16 @@ declare class LocalDate {
|
|
|
8
8
|
static today(): LocalDate;
|
|
9
9
|
static from(date: Date): LocalDate;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Convert a LocalDateProto to a native Date, or null when the proto is
|
|
13
|
+
* undefined/null. Hours/min/sec/ms are zeroed so equality comparisons across
|
|
14
|
+
* accessors are deterministic. Months are translated from proto's 1-based
|
|
15
|
+
* convention to JavaScript's 0-based Date constructor.
|
|
16
|
+
*/
|
|
17
|
+
declare function localDateProtoToDate(proto: LocalDateProto | undefined | null): Date | null;
|
|
18
|
+
/**
|
|
19
|
+
* Convert a native Date to a LocalDateProto. Translates JS's 0-based month
|
|
20
|
+
* to the proto's 1-based convention; year/day pass through.
|
|
21
|
+
*/
|
|
22
|
+
declare function dateToLocalDateProto(d: Date): LocalDateProto;
|
|
23
|
+
export { LocalDate, localDateProtoToDate, dateToLocalDateProto };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LocalDate = void 0;
|
|
3
|
+
exports.dateToLocalDateProto = exports.localDateProtoToDate = exports.LocalDate = void 0;
|
|
4
4
|
const local_date_pb_1 = require("../../../fintekkers/models/util/local_date_pb");
|
|
5
5
|
const serialization_1 = require("./serialization");
|
|
6
6
|
class LocalDate {
|
|
@@ -28,4 +28,29 @@ class LocalDate {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.LocalDate = LocalDate;
|
|
31
|
+
/**
|
|
32
|
+
* Convert a LocalDateProto to a native Date, or null when the proto is
|
|
33
|
+
* undefined/null. Hours/min/sec/ms are zeroed so equality comparisons across
|
|
34
|
+
* accessors are deterministic. Months are translated from proto's 1-based
|
|
35
|
+
* convention to JavaScript's 0-based Date constructor.
|
|
36
|
+
*/
|
|
37
|
+
function localDateProtoToDate(proto) {
|
|
38
|
+
if (!proto)
|
|
39
|
+
return null;
|
|
40
|
+
const d = new Date(proto.getYear(), proto.getMonth() - 1, proto.getDay());
|
|
41
|
+
d.setHours(0, 0, 0, 0);
|
|
42
|
+
return d;
|
|
43
|
+
}
|
|
44
|
+
exports.localDateProtoToDate = localDateProtoToDate;
|
|
45
|
+
/**
|
|
46
|
+
* Convert a native Date to a LocalDateProto. Translates JS's 0-based month
|
|
47
|
+
* to the proto's 1-based convention; year/day pass through.
|
|
48
|
+
*/
|
|
49
|
+
function dateToLocalDateProto(d) {
|
|
50
|
+
return new local_date_pb_1.LocalDateProto()
|
|
51
|
+
.setYear(d.getFullYear())
|
|
52
|
+
.setMonth(d.getMonth() + 1)
|
|
53
|
+
.setDay(d.getDate());
|
|
54
|
+
}
|
|
55
|
+
exports.dateToLocalDateProto = dateToLocalDateProto;
|
|
31
56
|
//# sourceMappingURL=date.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["date.ts"],"names":[],"mappings":";;;AACA,iFAA+E;AAC/E,mDAAyD;AAEzD,MAAM,SAAS;IAGb,YAAY,KAAqB;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,sEAAsE;QACtE,gFAAgF;QAChF,4EAA4E;QAC5E,OAAO,sCAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAS,CAAC;IAChE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACxF,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK;QACV,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAU;QACpB,OAAO,IAAI,SAAS,CAClB,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CACtG,CAAC;IACJ,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["date.ts"],"names":[],"mappings":";;;AACA,iFAA+E;AAC/E,mDAAyD;AAEzD,MAAM,SAAS;IAGb,YAAY,KAAqB;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,sEAAsE;QACtE,gFAAgF;QAChF,4EAA4E;QAC5E,OAAO,sCAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAS,CAAC;IAChE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACxF,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK;QACV,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAU;QACpB,OAAO,IAAI,SAAS,CAClB,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CACtG,CAAC;IACJ,CAAC;CACF;AA0BQ,8BAAS;AAxBlB;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAwC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC;AACX,CAAC;AAamB,oDAAoB;AAXxC;;;GAGG;AACH,SAAS,oBAAoB,CAAC,CAAO;IACnC,OAAO,IAAI,8BAAc,EAAE;SACxB,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACxB,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACzB,CAAC;AAEyC,oDAAoB"}
|
|
@@ -36,4 +36,28 @@ class LocalDate {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Convert a LocalDateProto to a native Date, or null when the proto is
|
|
41
|
+
* undefined/null. Hours/min/sec/ms are zeroed so equality comparisons across
|
|
42
|
+
* accessors are deterministic. Months are translated from proto's 1-based
|
|
43
|
+
* convention to JavaScript's 0-based Date constructor.
|
|
44
|
+
*/
|
|
45
|
+
function localDateProtoToDate(proto: LocalDateProto | undefined | null): Date | null {
|
|
46
|
+
if (!proto) return null;
|
|
47
|
+
const d = new Date(proto.getYear(), proto.getMonth() - 1, proto.getDay());
|
|
48
|
+
d.setHours(0, 0, 0, 0);
|
|
49
|
+
return d;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Convert a native Date to a LocalDateProto. Translates JS's 0-based month
|
|
54
|
+
* to the proto's 1-based convention; year/day pass through.
|
|
55
|
+
*/
|
|
56
|
+
function dateToLocalDateProto(d: Date): LocalDateProto {
|
|
57
|
+
return new LocalDateProto()
|
|
58
|
+
.setYear(d.getFullYear())
|
|
59
|
+
.setMonth(d.getMonth() + 1)
|
|
60
|
+
.setDay(d.getDate());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { LocalDate, localDateProtoToDate, dateToLocalDateProto };
|
|
@@ -17,6 +17,7 @@ const SecurityService_1 = require("./SecurityService");
|
|
|
17
17
|
const positionfilter_1 = require("../../models/position/positionfilter");
|
|
18
18
|
const serialization_1 = require("../../models/utils/serialization");
|
|
19
19
|
test('test the api.fintekkers.org security service by creating a maturity ladder for the US government', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
var _a, _b;
|
|
20
21
|
//Get list of all securities from the US government, with a maturity data beyond today's date
|
|
21
22
|
const securityService = new SecurityService_1.SecurityService();
|
|
22
23
|
const positionFilter = new positionfilter_1.PositionFilter();
|
|
@@ -32,10 +33,11 @@ test('test the api.fintekkers.org security service by creating a maturity ladder
|
|
|
32
33
|
let issuanceList = bondDetails ? bondDetails.getIssuanceInfoList() : [];
|
|
33
34
|
let issuance = issuanceList && issuanceList.length > 0 ? issuanceList[0] : null;
|
|
34
35
|
if (issuance) {
|
|
35
|
-
|
|
36
|
+
const maturityYear = (_b = (_a = security.getMaturityDate()) === null || _a === void 0 ? void 0 : _a.getFullYear()) !== null && _b !== void 0 ? _b : 0;
|
|
37
|
+
if (!issuance.getPostAuctionOutstandingQuantity() && maturityYear > 2009) {
|
|
36
38
|
// (debug only) primary identifier available via security.getIdentifiers()[0]
|
|
37
39
|
}
|
|
38
|
-
else if (!issuance.getPostAuctionOutstandingQuantity() &&
|
|
40
|
+
else if (!issuance.getPostAuctionOutstandingQuantity() && maturityYear <= 2009) {
|
|
39
41
|
//Swallow this data gap. It's old and we don't mind
|
|
40
42
|
}
|
|
41
43
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.maturityLadder.test.js","sourceRoot":"","sources":["security.maturityLadder.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAkC;AAElC,SAAS;AAET,cAAc;AACd,2EAA0E;AAC1E,uDAAoD;AACpD,yEAAsE;AAEtE,oEAA0E;AAE1E,IAAI,CAAC,kGAAkG,EAAE,GAAS,EAAE
|
|
1
|
+
{"version":3,"file":"security.maturityLadder.test.js","sourceRoot":"","sources":["security.maturityLadder.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAkC;AAElC,SAAS;AAET,cAAc;AACd,2EAA0E;AAC1E,uDAAoD;AACpD,yEAAsE;AAEtE,oEAA0E;AAE1E,IAAI,CAAC,kGAAkG,EAAE,GAAS,EAAE;;IAChH,6FAA6F;IAC7F,MAAM,eAAe,GAAG,IAAI,iCAAe,EAAE,CAAC;IAE9C,MAAM,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;IAC5C,cAAc,CAAC,eAAe,CAAC,qBAAU,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACvE,cAAc,CAAC,eAAe,CAAC,qBAAU,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAEjF,IAAI,UAAU,GAAG,MAAM,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAE7E,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,+CAA+C;IAC/C,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE;QAC1B,IAAI,QAAQ,GAAa,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAClD,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,QAAQ,GAAG,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhF,IAAI,QAAQ,EAAE;YACV,MAAM,YAAY,GAAG,MAAA,MAAA,QAAQ,CAAC,eAAe,EAAE,0CAAE,WAAW,EAAE,mCAAI,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAI,YAAY,GAAG,IAAI,EAAE;gBACtE,6EAA6E;aAChF;iBAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAI,YAAY,IAAI,IAAI,EAAE;gBAC9E,mDAAmD;aACtD;iBAAM;gBACH,IAAI,mBAAmB,GAAW,sCAAsB,CAAC,WAAW,CAAC,QAAQ,CAAC,iCAAiC,EAAE,CAAW,CAAC;gBAC7H,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC9C,IAAI,EAAE,GAAW,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAE5G,IAAI,MAAM,GAAG;oBACT,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,QAAQ,CAAC,YAAY,EAAE;oBACpC,mBAAmB,EAAE,mBAAmB;oBACxC,cAAc,EAAE,QAAQ,CAAC,eAAe,EAAE;iBAC7C,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxB;SACJ;KACJ;IAED,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAA,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -31,9 +31,10 @@ test('test the api.fintekkers.org security service by creating a maturity ladder
|
|
|
31
31
|
let issuance = issuanceList && issuanceList.length > 0 ? issuanceList[0] : null;
|
|
32
32
|
|
|
33
33
|
if (issuance) {
|
|
34
|
-
|
|
34
|
+
const maturityYear = security.getMaturityDate()?.getFullYear() ?? 0;
|
|
35
|
+
if (!issuance.getPostAuctionOutstandingQuantity() && maturityYear > 2009) {
|
|
35
36
|
// (debug only) primary identifier available via security.getIdentifiers()[0]
|
|
36
|
-
} else if (!issuance.getPostAuctionOutstandingQuantity() &&
|
|
37
|
+
} else if (!issuance.getPostAuctionOutstandingQuantity() && maturityYear <= 2009) {
|
|
37
38
|
//Swallow this data gap. It's old and we don't mind
|
|
38
39
|
} else {
|
|
39
40
|
let postAuctionQuantity: number = ProtoSerializationUtil.deserialize(issuance.getPostAuctionOutstandingQuantity()) as number;
|