@fintekkers/ledger-models 0.3.1 → 0.4.1
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/models/security/security_pb.d.ts +0 -80
- package/node/fintekkers/models/security/security_pb.js +1 -723
- package/node/fintekkers/models/security/security_pb.test.js +15 -15
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +17 -18
- package/node/wrappers/models/price/Price.cash.test.js +1 -1
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -2
- package/node/wrappers/models/security/BondSecurity.d.ts +41 -3
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.d.ts +1 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +75 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +95 -0
- package/node/wrappers/models/security/BondSecurity.js +57 -9
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
- package/node/wrappers/models/security/BondSecurity.test.js +28 -20
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
- package/node/wrappers/models/security/BondSecurity.ts +72 -10
- package/node/wrappers/models/security/FloatingRateNote.d.ts +30 -0
- package/node/wrappers/models/security/FloatingRateNote.js +80 -0
- package/node/wrappers/models/security/FloatingRateNote.js.map +1 -0
- package/node/wrappers/models/security/FloatingRateNote.ts +67 -0
- package/node/wrappers/models/security/IndexSecurity.d.ts +16 -0
- package/node/wrappers/models/security/IndexSecurity.js +26 -0
- package/node/wrappers/models/security/IndexSecurity.js.map +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.d.ts +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.js +60 -0
- package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.ts +60 -0
- package/node/wrappers/models/security/IndexSecurity.ts +24 -0
- package/node/wrappers/models/security/Issuance.d.ts +35 -0
- package/node/wrappers/models/security/Issuance.js +64 -0
- package/node/wrappers/models/security/Issuance.js.map +1 -0
- package/node/wrappers/models/security/Issuance.test.d.ts +1 -0
- package/node/wrappers/models/security/Issuance.test.js +55 -0
- package/node/wrappers/models/security/Issuance.test.js.map +1 -0
- package/node/wrappers/models/security/Issuance.test.ts +52 -0
- package/node/wrappers/models/security/Issuance.ts +74 -0
- package/node/wrappers/models/security/TIPSBond.d.ts +30 -0
- package/node/wrappers/models/security/TIPSBond.js +83 -0
- package/node/wrappers/models/security/TIPSBond.js.map +1 -0
- package/node/wrappers/models/security/TIPSBond.ts +70 -0
- package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
- package/node/wrappers/models/security/security.d.ts +21 -6
- package/node/wrappers/models/security/security.identifiers.test.d.ts +1 -0
- package/node/wrappers/models/security/security.identifiers.test.js +67 -0
- package/node/wrappers/models/security/security.identifiers.test.js.map +1 -0
- package/node/wrappers/models/security/security.identifiers.test.ts +67 -0
- package/node/wrappers/models/security/security.js +72 -29
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.test.js +16 -12
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +17 -15
- package/node/wrappers/models/security/security.ts +75 -29
- package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
- package/node/wrappers/models/transaction/transaction.js +4 -2
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.ts +4 -2
- package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
- package/node/wrappers/services/searchWithSecurities.test.js +2 -2
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
- package/node/wrappers/services/security-service/security.maturityLadder.test.js +5 -3
- package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.ts +5 -3
- package/node/wrappers/services/security-service/security.test.js +10 -8
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +12 -9
- package/node/wrappers/util/link-resolver.test.js +1 -1
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const security_1 = __importDefault(require("./security"));
|
|
7
|
+
const security_pb_1 = require("../../../fintekkers/models/security/security_pb");
|
|
8
|
+
const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
|
|
9
|
+
const identifier_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_pb");
|
|
10
|
+
const identifier_type_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_type_pb");
|
|
11
|
+
const uuid_1 = require("../utils/uuid");
|
|
12
|
+
const identifier_1 = require("./identifier");
|
|
13
|
+
function buildSecurityWithIds(ids) {
|
|
14
|
+
const proto = new security_pb_1.SecurityProto()
|
|
15
|
+
.setObjectClass('Security')
|
|
16
|
+
.setVersion('0.0.1')
|
|
17
|
+
.setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
18
|
+
.setProductType(product_type_pb_1.ProductTypeProto.COMMON_STOCK)
|
|
19
|
+
.setAssetClass('Equity')
|
|
20
|
+
.setIssuerName('Acme');
|
|
21
|
+
for (const id of ids) {
|
|
22
|
+
proto.addIdentifiers(new identifier_pb_1.IdentifierProto().setIdentifierType(id.type).setIdentifierValue(id.value));
|
|
23
|
+
}
|
|
24
|
+
return security_1.default.create(proto);
|
|
25
|
+
}
|
|
26
|
+
test('getIdentifiers returns wrapped Identifier list preserving order', () => {
|
|
27
|
+
const sec = buildSecurityWithIds([
|
|
28
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
29
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.CUSIP, value: '037833100' },
|
|
30
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER, value: 'AAPL' },
|
|
31
|
+
]);
|
|
32
|
+
const ids = sec.getIdentifiers();
|
|
33
|
+
expect(ids).toHaveLength(3);
|
|
34
|
+
expect(ids[0]).toBeInstanceOf(identifier_1.Identifier);
|
|
35
|
+
expect(ids[0].getIdentifierValue()).toBe('US0378331005');
|
|
36
|
+
expect(ids[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.ISIN);
|
|
37
|
+
expect(ids[2].getIdentifierValue()).toBe('AAPL');
|
|
38
|
+
});
|
|
39
|
+
test('getIdentifiers returns empty list when none set', () => {
|
|
40
|
+
const sec = buildSecurityWithIds([]);
|
|
41
|
+
expect(sec.getIdentifiers()).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
test('getIdentifierByType finds the matching identifier', () => {
|
|
44
|
+
const sec = buildSecurityWithIds([
|
|
45
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
46
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.CUSIP, value: '037833100' },
|
|
47
|
+
]);
|
|
48
|
+
const cusip = sec.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
|
|
49
|
+
expect(cusip).toBeDefined();
|
|
50
|
+
expect(cusip.getIdentifierValue()).toBe('037833100');
|
|
51
|
+
});
|
|
52
|
+
test('getIdentifierByType returns undefined when type is absent', () => {
|
|
53
|
+
const sec = buildSecurityWithIds([
|
|
54
|
+
{ type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
55
|
+
]);
|
|
56
|
+
expect(sec.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.FIGI)).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
test('identifier accessors throw on a link-mode Security', () => {
|
|
59
|
+
// linkOf builds a link-mode SecurityProto. Reading the identifier list
|
|
60
|
+
// off a link is meaningless, so we explicitly reject it.
|
|
61
|
+
const linkProto = new security_pb_1.SecurityProto().setIsLink(true);
|
|
62
|
+
linkProto.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
63
|
+
const link = security_1.default.create(linkProto);
|
|
64
|
+
expect(() => link.getIdentifiers()).toThrow(/link-mode/);
|
|
65
|
+
expect(() => link.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.ISIN)).toThrow(/link-mode/);
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=security.identifiers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.identifiers.test.js","sourceRoot":"","sources":["security.identifiers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import Security from './security';
|
|
2
|
+
import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
|
|
3
|
+
import { ProductTypeProto } from '../../../fintekkers/models/security/product_type_pb';
|
|
4
|
+
import { IdentifierProto } from '../../../fintekkers/models/security/identifier/identifier_pb';
|
|
5
|
+
import { IdentifierTypeProto } from '../../../fintekkers/models/security/identifier/identifier_type_pb';
|
|
6
|
+
import { UUID } from '../utils/uuid';
|
|
7
|
+
import { Identifier } from './identifier';
|
|
8
|
+
|
|
9
|
+
function buildSecurityWithIds(ids: Array<{ type: IdentifierTypeProto; value: string }>): Security {
|
|
10
|
+
const proto = new SecurityProto()
|
|
11
|
+
.setObjectClass('Security')
|
|
12
|
+
.setVersion('0.0.1')
|
|
13
|
+
.setUuid(UUID.random().toUUIDProto())
|
|
14
|
+
.setProductType(ProductTypeProto.COMMON_STOCK)
|
|
15
|
+
.setAssetClass('Equity')
|
|
16
|
+
.setIssuerName('Acme');
|
|
17
|
+
for (const id of ids) {
|
|
18
|
+
proto.addIdentifiers(new IdentifierProto().setIdentifierType(id.type).setIdentifierValue(id.value));
|
|
19
|
+
}
|
|
20
|
+
return Security.create(proto);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
test('getIdentifiers returns wrapped Identifier list preserving order', () => {
|
|
24
|
+
const sec = buildSecurityWithIds([
|
|
25
|
+
{ type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
26
|
+
{ type: IdentifierTypeProto.CUSIP, value: '037833100' },
|
|
27
|
+
{ type: IdentifierTypeProto.EXCH_TICKER, value: 'AAPL' },
|
|
28
|
+
]);
|
|
29
|
+
const ids = sec.getIdentifiers();
|
|
30
|
+
expect(ids).toHaveLength(3);
|
|
31
|
+
expect(ids[0]).toBeInstanceOf(Identifier);
|
|
32
|
+
expect(ids[0].getIdentifierValue()).toBe('US0378331005');
|
|
33
|
+
expect(ids[0].getIdentifierType()).toBe(IdentifierTypeProto.ISIN);
|
|
34
|
+
expect(ids[2].getIdentifierValue()).toBe('AAPL');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('getIdentifiers returns empty list when none set', () => {
|
|
38
|
+
const sec = buildSecurityWithIds([]);
|
|
39
|
+
expect(sec.getIdentifiers()).toEqual([]);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('getIdentifierByType finds the matching identifier', () => {
|
|
43
|
+
const sec = buildSecurityWithIds([
|
|
44
|
+
{ type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
45
|
+
{ type: IdentifierTypeProto.CUSIP, value: '037833100' },
|
|
46
|
+
]);
|
|
47
|
+
const cusip = sec.getIdentifierByType(IdentifierTypeProto.CUSIP);
|
|
48
|
+
expect(cusip).toBeDefined();
|
|
49
|
+
expect(cusip!.getIdentifierValue()).toBe('037833100');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('getIdentifierByType returns undefined when type is absent', () => {
|
|
53
|
+
const sec = buildSecurityWithIds([
|
|
54
|
+
{ type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
|
|
55
|
+
]);
|
|
56
|
+
expect(sec.getIdentifierByType(IdentifierTypeProto.FIGI)).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('identifier accessors throw on a link-mode Security', () => {
|
|
60
|
+
// linkOf builds a link-mode SecurityProto. Reading the identifier list
|
|
61
|
+
// off a link is meaningless, so we explicitly reject it.
|
|
62
|
+
const linkProto = new SecurityProto().setIsLink(true);
|
|
63
|
+
linkProto.setUuid(UUID.random().toUUIDProto());
|
|
64
|
+
const link = Security.create(linkProto);
|
|
65
|
+
expect(() => link.getIdentifiers()).toThrow(/link-mode/);
|
|
66
|
+
expect(() => link.getIdentifierByType(IdentifierTypeProto.ISIN)).toThrow(/link-mode/);
|
|
67
|
+
});
|
|
@@ -6,6 +6,8 @@ const datetime_1 = require("../utils/datetime");
|
|
|
6
6
|
const uuid_1 = require("../utils/uuid");
|
|
7
7
|
const date_1 = require("../utils/date");
|
|
8
8
|
const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
|
|
9
|
+
const identifier_1 = require("./identifier");
|
|
10
|
+
const product_hierarchy_1 = require("./product_hierarchy");
|
|
9
11
|
class Security {
|
|
10
12
|
constructor(proto) {
|
|
11
13
|
this.proto = proto;
|
|
@@ -63,19 +65,38 @@ class Security {
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
|
-
* Factory method to create the appropriate Security subclass based on
|
|
68
|
+
* Factory method to create the appropriate Security subclass based on
|
|
69
|
+
* the proto's product_type. Dispatch rules:
|
|
70
|
+
* - TIPS -> TIPSBond
|
|
71
|
+
* - TREASURY_FRN -> FloatingRateNote
|
|
72
|
+
* - any other descendant of BOND in hierarchy.json -> BondSecurity
|
|
73
|
+
* - any descendant of INDEX in hierarchy.json -> IndexSecurity
|
|
74
|
+
* - everything else (equity, cash, fx, etc.) -> base Security
|
|
67
75
|
*/
|
|
68
76
|
static create(proto) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
const productType = proto.getProductType();
|
|
78
|
+
const ptName = Object.keys(product_type_pb_1.ProductTypeProto)
|
|
79
|
+
.find(k => product_type_pb_1.ProductTypeProto[k] === productType);
|
|
80
|
+
// TIPS / FRN have dedicated wrappers with extension-specific accessors.
|
|
81
|
+
if (productType === product_type_pb_1.ProductTypeProto.TIPS) {
|
|
82
|
+
const TIPSBond = require('./TIPSBond').default;
|
|
83
|
+
return new TIPSBond(proto);
|
|
84
|
+
}
|
|
85
|
+
if (productType === product_type_pb_1.ProductTypeProto.TREASURY_FRN) {
|
|
86
|
+
const FloatingRateNote = require('./FloatingRateNote').default;
|
|
87
|
+
return new FloatingRateNote(proto);
|
|
88
|
+
}
|
|
89
|
+
// Any other BOND descendant -> generic BondSecurity wrapper.
|
|
90
|
+
if (ptName && (0, product_hierarchy_1.isDescendantOf)(ptName, 'BOND')) {
|
|
91
|
+
const BondSecurity = require('./BondSecurity').default;
|
|
92
|
+
return new BondSecurity(proto);
|
|
78
93
|
}
|
|
94
|
+
// INDEX descendants get the IndexSecurity wrapper.
|
|
95
|
+
if (ptName && (0, product_hierarchy_1.isDescendantOf)(ptName, 'INDEX')) {
|
|
96
|
+
const IndexSecurity = require('./IndexSecurity').default;
|
|
97
|
+
return new IndexSecurity(proto);
|
|
98
|
+
}
|
|
99
|
+
return new Security(proto);
|
|
79
100
|
}
|
|
80
101
|
/**
|
|
81
102
|
* Type guard: true iff this Security is a BondSecurity (BOND_SECURITY,
|
|
@@ -91,12 +112,19 @@ class Security {
|
|
|
91
112
|
*/
|
|
92
113
|
isBond() {
|
|
93
114
|
const t = this.proto.getProductType();
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
115
|
+
const ptName = Object.keys(product_type_pb_1.ProductTypeProto)
|
|
116
|
+
.find(k => product_type_pb_1.ProductTypeProto[k] === t);
|
|
117
|
+
if (!ptName)
|
|
118
|
+
return false;
|
|
119
|
+
return (0, product_hierarchy_1.isDescendantOf)(ptName, 'BOND');
|
|
97
120
|
}
|
|
98
121
|
toString() {
|
|
99
|
-
|
|
122
|
+
const ids = this.proto.getIsLink() ? [] : this.proto.getIdentifiersList();
|
|
123
|
+
const idStr = ids && ids.length > 0
|
|
124
|
+
? new identifier_1.Identifier(ids[0]).toString()
|
|
125
|
+
: '<no-identifier>';
|
|
126
|
+
const issuer = this.proto.getIsLink() ? '<link>' : this.getIssuerName();
|
|
127
|
+
return `ID[${this.getID().toString()}], ${idStr}[${issuer}]`;
|
|
100
128
|
}
|
|
101
129
|
getFields() {
|
|
102
130
|
return [field_pb_1.FieldProto.ID, field_pb_1.FieldProto.SECURITY_ID, field_pb_1.FieldProto.AS_OF, field_pb_1.FieldProto.ASSET_CLASS, field_pb_1.FieldProto.IDENTIFIER];
|
|
@@ -114,8 +142,10 @@ class Security {
|
|
|
114
142
|
return this.getProductClass();
|
|
115
143
|
case field_pb_1.FieldProto.PRODUCT_TYPE:
|
|
116
144
|
return this.getProductType();
|
|
117
|
-
case field_pb_1.FieldProto.IDENTIFIER:
|
|
118
|
-
|
|
145
|
+
case field_pb_1.FieldProto.IDENTIFIER: {
|
|
146
|
+
const list = this.proto.getIdentifiersList();
|
|
147
|
+
return list && list.length > 0 ? new identifier_1.Identifier(list[0]) : null;
|
|
148
|
+
}
|
|
119
149
|
case field_pb_1.FieldProto.TENOR:
|
|
120
150
|
case field_pb_1.FieldProto.ADJUSTED_TENOR:
|
|
121
151
|
throw new Error('Not implemented yet');
|
|
@@ -164,12 +194,28 @@ class Security {
|
|
|
164
194
|
const securityTypeString = Object.keys(product_type_pb_1.ProductTypeProto).find(key => product_type_pb_1.ProductTypeProto[key] === securityType);
|
|
165
195
|
return securityTypeString || 'UNKNOWN_SECURITY_TYPE';
|
|
166
196
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Returns every Identifier attached to this security as typed wrappers.
|
|
199
|
+
* Empty list if none are set. Throws on a link-mode Security.
|
|
200
|
+
*/
|
|
201
|
+
getIdentifiers() {
|
|
202
|
+
this.assertNotLink('identifiers');
|
|
203
|
+
const list = this.proto.getIdentifiersList();
|
|
204
|
+
if (!list)
|
|
205
|
+
return [];
|
|
206
|
+
return list.map(p => new identifier_1.Identifier(p));
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns the first Identifier matching the given IdentifierTypeProto,
|
|
210
|
+
* or undefined if none is present. Throws on a link-mode Security.
|
|
211
|
+
*/
|
|
212
|
+
getIdentifierByType(type) {
|
|
213
|
+
this.assertNotLink('identifierByType');
|
|
214
|
+
const list = this.proto.getIdentifiersList();
|
|
215
|
+
if (!list)
|
|
216
|
+
return undefined;
|
|
217
|
+
const found = list.find(p => p.getIdentifierType() === type);
|
|
218
|
+
return found ? new identifier_1.Identifier(found) : undefined;
|
|
173
219
|
}
|
|
174
220
|
/**
|
|
175
221
|
* Returns the issue date if set, else null. Per-type semantic:
|
|
@@ -185,9 +231,8 @@ class Security {
|
|
|
185
231
|
*/
|
|
186
232
|
getIssueDate() {
|
|
187
233
|
this.assertNotLink('issueDate');
|
|
188
|
-
// Prefer oneof bond sub-message if available, fall back to flat fields
|
|
189
234
|
const bond = this.getBondLikeDetails();
|
|
190
|
-
const date = bond ? bond.getIssueDate() :
|
|
235
|
+
const date = bond ? bond.getIssueDate() : undefined;
|
|
191
236
|
if (!date)
|
|
192
237
|
return null;
|
|
193
238
|
return new date_1.LocalDate(date);
|
|
@@ -204,18 +249,16 @@ class Security {
|
|
|
204
249
|
*/
|
|
205
250
|
getMaturityDate() {
|
|
206
251
|
this.assertNotLink('maturityDate');
|
|
207
|
-
// Prefer oneof bond sub-message if available, fall back to flat fields
|
|
208
252
|
const bond = this.getBondLikeDetails();
|
|
209
|
-
const date = bond ? bond.getMaturityDate() :
|
|
253
|
+
const date = bond ? bond.getMaturityDate() : undefined;
|
|
210
254
|
if (!date)
|
|
211
255
|
throw new Error("Maturity date is required");
|
|
212
256
|
return new date_1.LocalDate(date);
|
|
213
257
|
}
|
|
214
258
|
/**
|
|
215
259
|
* Returns the canonical bond_details sub-message if set, else undefined.
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* tips_extension / frn_extension fields.
|
|
260
|
+
* TIPS and FRN extras live in their own tips_extension / frn_extension
|
|
261
|
+
* fields and co-exist with bond_details.
|
|
219
262
|
*/
|
|
220
263
|
getBondLikeDetails() {
|
|
221
264
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["security.ts"],"names":[],"mappings":";;AAAA,2EAA0E;
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["security.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,34 +64,38 @@ test('BondSecurity.getMaturityDate works on bond (inherited from Security)', ()
|
|
|
64
64
|
expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2026);
|
|
65
65
|
});
|
|
66
66
|
function dummySecurity() {
|
|
67
|
+
const bond = new security_pb_1.BondDetailsProto()
|
|
68
|
+
.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
|
|
69
|
+
.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
|
|
70
|
+
.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
|
|
71
|
+
.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
72
|
+
.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
73
|
+
.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
67
74
|
return security_1.default.create(new security_pb_1.SecurityProto()
|
|
68
75
|
.setObjectClass('Transaction').setVersion('0.0.1').setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
69
|
-
.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
70
76
|
.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
|
|
71
77
|
.setAssetClass("Bond")
|
|
72
78
|
.setIssuerName("Dummy issuer")
|
|
73
|
-
.
|
|
74
|
-
.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
|
|
75
|
-
.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
|
|
76
|
-
.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
77
|
-
.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1))
|
|
79
|
+
.setBondDetails(bond)
|
|
78
80
|
.setDescription("Dummy security"));
|
|
79
81
|
}
|
|
80
82
|
function dummyBondSecurity() {
|
|
81
83
|
// Same dummy security but with securityType set so the factory routes
|
|
82
84
|
// to BondSecurity.
|
|
85
|
+
const bond = new security_pb_1.BondDetailsProto()
|
|
86
|
+
.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
|
|
87
|
+
.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
|
|
88
|
+
.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
|
|
89
|
+
.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
90
|
+
.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
91
|
+
.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
83
92
|
return security_1.default.create(new security_pb_1.SecurityProto()
|
|
84
93
|
.setObjectClass('Security').setVersion('0.0.1').setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
85
94
|
.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE)
|
|
86
|
-
.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
87
95
|
.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
|
|
88
96
|
.setAssetClass("Bond")
|
|
89
97
|
.setIssuerName("Dummy issuer")
|
|
90
|
-
.
|
|
91
|
-
.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
|
|
92
|
-
.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
|
|
93
|
-
.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
94
|
-
.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1))
|
|
98
|
+
.setBondDetails(bond)
|
|
95
99
|
.setDescription("Dummy bond"));
|
|
96
100
|
}
|
|
97
101
|
function dummyEquity() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.test.js","sourceRoot":"","sources":["security.test.ts"],"names":[],"mappings":";;;;;AAAA,iFAA+E;AAC/E,wCAAqC;AAErC,iCAAkC;AAClC,0DAAkC;AAClC,kEAA0C;AAE1C,uFAAqF;AACrF,
|
|
1
|
+
{"version":3,"file":"security.test.js","sourceRoot":"","sources":["security.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import Security from './security';
|
|
|
6
6
|
import BondSecurity from './BondSecurity';
|
|
7
7
|
|
|
8
8
|
import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
|
|
9
|
-
import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
|
|
9
|
+
import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
|
|
10
10
|
import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
|
|
11
11
|
import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
|
|
12
12
|
import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
|
|
@@ -70,19 +70,19 @@ test('BondSecurity.getMaturityDate works on bond (inherited from Security)', ()
|
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
function dummySecurity() {
|
|
73
|
+
const bond = new BondDetailsProto()
|
|
74
|
+
.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
|
|
75
|
+
.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
|
|
76
|
+
.setCouponType(CouponTypeProto.FIXED)
|
|
77
|
+
.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
78
|
+
.setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
79
|
+
.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
73
80
|
return Security.create(new SecurityProto()
|
|
74
81
|
.setObjectClass('Transaction').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
|
|
75
|
-
.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
76
82
|
.setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
|
|
77
83
|
.setAssetClass("Bond")
|
|
78
84
|
.setIssuerName("Dummy issuer")
|
|
79
|
-
|
|
80
|
-
.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
|
|
81
|
-
.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
|
|
82
|
-
.setCouponType(CouponTypeProto.FIXED)
|
|
83
|
-
|
|
84
|
-
.setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
85
|
-
.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1))
|
|
85
|
+
.setBondDetails(bond)
|
|
86
86
|
.setDescription("Dummy security")
|
|
87
87
|
);
|
|
88
88
|
}
|
|
@@ -90,18 +90,20 @@ function dummySecurity() {
|
|
|
90
90
|
function dummyBondSecurity() {
|
|
91
91
|
// Same dummy security but with securityType set so the factory routes
|
|
92
92
|
// to BondSecurity.
|
|
93
|
+
const bond = new BondDetailsProto()
|
|
94
|
+
.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
|
|
95
|
+
.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
|
|
96
|
+
.setCouponType(CouponTypeProto.FIXED)
|
|
97
|
+
.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
98
|
+
.setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
99
|
+
.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
93
100
|
return Security.create(new SecurityProto()
|
|
94
101
|
.setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
|
|
95
102
|
.setProductType(ProductTypeProto.TREASURY_NOTE)
|
|
96
|
-
.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
|
|
97
103
|
.setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
|
|
98
104
|
.setAssetClass("Bond")
|
|
99
105
|
.setIssuerName("Dummy issuer")
|
|
100
|
-
.
|
|
101
|
-
.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
|
|
102
|
-
.setCouponType(CouponTypeProto.FIXED)
|
|
103
|
-
.setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
|
|
104
|
-
.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1))
|
|
106
|
+
.setBondDetails(bond)
|
|
105
107
|
.setDescription("Dummy bond")
|
|
106
108
|
);
|
|
107
109
|
}
|