@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.
Files changed (51) hide show
  1. package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.d.ts +1 -0
  2. package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.js +61 -0
  3. package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.js.map +1 -0
  4. package/node/fintekkers/requests/position/query_position_request.packed_enum_v4.test.ts +65 -0
  5. package/node/fintekkers/requests/position/query_position_request_pb.js +2 -2
  6. package/node/fintekkers/requests/security/get_fields_response_pb.js +1 -1
  7. package/node/fintekkers/requests/valuation/curve_request_pb.js +1 -1
  8. package/node/fintekkers/requests/valuation/valuation_request_pb.js +1 -1
  9. package/node/wrappers/models/security/BondSecurity.d.ts +5 -21
  10. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +17 -11
  11. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -1
  12. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +17 -11
  13. package/node/wrappers/models/security/BondSecurity.js +15 -32
  14. package/node/wrappers/models/security/BondSecurity.js.map +1 -1
  15. package/node/wrappers/models/security/BondSecurity.ts +18 -37
  16. package/node/wrappers/models/security/Issuance.d.ts +3 -5
  17. package/node/wrappers/models/security/Issuance.js +3 -8
  18. package/node/wrappers/models/security/Issuance.js.map +1 -1
  19. package/node/wrappers/models/security/Issuance.test.js +16 -8
  20. package/node/wrappers/models/security/Issuance.test.js.map +1 -1
  21. package/node/wrappers/models/security/Issuance.test.ts +10 -2
  22. package/node/wrappers/models/security/Issuance.ts +6 -12
  23. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js +11 -7
  24. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js.map +1 -1
  25. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.ts +12 -8
  26. package/node/wrappers/models/security/TIPSBond.d.ts +2 -3
  27. package/node/wrappers/models/security/TIPSBond.js +2 -4
  28. package/node/wrappers/models/security/TIPSBond.js.map +1 -1
  29. package/node/wrappers/models/security/TIPSBond.ts +5 -7
  30. package/node/wrappers/models/security/security.d.ts +38 -12
  31. package/node/wrappers/models/security/security.js +58 -15
  32. package/node/wrappers/models/security/security.js.map +1 -1
  33. package/node/wrappers/models/security/security.test.js +91 -10
  34. package/node/wrappers/models/security/security.test.js.map +1 -1
  35. package/node/wrappers/models/security/security.test.ts +106 -11
  36. package/node/wrappers/models/security/security.ts +64 -16
  37. package/node/wrappers/models/transaction/transaction.d.ts +2 -3
  38. package/node/wrappers/models/transaction/transaction.js +23 -21
  39. package/node/wrappers/models/transaction/transaction.js.map +1 -1
  40. package/node/wrappers/models/transaction/transaction.ts +22 -21
  41. package/node/wrappers/models/transaction/transaction_constructor.test.js +4 -2
  42. package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
  43. package/node/wrappers/models/transaction/transaction_constructor.test.ts +10 -8
  44. package/node/wrappers/models/utils/date.d.ts +13 -1
  45. package/node/wrappers/models/utils/date.js +26 -1
  46. package/node/wrappers/models/utils/date.js.map +1 -1
  47. package/node/wrappers/models/utils/date.ts +25 -1
  48. package/node/wrappers/services/security-service/security.maturityLadder.test.js +4 -2
  49. package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
  50. package/node/wrappers/services/security-service/security.maturityLadder.test.ts +3 -2
  51. 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 { LocalDate } from "../utils/date";
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(LocalDate.from(params.tradeDate).toProto());
59
- transactionProto.setSettlementDate(LocalDate.from(params.settlementDate).toProto());
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().toString()}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
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(): LocalDate {
190
- const tradeDate = this.proto.getTradeDate();
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(): LocalDate {
196
- const settlementDate = this.proto.getSettlementDate();
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 faceValueProto = bondSecurity.getFaceValue();
295
- const faceValue = new Decimal(faceValueProto.getArbitraryPrecisionValue());
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: parentTransaction.getTradeDate().toDate(),
319
- settlementDate: parentTransaction.getSettlementDate().toDate(),
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 maturityDateObj = maturityDate.toDate();
357
- maturityDateObj.setDate(maturityDateObj.getDate() + 2);
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.toDate(),
370
- settlementDate: settlementDate.toDate(),
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().toDate();
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().toDate();
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":"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"}
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().toDate();
50
- assert(tradeDateFromTransaction.getFullYear() === tradeDate.getFullYear());
51
- assert(tradeDateFromTransaction.getMonth() === tradeDate.getMonth());
52
- assert(tradeDateFromTransaction.getDate() === tradeDate.getDate());
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().toDate();
56
- assert(settlementDateFromTransaction.getFullYear() === settlementDate.getFullYear());
57
- assert(settlementDateFromTransaction.getMonth() === settlementDate.getMonth());
58
- assert(settlementDateFromTransaction.getDate() === settlementDate.getDate());
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
- export { LocalDate };
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;AAEQ,8BAAS"}
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
- export { LocalDate };
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
- if (!issuance.getPostAuctionOutstandingQuantity() && security.getMaturityDate().toDate().getFullYear() > 2009) {
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() && security.getMaturityDate().toDate().getFullYear() <= 2009) {
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;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,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE;gBAC3G,6EAA6E;aAChF;iBAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;gBACnH,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"}
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
- if (!issuance.getPostAuctionOutstandingQuantity() && security.getMaturityDate().toDate().getFullYear() > 2009) {
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() && security.getMaturityDate().toDate().getFullYear() <= 2009) {
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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fintekkers/ledger-models",
3
3
  "todo": "Replace the version with build script version number",
4
- "version": "0.4.2",
4
+ "version": "0.4.4",
5
5
  "description": "ledger model protos ",
6
6
  "authors": [
7
7
  "David Doherty",