@fintekkers/ledger-models 0.4.0 → 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/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 +50 -2
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.ts +65 -3
- 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.d.ts +19 -3
- 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 +67 -22
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.ts +70 -22
- 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/services/security-service/security.maturityLadder.test.js +3 -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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import BondSecurity, {
|
|
2
|
+
BondPricerInputs,
|
|
3
|
+
buildBondDetails,
|
|
4
|
+
decimalToProto,
|
|
5
|
+
localDateToProto,
|
|
6
|
+
} from './BondSecurity';
|
|
7
|
+
import { SecurityProto, TipsExtensionProto } from '../../../fintekkers/models/security/security_pb';
|
|
8
|
+
import { ProductTypeProto } from '../../../fintekkers/models/security/product_type_pb';
|
|
9
|
+
import { IndexTypeProto } from '../../../fintekkers/models/security/index/index_type_pb';
|
|
10
|
+
import { LocalDate } from '../utils/date';
|
|
11
|
+
import { Decimal } from 'decimal.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* TIPS-specific accessors layered on top of BondSecurity. The inflation
|
|
15
|
+
* fields live in the parallel tips_extension sub-message; bond_details
|
|
16
|
+
* (coupon, maturity, etc.) still carries the rest.
|
|
17
|
+
*/
|
|
18
|
+
class TIPSBond extends BondSecurity {
|
|
19
|
+
constructor(proto: SecurityProto) {
|
|
20
|
+
super(proto);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private getTipsExtension(): TipsExtensionProto | undefined {
|
|
24
|
+
return this.proto.getTipsExtension() ?? undefined;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Base CPI value at issue, used to scale inflation-adjusted principal. */
|
|
28
|
+
getBaseCpi(): Decimal | null {
|
|
29
|
+
const ext = this.getTipsExtension();
|
|
30
|
+
const v = ext ? ext.getBaseCpi() : undefined;
|
|
31
|
+
if (!v) return null;
|
|
32
|
+
return new Decimal(v.getArbitraryPrecisionValue());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Reference date for the base CPI fixing. */
|
|
36
|
+
getIndexDate(): LocalDate | null {
|
|
37
|
+
const ext = this.getTipsExtension();
|
|
38
|
+
const d = ext ? ext.getIndexDate() : undefined;
|
|
39
|
+
if (!d) return null;
|
|
40
|
+
return new LocalDate(d);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Which inflation index drives accruals (CPI_U on US TIPS). */
|
|
44
|
+
getInflationIndexType(): IndexTypeProto {
|
|
45
|
+
const ext = this.getTipsExtension();
|
|
46
|
+
return ext ? ext.getInflationIndexType() : IndexTypeProto.UNKNOWN_INDEX_TYPE;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Build a fresh SecurityProto for a TIPS bond. product_type is set to
|
|
51
|
+
* TIPS so Security.create routes back to this wrapper.
|
|
52
|
+
*/
|
|
53
|
+
static fromPricerInputs(args: BondPricerInputs & {
|
|
54
|
+
baseCpi: Decimal;
|
|
55
|
+
indexDate: LocalDate;
|
|
56
|
+
inflationIndexType: IndexTypeProto;
|
|
57
|
+
}): SecurityProto {
|
|
58
|
+
const bond = buildBondDetails(args);
|
|
59
|
+
const tips = new TipsExtensionProto()
|
|
60
|
+
.setBaseCpi(decimalToProto(args.baseCpi))
|
|
61
|
+
.setIndexDate(localDateToProto(args.indexDate))
|
|
62
|
+
.setInflationIndexType(args.inflationIndexType);
|
|
63
|
+
return new SecurityProto()
|
|
64
|
+
.setProductType(ProductTypeProto.TIPS)
|
|
65
|
+
.setBondDetails(bond)
|
|
66
|
+
.setTipsExtension(tips);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export default TIPSBond;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { FieldProto } from "../../../fintekkers/models/position/field_pb";
|
|
2
|
-
import { IdentifierProto } from "../../../fintekkers/models/security/identifier/identifier_pb";
|
|
3
2
|
import { SecurityProto } from "../../../fintekkers/models/security/security_pb";
|
|
4
3
|
import { ZonedDateTime } from "../utils/datetime";
|
|
5
4
|
import { UUID } from "../utils/uuid";
|
|
6
5
|
import { LocalDate } from "../utils/date";
|
|
6
|
+
import { IdentifierTypeProto } from "../../../fintekkers/models/security/identifier/identifier_type_pb";
|
|
7
|
+
import { Identifier } from "./identifier";
|
|
7
8
|
declare class Security {
|
|
8
9
|
proto: SecurityProto;
|
|
9
10
|
constructor(proto: SecurityProto);
|
|
@@ -33,7 +34,13 @@ declare class Security {
|
|
|
33
34
|
*/
|
|
34
35
|
private assertNotLink;
|
|
35
36
|
/**
|
|
36
|
-
* Factory method to create the appropriate Security subclass based on
|
|
37
|
+
* Factory method to create the appropriate Security subclass based on
|
|
38
|
+
* the proto's product_type. Dispatch rules:
|
|
39
|
+
* - TIPS -> TIPSBond
|
|
40
|
+
* - TREASURY_FRN -> FloatingRateNote
|
|
41
|
+
* - any other descendant of BOND in hierarchy.json -> BondSecurity
|
|
42
|
+
* - any descendant of INDEX in hierarchy.json -> IndexSecurity
|
|
43
|
+
* - everything else (equity, cash, fx, etc.) -> base Security
|
|
37
44
|
*/
|
|
38
45
|
static create(proto: SecurityProto): Security;
|
|
39
46
|
/**
|
|
@@ -63,7 +70,16 @@ declare class Security {
|
|
|
63
70
|
getAssetClass(): string;
|
|
64
71
|
getProductClass(): string;
|
|
65
72
|
getProductType(): string;
|
|
66
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Returns every Identifier attached to this security as typed wrappers.
|
|
75
|
+
* Empty list if none are set. Throws on a link-mode Security.
|
|
76
|
+
*/
|
|
77
|
+
getIdentifiers(): Identifier[];
|
|
78
|
+
/**
|
|
79
|
+
* Returns the first Identifier matching the given IdentifierTypeProto,
|
|
80
|
+
* or undefined if none is present. Throws on a link-mode Security.
|
|
81
|
+
*/
|
|
82
|
+
getIdentifierByType(type: IdentifierTypeProto): Identifier | undefined;
|
|
67
83
|
/**
|
|
68
84
|
* Returns the issue date if set, else null. Per-type semantic:
|
|
69
85
|
* - Bond / TIPS / FRN: auction date.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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,13 +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
|
-
|
|
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');
|
|
170
214
|
const list = this.proto.getIdentifiersList();
|
|
171
|
-
if (!list
|
|
172
|
-
|
|
173
|
-
|
|
215
|
+
if (!list)
|
|
216
|
+
return undefined;
|
|
217
|
+
const found = list.find(p => p.getIdentifierType() === type);
|
|
218
|
+
return found ? new identifier_1.Identifier(found) : undefined;
|
|
174
219
|
}
|
|
175
220
|
/**
|
|
176
221
|
* Returns the issue date if set, else null. Per-type semantic:
|
|
@@ -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":";;AAAA,2EAA0E;AAC1E,iFAAgF;AAGhF,gDAAkD;AAClD,wCAAqC;AACrC,wCAA0C;AAC1C,yFAAuF;AAEvF,6CAA0C;AAC1C,2DAAqD;AAErD,MAAM,QAAQ;IAGZ,YAAY,KAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAC,IAAU,EAAE,IAAmB;QAC3C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAC/G,MAAM,KAAK,GAAG,IAAI,2BAAa,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAU;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,2BAAa,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAU;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,IAAmB;QACtD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,QAAgB;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,eAAe,QAAQ,2CAA2C;kBAChE,8CAA8C;kBAC9C,kCAAkC,CACrC,CAAC;SACH;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,KAAoB;QAChC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C;aACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAgB,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QAElD,wEAAwE;QACxE,IAAI,WAAW,KAAK,kCAAgB,CAAC,IAAI,EAAE;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC/C,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,IAAI,WAAW,KAAK,kCAAgB,CAAC,YAAY,EAAE;YACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;YAC/D,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,6DAA6D;QAC7D,IAAI,MAAM,IAAI,IAAA,kCAAc,EAAC,MAAgB,EAAE,MAAM,CAAC,EAAE;YACtD,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;YACvD,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,mDAAmD;QACnD,IAAI,MAAM,IAAI,IAAA,kCAAc,EAAC,MAAgB,EAAE,OAAO,CAAC,EAAE;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C;aACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,IAAA,kCAAc,EAAC,MAAgB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAGD,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,uBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnC,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC;IAC/D,CAAC;IAED,SAAS;QACP,OAAO,CAAC,qBAAU,CAAC,EAAE,EAAE,qBAAU,CAAC,WAAW,EAAE,qBAAU,CAAC,KAAK,EAAE,qBAAU,CAAC,WAAW,EAAE,qBAAU,CAAC,UAAU,CAAC,CAAC;IAClH,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,QAAQ,KAAK,EAAE;YACb,KAAK,qBAAU,CAAC,EAAE,CAAC;YACnB,KAAK,qBAAU,CAAC,WAAW;gBACzB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,qBAAU,CAAC,KAAK;gBACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,qBAAU,CAAC,WAAW;gBACzB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,qBAAU,CAAC,aAAa;gBAC3B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,KAAK,qBAAU,CAAC,YAAY;gBAC1B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,qBAAU,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,uBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aACjE;YACD,KAAK,qBAAU,CAAC,KAAK,CAAC;YACtB,KAAK,qBAAU,CAAC,cAAc;gBAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,KAAK,qBAAU,CAAC,aAAa;gBAC3B,+DAA+D;gBAC/D,uDAAuD;gBACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,KAAK,qBAAU,CAAC,UAAU;gBACxB,gEAAgE;gBAChE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAC;SACrE;IACH,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,IAAI,wBAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C,CAAC,IAAI,CACrG,GAAG,CAAC,EAAE,CAAC,kCAAgB,CAAC,GAAG,CAAC,KAAK,YAAY,CAC9C,CAAC;QAEF,OAAO,kBAAkB,IAAI,uBAAuB,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,IAAyB;QAC3C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,uBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,IAAI,gBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACxD,OAAO,IAAI,gBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACO,kBAAkB;;QAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU;YAAE,OAAO,SAAS,CAAC;QACtE,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,mCAAI,SAAS,CAAC;IAClD,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,IAAI,KAAK,YAAY,QAAQ,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3C;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;CACF;AAED,kBAAe,QAAQ,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FieldProto } from "../../../fintekkers/models/position/field_pb";
|
|
2
|
-
import { IdentifierProto } from "../../../fintekkers/models/security/identifier/identifier_pb";
|
|
3
2
|
import { SecurityProto } from "../../../fintekkers/models/security/security_pb";
|
|
4
3
|
import { UUIDProto } from "../../../fintekkers/models/util/uuid_pb";
|
|
5
4
|
import { LocalTimestampProto } from "../../../fintekkers/models/util/local_timestamp_pb";
|
|
@@ -7,6 +6,9 @@ import { ZonedDateTime } from "../utils/datetime";
|
|
|
7
6
|
import { UUID } from "../utils/uuid";
|
|
8
7
|
import { LocalDate } from "../utils/date";
|
|
9
8
|
import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
|
|
9
|
+
import { IdentifierTypeProto } from "../../../fintekkers/models/security/identifier/identifier_type_pb";
|
|
10
|
+
import { Identifier } from "./identifier";
|
|
11
|
+
import { isDescendantOf } from "./product_hierarchy";
|
|
10
12
|
|
|
11
13
|
class Security {
|
|
12
14
|
proto: SecurityProto;
|
|
@@ -72,19 +74,42 @@ class Security {
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
/**
|
|
75
|
-
* Factory method to create the appropriate Security subclass based on
|
|
77
|
+
* Factory method to create the appropriate Security subclass based on
|
|
78
|
+
* the proto's product_type. Dispatch rules:
|
|
79
|
+
* - TIPS -> TIPSBond
|
|
80
|
+
* - TREASURY_FRN -> FloatingRateNote
|
|
81
|
+
* - any other descendant of BOND in hierarchy.json -> BondSecurity
|
|
82
|
+
* - any descendant of INDEX in hierarchy.json -> IndexSecurity
|
|
83
|
+
* - everything else (equity, cash, fx, etc.) -> base Security
|
|
76
84
|
*/
|
|
77
85
|
static create(proto: SecurityProto): Security {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
const productType = proto.getProductType();
|
|
87
|
+
const ptName = (Object.keys(ProductTypeProto) as Array<keyof typeof ProductTypeProto>)
|
|
88
|
+
.find(k => ProductTypeProto[k] === productType);
|
|
89
|
+
|
|
90
|
+
// TIPS / FRN have dedicated wrappers with extension-specific accessors.
|
|
91
|
+
if (productType === ProductTypeProto.TIPS) {
|
|
92
|
+
const TIPSBond = require('./TIPSBond').default;
|
|
93
|
+
return new TIPSBond(proto);
|
|
94
|
+
}
|
|
95
|
+
if (productType === ProductTypeProto.TREASURY_FRN) {
|
|
96
|
+
const FloatingRateNote = require('./FloatingRateNote').default;
|
|
97
|
+
return new FloatingRateNote(proto);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Any other BOND descendant -> generic BondSecurity wrapper.
|
|
101
|
+
if (ptName && isDescendantOf(ptName as string, 'BOND')) {
|
|
102
|
+
const BondSecurity = require('./BondSecurity').default;
|
|
103
|
+
return new BondSecurity(proto);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// INDEX descendants get the IndexSecurity wrapper.
|
|
107
|
+
if (ptName && isDescendantOf(ptName as string, 'INDEX')) {
|
|
108
|
+
const IndexSecurity = require('./IndexSecurity').default;
|
|
109
|
+
return new IndexSecurity(proto);
|
|
87
110
|
}
|
|
111
|
+
|
|
112
|
+
return new Security(proto);
|
|
88
113
|
}
|
|
89
114
|
|
|
90
115
|
/**
|
|
@@ -101,14 +126,20 @@ class Security {
|
|
|
101
126
|
*/
|
|
102
127
|
isBond(): this is import('./BondSecurity').default {
|
|
103
128
|
const t = this.proto.getProductType();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
129
|
+
const ptName = (Object.keys(ProductTypeProto) as Array<keyof typeof ProductTypeProto>)
|
|
130
|
+
.find(k => ProductTypeProto[k] === t);
|
|
131
|
+
if (!ptName) return false;
|
|
132
|
+
return isDescendantOf(ptName as string, 'BOND');
|
|
107
133
|
}
|
|
108
134
|
|
|
109
135
|
|
|
110
136
|
toString(): string {
|
|
111
|
-
|
|
137
|
+
const ids = this.proto.getIsLink() ? [] : this.proto.getIdentifiersList();
|
|
138
|
+
const idStr = ids && ids.length > 0
|
|
139
|
+
? new Identifier(ids[0]).toString()
|
|
140
|
+
: '<no-identifier>';
|
|
141
|
+
const issuer = this.proto.getIsLink() ? '<link>' : this.getIssuerName();
|
|
142
|
+
return `ID[${this.getID().toString()}], ${idStr}[${issuer}]`;
|
|
112
143
|
}
|
|
113
144
|
|
|
114
145
|
getFields(): FieldProto[] {
|
|
@@ -128,8 +159,10 @@ class Security {
|
|
|
128
159
|
return this.getProductClass();
|
|
129
160
|
case FieldProto.PRODUCT_TYPE:
|
|
130
161
|
return this.getProductType();
|
|
131
|
-
case FieldProto.IDENTIFIER:
|
|
132
|
-
|
|
162
|
+
case FieldProto.IDENTIFIER: {
|
|
163
|
+
const list = this.proto.getIdentifiersList();
|
|
164
|
+
return list && list.length > 0 ? new Identifier(list[0]) : null;
|
|
165
|
+
}
|
|
133
166
|
case FieldProto.TENOR:
|
|
134
167
|
case FieldProto.ADJUSTED_TENOR:
|
|
135
168
|
throw new Error('Not implemented yet');
|
|
@@ -186,12 +219,27 @@ class Security {
|
|
|
186
219
|
return securityTypeString || 'UNKNOWN_SECURITY_TYPE';
|
|
187
220
|
}
|
|
188
221
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Returns every Identifier attached to this security as typed wrappers.
|
|
224
|
+
* Empty list if none are set. Throws on a link-mode Security.
|
|
225
|
+
*/
|
|
226
|
+
getIdentifiers(): Identifier[] {
|
|
227
|
+
this.assertNotLink('identifiers');
|
|
228
|
+
const list = this.proto.getIdentifiersList();
|
|
229
|
+
if (!list) return [];
|
|
230
|
+
return list.map(p => new Identifier(p));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Returns the first Identifier matching the given IdentifierTypeProto,
|
|
235
|
+
* or undefined if none is present. Throws on a link-mode Security.
|
|
236
|
+
*/
|
|
237
|
+
getIdentifierByType(type: IdentifierTypeProto): Identifier | undefined {
|
|
238
|
+
this.assertNotLink('identifierByType');
|
|
192
239
|
const list = this.proto.getIdentifiersList();
|
|
193
|
-
if (!list
|
|
194
|
-
|
|
240
|
+
if (!list) return undefined;
|
|
241
|
+
const found = list.find(p => p.getIdentifierType() === type);
|
|
242
|
+
return found ? new Identifier(found) : undefined;
|
|
195
243
|
}
|
|
196
244
|
|
|
197
245
|
/**
|
|
@@ -94,8 +94,10 @@ class Transaction {
|
|
|
94
94
|
return this.getSecurity().getProductClass();
|
|
95
95
|
case field_pb_1.FieldProto.PRODUCT_TYPE:
|
|
96
96
|
return this.getSecurity().getProductType();
|
|
97
|
-
case field_pb_1.FieldProto.IDENTIFIER:
|
|
98
|
-
|
|
97
|
+
case field_pb_1.FieldProto.IDENTIFIER: {
|
|
98
|
+
const ids = this.getSecurity().getIdentifiers();
|
|
99
|
+
return ids.length > 0 ? ids[0] : null;
|
|
100
|
+
}
|
|
99
101
|
case field_pb_1.FieldProto.TENOR:
|
|
100
102
|
case field_pb_1.FieldProto.ADJUSTED_TENOR:
|
|
101
103
|
throw new Error('Not implemented yet');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"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"}
|