@fintekkers/ledger-models 0.1.115 → 0.1.117
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/position/position.d.ts +3 -1
- package/node/wrappers/models/position/position.js +21 -4
- package/node/wrappers/models/position/position.js.map +1 -1
- package/node/wrappers/models/position/position.test.js +25 -3
- package/node/wrappers/models/position/position.test.js.map +1 -1
- package/node/wrappers/models/position/position.test.ts +32 -4
- package/node/wrappers/models/position/position.ts +23 -6
- package/node/wrappers/models/position/positionfilter.d.ts +2 -0
- package/node/wrappers/models/position/positionfilter.js +9 -0
- package/node/wrappers/models/position/positionfilter.js.map +1 -1
- package/node/wrappers/models/position/positionfilter.test.d.ts +1 -0
- package/node/wrappers/models/position/positionfilter.test.js +132 -0
- package/node/wrappers/models/position/positionfilter.test.js.map +1 -0
- package/node/wrappers/models/position/positionfilter.test.ts +161 -0
- package/node/wrappers/models/position/positionfilter.ts +11 -0
- package/node/wrappers/models/security/coupon_type.test.js +1 -1
- package/node/wrappers/models/security/coupon_type.test.js.map +1 -1
- package/node/wrappers/models/security/coupon_type.test.ts +1 -1
- package/node/wrappers/models/security/identifier.d.ts +29 -0
- package/node/wrappers/models/security/identifier.js +51 -0
- package/node/wrappers/models/security/identifier.js.map +1 -0
- package/node/wrappers/models/security/identifier.test.d.ts +1 -0
- package/node/wrappers/models/security/identifier.test.js +55 -0
- package/node/wrappers/models/security/identifier.test.js.map +1 -0
- package/node/wrappers/models/security/identifier.test.ts +65 -0
- package/node/wrappers/models/security/identifier.ts +58 -0
- package/node/wrappers/models/security/term.test.js +6 -0
- package/node/wrappers/models/security/term.test.js.map +1 -1
- package/node/wrappers/models/security/term.test.ts +7 -0
- package/node/wrappers/models/utils/date.test.js +1 -1
- package/node/wrappers/models/utils/date.test.ts +1 -1
- package/node/wrappers/models/utils/serialization.d.ts +4 -2
- package/node/wrappers/models/utils/serialization.js +5 -1
- package/node/wrappers/models/utils/serialization.js.map +1 -1
- package/node/wrappers/models/utils/serialization.ts +7 -3
- package/node/wrappers/models/utils/serialization.util.d.ts +5 -2
- package/node/wrappers/models/utils/serialization.util.js +24 -1
- package/node/wrappers/models/utils/serialization.util.js.map +1 -1
- package/node/wrappers/models/utils/serialization.util.test.js.map +1 -1
- package/node/wrappers/models/utils/serialization.util.test.ts +3 -3
- package/node/wrappers/models/utils/serialization.util.ts +39 -14
- package/package.json +1 -1
|
@@ -9,6 +9,8 @@ import { ProtoEnum } from "../utils/protoEnum";
|
|
|
9
9
|
import { UUID } from "../utils/uuid";
|
|
10
10
|
import { ZonedDateTime } from "../utils/datetime";
|
|
11
11
|
import { PriceProto } from "../../../fintekkers/models/price/price_pb";
|
|
12
|
+
import { Tenor } from "../security/term";
|
|
13
|
+
import { Identifier } from "../security/identifier";
|
|
12
14
|
export declare class Position {
|
|
13
15
|
proto: PositionProto;
|
|
14
16
|
constructor(positionProto: PositionProto);
|
|
@@ -21,7 +23,7 @@ export declare class Position {
|
|
|
21
23
|
*/
|
|
22
24
|
static fromJSON(json: any): Position;
|
|
23
25
|
getFieldValue(field: FieldProto): any;
|
|
24
|
-
getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto;
|
|
26
|
+
getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Identifier | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor;
|
|
25
27
|
getMeasureValue(measure: MeasureProto): Decimal;
|
|
26
28
|
private getMeasure;
|
|
27
29
|
getFieldDisplay(fieldToGet: FieldMapEntry): string;
|
|
@@ -27,6 +27,7 @@ const tenor_pb_1 = require("../../../fintekkers/models/security/tenor_pb");
|
|
|
27
27
|
const portfolio_pb_1 = require("../../../fintekkers/models/portfolio/portfolio_pb");
|
|
28
28
|
const security_pb_1 = require("../../../fintekkers/models/security/security_pb");
|
|
29
29
|
const wrappers_pb_1 = require("google-protobuf/google/protobuf/wrappers_pb");
|
|
30
|
+
const term_1 = require("../security/term");
|
|
30
31
|
class Position {
|
|
31
32
|
constructor(positionProto) {
|
|
32
33
|
this.proto = positionProto;
|
|
@@ -67,9 +68,19 @@ class Position {
|
|
|
67
68
|
return proto;
|
|
68
69
|
}
|
|
69
70
|
const unpackedValue = Position.unpackField(tmpField);
|
|
70
|
-
if (field_pb_1.FieldProto.PRICE == fieldToGet.getField()
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
if (field_pb_1.FieldProto.PRICE == fieldToGet.getField()) {
|
|
72
|
+
return unpackedValue; //instanceof PriceProto
|
|
73
|
+
}
|
|
74
|
+
if (field_pb_1.FieldProto.TENOR == fieldToGet.getField()) {
|
|
75
|
+
const tenorProto = unpackedValue;
|
|
76
|
+
const tenorType = tenorProto.getTenorType();
|
|
77
|
+
const termValue = tenorProto.getTermValue();
|
|
78
|
+
if (termValue && termValue.length > 0) {
|
|
79
|
+
return new term_1.Tenor(tenorType, termValue);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return new term_1.Tenor(tenorType);
|
|
83
|
+
}
|
|
73
84
|
}
|
|
74
85
|
if (field_pb_1.FieldProto.SECURITY == fieldToGet.getField()) {
|
|
75
86
|
return security_1.default.create(unpackedValue);
|
|
@@ -120,7 +131,10 @@ class Position {
|
|
|
120
131
|
return value.toString();
|
|
121
132
|
}
|
|
122
133
|
else if (value instanceof Date) {
|
|
123
|
-
|
|
134
|
+
const year = value.getFullYear();
|
|
135
|
+
const month = String(value.getMonth() + 1).padStart(2, '0'); // getMonth() returns 0-11, so add 1
|
|
136
|
+
const day = String(value.getDate()).padStart(2, '0'); // getDate() returns day of month (1-31)
|
|
137
|
+
return `${year}-${month}-${day}`;
|
|
124
138
|
}
|
|
125
139
|
else if (value instanceof datetime_1.ZonedDateTime) {
|
|
126
140
|
const tmpDateTime = value.toDateTime();
|
|
@@ -129,6 +143,9 @@ class Position {
|
|
|
129
143
|
else if (value instanceof protoEnum_1.ProtoEnum) {
|
|
130
144
|
return value.toString();
|
|
131
145
|
}
|
|
146
|
+
else if (value instanceof term_1.Tenor) {
|
|
147
|
+
return value.toString();
|
|
148
|
+
}
|
|
132
149
|
break;
|
|
133
150
|
default:
|
|
134
151
|
return "Can't display this field: " + fieldToGet.getField();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":";;;;;;AAAA,QAAQ;AACR,2EAA0E;AAC1E,iFAAgF;AAChF,2FAAsG;AACtG,uEAA+C;AAC/C,oEAA4C;AAC5C,+EAA8E;AAE9E,0DAAgE;AAChE,kDAA+C;AAC/C,mCAAgC;AAChC,wCAAqC;AACrC,gDAAkD;AAClD,wEAAuE;AACvE,6EAAqD;AAErD,qEAAoE;AACpE,2FAAyF;AACzF,iFAA+E;AAC/E,gGAA+F;AAC/F,iFAAgF;AAChF,2EAA0E;AAC1E,oFAAmF;AACnF,iFAAgF;AAEhF,6EAA0E;AAC1E,MAAa,QAAQ;IAGnB,YAAY,aAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;IAC7B,CAAC;IAED,OAAO;IACP,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,wCAAwC;SAC9E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAS;QACvB,OAAO,IAAI,QAAQ,CAAC,2BAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAEM,aAAa,CAAC,KAAiB;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,QAAQ,CAAC,UAAyB;QACvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;YAClD,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAElD,IAAI,QAAQ,CAAC,cAAc,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpF,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACnC,CAAC;gBAED,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,SAAS,GAAW,IAAI,aAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnE,IAAI,KAAK,GAAc,qBAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;oBAClF,OAAO,KAAK,CAAC;gBACf,CAAC;qBAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;oBACnE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;oBAC1G,IAAI,SAAS,GAAW,IAAI,aAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnE,IAAI,KAAK,GAAc,qBAAS,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAC5D,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAErD,IAAI,qBAAU,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,6 +94,23 @@ function testJsonSerialization() {
|
|
|
94
94
|
return true;
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
+
test('test testTenorSerialization', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
let isTrue = yield testTenorSerialization();
|
|
99
|
+
expect(isTrue).toBe(true);
|
|
100
|
+
}));
|
|
101
|
+
function testTenorSerialization() {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
let { position, tenor } = getPosition(false);
|
|
104
|
+
console.log("tenor", tenor);
|
|
105
|
+
let tenorPosition = position.getFieldValue(field_pb_1.FieldProto.TENOR);
|
|
106
|
+
// tenorPosition is now a Tenor wrapper, not TenorProto
|
|
107
|
+
expect(tenorPosition.getTenorDescription()).toBe(tenor.getTermValue());
|
|
108
|
+
let tenorFieldDisplay = position.getFieldDisplay(new position_util_pb_1.FieldMapEntry().setField(field_pb_1.FieldProto.TENOR));
|
|
109
|
+
// The field display should be the Tenor wrapper's toString(), which returns something like "TERM: 3M"
|
|
110
|
+
expect(tenorFieldDisplay).toBe(tenorPosition.toString());
|
|
111
|
+
return true;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
97
114
|
function testSerialization() {
|
|
98
115
|
var _a;
|
|
99
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -101,7 +118,12 @@ function testSerialization() {
|
|
|
101
118
|
let tradeDatePosition = position.getFieldValue(field_pb_1.FieldProto.TRADE_DATE);
|
|
102
119
|
expect(tradeDate.getFullYear()).toBe(tradeDatePosition.getFullYear());
|
|
103
120
|
expect(tradeDate.getMonth()).toBe(tradeDatePosition.getMonth());
|
|
104
|
-
expect(tradeDate.
|
|
121
|
+
expect(tradeDate.getDate()).toBe(tradeDatePosition.getDate());
|
|
122
|
+
let tradeDateFieldDisplay = position.getFieldDisplay(new position_util_pb_1.FieldMapEntry().setField(field_pb_1.FieldProto.TRADE_DATE));
|
|
123
|
+
const year = tradeDate.getFullYear();
|
|
124
|
+
const month = String(tradeDate.getMonth() + 1).padStart(2, '0');
|
|
125
|
+
const day = String(tradeDate.getDate()).padStart(2, '0');
|
|
126
|
+
expect(tradeDateFieldDisplay).toBe(`${year}-${month}-${day}`);
|
|
105
127
|
let securityPosition = position.getFieldValue(field_pb_1.FieldProto.SECURITY);
|
|
106
128
|
expect(securityPosition.getAssetClass()).toBe(security.getAssetClass());
|
|
107
129
|
let portfolioPosition = position.getFieldValue(field_pb_1.FieldProto.PORTFOLIO);
|
|
@@ -114,7 +136,7 @@ function testSerialization() {
|
|
|
114
136
|
let price = position.getFieldValue(field_pb_1.FieldProto.PRICE);
|
|
115
137
|
expect((_a = price.getPrice()) === null || _a === void 0 ? void 0 : _a.getArbitraryPrecisionValue()).toBe("1.0");
|
|
116
138
|
let tenor = position.getFieldValue(field_pb_1.FieldProto.TENOR);
|
|
117
|
-
expect(tenor.
|
|
139
|
+
expect(tenor.getTenorDescription()).toBe("3M");
|
|
118
140
|
return true;
|
|
119
141
|
});
|
|
120
142
|
}
|
|
@@ -178,6 +200,6 @@ function getPosition(includeUnknownEnumValue) {
|
|
|
178
200
|
new position_util_pb_1.MeasureMapEntry().setMeasure(measure).setMeasureDecimalValue(measureValue)
|
|
179
201
|
]);
|
|
180
202
|
let position = new position_1.Position(positionProto);
|
|
181
|
-
return { position, tradeDate, security, portfolio, productType, id };
|
|
203
|
+
return { position, tradeDate, security, portfolio, productType, id, tenor };
|
|
182
204
|
}
|
|
183
205
|
//# sourceMappingURL=position.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.test.js","sourceRoot":"","sources":["position.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wCAAqC;AACrC,mEAA6D;AAE7D,uFAAqF;AACrF,iFAAgF;AAChF,2FAAsG;AACtG,2EAA0E;AAC1E,+EAA8E;AAC9E,iFAAgF;AAChF,oFAAmF;AACnF,yCAAsC;AACtC,wCAA0C;AAC1C,+FAA6F;AAE7F,oGAAkG;AAClG,wEAAuE;AACvE,2EAA0E;AAC1E,qFAAmF;
|
|
1
|
+
{"version":3,"file":"position.test.js","sourceRoot":"","sources":["position.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wCAAqC;AACrC,mEAA6D;AAE7D,uFAAqF;AACrF,iFAAgF;AAChF,2FAAsG;AACtG,2EAA0E;AAC1E,+EAA8E;AAC9E,iFAAgF;AAChF,oFAAmF;AACnF,yCAAsC;AACtC,wCAA0C;AAC1C,+FAA6F;AAE7F,oGAAkG;AAClG,wEAAuE;AACvE,2EAA0E;AAC1E,qFAAmF;AAGnF,IAAI,CAAC,6BAA6B,EAAE,GAAS,EAAE;IAC3C,IAAI,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAS,EAAE;IACvD,IAAI,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,GAAS,EAAE;IACvC,IAAI,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAS,EAAE;IAC5D,IAAI,MAAM,GAAG,MAAM,mCAAmC,EAAE,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAGH,SAAe,qBAAqB;;QAChC,IAAI,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;QACxC,aAAa,CAAC,aAAa,CAAC;YACxB,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,wCAAmB,CAAC,QAAQ,CAAC;SACtG,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC9E,aAAa,CAAC,eAAe,CAAC;YAC1B,IAAI,kCAAe,EAAE,CAAC,UAAU,CAAC,yBAAY,CAAC,iBAAiB,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC;SACxG,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,mBAAQ,CAAC,aAAa,CAAC,CAAC;QAE3C,IAAI,MAAM,GAAc,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,CAAC;QAE7D,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC7C,eAAe,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED,SAAe,qBAAqB;;QAChC,IAAI,SAAS,GAAG,gBAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,WAAW,GAAG,mBAAmB,CAAC;QACtC,IAAI,EAAE,GAAG,IAAI,WAAI,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3C,MAAM,eAAe,GAAG,IAAI,YAAG,EAAE,CAAC;QAClC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC7C,eAAe,CAAC,QAAQ,CAAC,gBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,IAAI,YAAG,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QAEtD,IAAI,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;QACxC,aAAa,CAAC,aAAa,CAAC;YACxB,mFAAmF;YACnF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAAC;YACxF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,wCAAmB,CAAC,QAAQ,CAAC;YACnG,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;YACjF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;YACrF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;SAC5E,CAAC,CAAC;QACH,IAAI,QAAQ,GAAG,IAAI,mBAAQ,CAAC,aAAa,CAAC,CAAC;QAE3C,IAAI,SAAS,GAAG,mBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAErD,IAAI,iBAAiB,GAAG,SAAS,CAAC,aAAa,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/E,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAGD,IAAI,CAAC,6BAA6B,EAAE,GAAS,EAAE;IAC3C,IAAI,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,SAAe,sBAAsB;;QACjC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;QAC7D,uDAAuD;QACvD,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAEvE,IAAI,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACjG,sGAAsG;QACtG,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAGD,SAAe,iBAAiB;;;QAC5B,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAEvF,IAAI,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QAE9D,IAAI,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1G,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAE9D,IAAI,gBAAgB,GAAkB,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,QAAQ,CAAC,CAAC;QAClF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QAExE,IAAI,iBAAiB,GAAmB,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAEhF,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1E,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,KAAK,GAAe,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,CAAC,MAAA,KAAK,CAAC,QAAQ,EAAE,0CAAE,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC;;CACf;AAED,SAAe,mCAAmC;;QAC9C,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED,SAAS,WAAW,CAAC,uBAAgC;IACjD,IAAI,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,SAAS,GAAG,IAAI,6BAAc,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACxE,IAAI,SAAS,GAAG,gBAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;IAC3C,IAAI,WAAW,GAAG,mBAAmB,CAAC;IACtC,IAAI,EAAE,GAAG,IAAI,WAAI,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE3C,IAAI,KAAK,GAAG,IAAI,qBAAU,EAAE;SACvB,QAAQ,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;SACnE,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;SACzB,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE3B,IAAI,KAAK,GAAG,IAAI,qBAAU,EAAE;SACvB,YAAY,CAAC,8BAAc,CAAC,IAAI,CAAC;SACjC,YAAY,CAAC,IAAI,CAAC,CAAC;IAAA,CAAC;IAEzB,IAAI,OAAO,GAAG,yBAAY,CAAC,iBAAiB,CAAC;IAC7C,IAAI,YAAY,GAAG,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAE7E,MAAM,eAAe,GAAG,IAAI,YAAG,EAAE,CAAC;IAClC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7C,eAAe,CAAC,QAAQ,CAAC,gBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,IAAI,YAAG,EAAE,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,IAAI,YAAG,EAAE,CAAC;IAC9B,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1C,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,IAAI,YAAG,EAAE,CAAC;IAC9B,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1C,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9C,MAAM,cAAc,GAAG,IAAI,YAAG,EAAE,CAAC;IACjC,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAChD,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAEpD,MAAM,eAAe,GAAG,IAAI,YAAG,EAAE,CAAC;IAClC,eAAe,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAClD,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;IAEtD,IAAI,cAAc,GAAG,uBAAuB,CAAC,CAAC;QAC1C,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,wCAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpG,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,wCAAmB,CAAC,QAAQ,CAAC,CAAC;IAExG,IAAI,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IACxC,aAAa,CAAC,aAAa,CAAC;QACxB,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC;QACrF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAAC;QACvF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAAC;QACxF,cAAc;QACd,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,0CAAoB,CAAC,GAAG,CAAC;QAChG,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAC/E,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;QACjF,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QACzE,IAAI,gCAAa,EAAE,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;KAClF,CAAC,CAAC;IAEH,aAAa,CAAC,eAAe,CAAC;QAC1B,IAAI,kCAAe,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC;KACjF,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,IAAI,mBAAQ,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -16,6 +16,7 @@ import { TransactionTypeProto } from '../../../fintekkers/models/transaction/tra
|
|
|
16
16
|
import { PriceProto } from '../../../fintekkers/models/price/price_pb';
|
|
17
17
|
import { TenorProto } from '../../../fintekkers/models/security/tenor_pb';
|
|
18
18
|
import { TenorTypeProto } from '../../../fintekkers/models/security/tenor_type_pb';
|
|
19
|
+
import { Tenor } from '../security/term';
|
|
19
20
|
|
|
20
21
|
test('test the enum Serialization', async () => {
|
|
21
22
|
let isTrue = await testEnumSerialization();
|
|
@@ -102,13 +103,40 @@ async function testJsonSerialization(): Promise<boolean> {
|
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
|
|
106
|
+
test('test testTenorSerialization', async () => {
|
|
107
|
+
let isTrue = await testTenorSerialization();
|
|
108
|
+
expect(isTrue).toBe(true);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
async function testTenorSerialization(): Promise<boolean> {
|
|
112
|
+
let { position, tenor } = getPosition(false);
|
|
113
|
+
|
|
114
|
+
console.log("tenor", tenor);
|
|
115
|
+
let tenorPosition = position.getFieldValue(FieldProto.TENOR);
|
|
116
|
+
// tenorPosition is now a Tenor wrapper, not TenorProto
|
|
117
|
+
expect(tenorPosition.getTenorDescription()).toBe(tenor.getTermValue());
|
|
118
|
+
|
|
119
|
+
let tenorFieldDisplay = position.getFieldDisplay(new FieldMapEntry().setField(FieldProto.TENOR));
|
|
120
|
+
// The field display should be the Tenor wrapper's toString(), which returns something like "TERM: 3M"
|
|
121
|
+
expect(tenorFieldDisplay).toBe(tenorPosition.toString());
|
|
122
|
+
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
105
127
|
async function testSerialization(): Promise<boolean> {
|
|
106
128
|
let { position, tradeDate, security, portfolio, productType, id } = getPosition(false);
|
|
107
129
|
|
|
108
130
|
let tradeDatePosition = position.getFieldValue(FieldProto.TRADE_DATE);
|
|
109
131
|
expect(tradeDate.getFullYear()).toBe(tradeDatePosition.getFullYear());
|
|
110
132
|
expect(tradeDate.getMonth()).toBe(tradeDatePosition.getMonth());
|
|
111
|
-
expect(tradeDate.
|
|
133
|
+
expect(tradeDate.getDate()).toBe(tradeDatePosition.getDate());
|
|
134
|
+
|
|
135
|
+
let tradeDateFieldDisplay = position.getFieldDisplay(new FieldMapEntry().setField(FieldProto.TRADE_DATE));
|
|
136
|
+
const year = tradeDate.getFullYear();
|
|
137
|
+
const month = String(tradeDate.getMonth() + 1).padStart(2, '0');
|
|
138
|
+
const day = String(tradeDate.getDate()).padStart(2, '0');
|
|
139
|
+
expect(tradeDateFieldDisplay).toBe(`${year}-${month}-${day}`);
|
|
112
140
|
|
|
113
141
|
let securityPosition: SecurityProto = position.getFieldValue(FieldProto.SECURITY);
|
|
114
142
|
expect(securityPosition.getAssetClass()).toBe(security.getAssetClass());
|
|
@@ -128,8 +156,8 @@ async function testSerialization(): Promise<boolean> {
|
|
|
128
156
|
let price: PriceProto = position.getFieldValue(FieldProto.PRICE);
|
|
129
157
|
expect(price.getPrice()?.getArbitraryPrecisionValue()).toBe("1.0");
|
|
130
158
|
|
|
131
|
-
let tenor
|
|
132
|
-
expect(tenor.
|
|
159
|
+
let tenor = position.getFieldValue(FieldProto.TENOR);
|
|
160
|
+
expect(tenor.getTenorDescription()).toBe("3M");
|
|
133
161
|
|
|
134
162
|
return true;
|
|
135
163
|
}
|
|
@@ -206,5 +234,5 @@ function getPosition(includeUnknownEnumValue: boolean) {
|
|
|
206
234
|
]);
|
|
207
235
|
|
|
208
236
|
let position = new Position(positionProto);
|
|
209
|
-
return { position, tradeDate, security, portfolio, productType, id };
|
|
237
|
+
return { position, tradeDate, security, portfolio, productType, id, tenor };
|
|
210
238
|
}
|
|
@@ -24,6 +24,8 @@ import { PortfolioProto } from "../../../fintekkers/models/portfolio/portfolio_p
|
|
|
24
24
|
import { SecurityProto } from "../../../fintekkers/models/security/security_pb";
|
|
25
25
|
|
|
26
26
|
import { StringValue } from 'google-protobuf/google/protobuf/wrappers_pb';
|
|
27
|
+
import { Tenor } from "../security/term";
|
|
28
|
+
import { Identifier } from "../security/identifier";
|
|
27
29
|
export class Position {
|
|
28
30
|
proto: PositionProto;
|
|
29
31
|
|
|
@@ -51,7 +53,7 @@ export class Position {
|
|
|
51
53
|
return this.getField(new FieldMapEntry().setField(field));
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
public getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto {
|
|
56
|
+
public getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Identifier | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor {
|
|
55
57
|
for (const tmpField of this.proto.getFieldsList()) {
|
|
56
58
|
if (tmpField.getField() === fieldToGet.getField()) {
|
|
57
59
|
|
|
@@ -73,9 +75,19 @@ export class Position {
|
|
|
73
75
|
|
|
74
76
|
const unpackedValue = Position.unpackField(tmpField);
|
|
75
77
|
|
|
76
|
-
if (FieldProto.PRICE == fieldToGet.getField()
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
if (FieldProto.PRICE == fieldToGet.getField()) {
|
|
79
|
+
return unpackedValue; //instanceof PriceProto
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (FieldProto.TENOR == fieldToGet.getField()) {
|
|
83
|
+
const tenorProto = unpackedValue as TenorProto;
|
|
84
|
+
const tenorType = tenorProto.getTenorType();
|
|
85
|
+
const termValue = tenorProto.getTermValue();
|
|
86
|
+
if (termValue && termValue.length > 0) {
|
|
87
|
+
return new Tenor(tenorType, termValue);
|
|
88
|
+
} else {
|
|
89
|
+
return new Tenor(tenorType);
|
|
90
|
+
}
|
|
79
91
|
}
|
|
80
92
|
|
|
81
93
|
if (FieldProto.SECURITY == fieldToGet.getField()) {
|
|
@@ -86,7 +98,7 @@ export class Position {
|
|
|
86
98
|
return new Portfolio(unpackedValue);
|
|
87
99
|
}
|
|
88
100
|
|
|
89
|
-
return ProtoSerializationUtil.deserialize(unpackedValue);
|
|
101
|
+
return ProtoSerializationUtil.deserialize(unpackedValue) as string | number | Identifier | Date | ZonedDateTime | UUID | ProtoEnum | Security | Tenor | Portfolio | PriceProto;
|
|
90
102
|
}
|
|
91
103
|
}
|
|
92
104
|
|
|
@@ -129,12 +141,17 @@ export class Position {
|
|
|
129
141
|
} else if (value instanceof UUID) {
|
|
130
142
|
return value.toString();
|
|
131
143
|
} else if (value instanceof Date) {
|
|
132
|
-
|
|
144
|
+
const year = value.getFullYear();
|
|
145
|
+
const month = String(value.getMonth() + 1).padStart(2, '0'); // getMonth() returns 0-11, so add 1
|
|
146
|
+
const day = String(value.getDate()).padStart(2, '0'); // getDate() returns day of month (1-31)
|
|
147
|
+
return `${year}-${month}-${day}`;
|
|
133
148
|
} else if (value instanceof ZonedDateTime) {
|
|
134
149
|
const tmpDateTime: DateTime = value.toDateTime();
|
|
135
150
|
return tmpDateTime.toFormat('yyyy/MM/dd hh:mm:ss');
|
|
136
151
|
} else if (value instanceof ProtoEnum) {
|
|
137
152
|
return value.toString();
|
|
153
|
+
} else if (value instanceof Tenor) {
|
|
154
|
+
return value.toString();
|
|
138
155
|
}
|
|
139
156
|
break;
|
|
140
157
|
default:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FieldMapEntry, PositionFilterOperator } from '../../../fintekkers/models/position/position_util_pb';
|
|
2
2
|
import { FieldProto } from '../../../fintekkers/models/position/field_pb';
|
|
3
3
|
import { PositionFilterProto } from '../../../fintekkers/models/position/position_filter_pb';
|
|
4
|
+
import { Identifier } from '../security/identifier';
|
|
4
5
|
export declare class PositionFilter {
|
|
5
6
|
filters: FieldMapEntry[];
|
|
6
7
|
constructor();
|
|
@@ -19,6 +20,7 @@ export declare class PositionFilter {
|
|
|
19
20
|
* @param {*} fieldValue The appropriate value for the FieldProto, e.g. FieldProto.ASSET_CLASS would have a string fieldValue
|
|
20
21
|
*/
|
|
21
22
|
addFilter(field: FieldProto, operator: PositionFilterOperator, fieldValue?: any, fieldValueString?: string): PositionFilter;
|
|
23
|
+
addObjectFilter(field: FieldProto, object: Identifier): PositionFilter;
|
|
22
24
|
getFilters(): Array<FieldMapEntry>;
|
|
23
25
|
toProto(): PositionFilterProto;
|
|
24
26
|
}
|
|
@@ -46,6 +46,15 @@ class PositionFilter {
|
|
|
46
46
|
this.filters.push(fieldMapEntry);
|
|
47
47
|
return this;
|
|
48
48
|
}
|
|
49
|
+
//TODO: Add support for other objects
|
|
50
|
+
addObjectFilter(field, object) {
|
|
51
|
+
const fieldMapEntry = new position_util_pb_1.FieldMapEntry();
|
|
52
|
+
fieldMapEntry.setField(field);
|
|
53
|
+
fieldMapEntry.setOperator(position_util_pb_1.PositionFilterOperator.EQUALS);
|
|
54
|
+
fieldMapEntry.setFieldValuePacked((0, serialization_util_1.pack)(object));
|
|
55
|
+
this.filters.push(fieldMapEntry);
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
49
58
|
getFilters() {
|
|
50
59
|
return this.filters;
|
|
51
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionfilter.js","sourceRoot":"","sources":["positionfilter.ts"],"names":[],"mappings":";;;AAAA,2FAA6G;AAE7G,oEAAmD;AACnD,+FAA6F;
|
|
1
|
+
{"version":3,"file":"positionfilter.js","sourceRoot":"","sources":["positionfilter.ts"],"names":[],"mappings":";;;AAAA,2FAA6G;AAE7G,oEAAmD;AACnD,+FAA6F;AAG7F,MAAa,cAAc;IAGvB;QACI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,KAAiB,EAAE,gBAAwB;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,yCAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACxF,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,KAAiB,EAAE,UAAe;QAC9C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAoB,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,yCAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAiB,EAAE,QAAgC,EAAE,UAAgB,EAAE,gBAAyB;QACtG,MAAM,aAAa,GAAG,IAAI,gCAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B;QACzD,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,gBAAgB;YAChB,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;aAC9C,IAAI,UAAU,EAAE,CAAC;YAClB,aAAa,CAAC,mBAAmB,CAAC,IAAA,yBAAI,EAAC,UAAU,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAqC;IACrC,eAAe,CAAC,KAAiB,EAAE,MAAkB;QACjD,MAAM,aAAa,GAAG,IAAI,gCAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,aAAa,CAAC,WAAW,CAAC,yCAAsB,CAAC,MAAM,CAAC,CAAC;QACzD,aAAa,CAAC,mBAAmB,CAAC,IAAA,yBAAI,EAAC,MAAM,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO;QACH,MAAM,mBAAmB,GAAG,IAAI,wCAAmB,EAAE,CAAC;QACtD,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACrD,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;CACJ;AAtED,wCAsEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const positionfilter_1 = require("./positionfilter");
|
|
5
|
+
const field_pb_1 = require("../../../fintekkers/models/position/field_pb");
|
|
6
|
+
const position_util_pb_1 = require("../../../fintekkers/models/position/position_util_pb");
|
|
7
|
+
const identifier_1 = require("../security/identifier");
|
|
8
|
+
const identifier_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_pb");
|
|
9
|
+
const identifier_type_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_type_pb");
|
|
10
|
+
const serialization_util_1 = require("../utils/serialization.util");
|
|
11
|
+
test('test PositionFilter.addEqualsStringFilter adds string filter', () => {
|
|
12
|
+
testAddEqualsStringFilter();
|
|
13
|
+
});
|
|
14
|
+
test('test PositionFilter.addEqualsFilter with string', () => {
|
|
15
|
+
testAddEqualsFilterWithString();
|
|
16
|
+
});
|
|
17
|
+
test('test PositionFilter.addFilter with string value', () => {
|
|
18
|
+
testAddFilterWithString();
|
|
19
|
+
});
|
|
20
|
+
test('test PositionFilter.addObjectFilter adds Identifier filter', () => {
|
|
21
|
+
testAddObjectFilter();
|
|
22
|
+
});
|
|
23
|
+
test('test PositionFilter method chaining', () => {
|
|
24
|
+
testMethodChaining();
|
|
25
|
+
});
|
|
26
|
+
test('test PositionFilter.getFilters returns all filters', () => {
|
|
27
|
+
testGetFilters();
|
|
28
|
+
});
|
|
29
|
+
test('test PositionFilter.toProto creates PositionFilterProto', () => {
|
|
30
|
+
testToProto();
|
|
31
|
+
});
|
|
32
|
+
test('test PositionFilter.addFilter throws error when no value provided', () => {
|
|
33
|
+
testAddFilterThrowsError();
|
|
34
|
+
});
|
|
35
|
+
function testAddEqualsStringFilter() {
|
|
36
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
37
|
+
filter.addEqualsStringFilter(field_pb_1.FieldProto.ASSET_CLASS, 'FixedIncome');
|
|
38
|
+
const filters = filter.getFilters();
|
|
39
|
+
assert(filters.length === 1, 'Should have one filter');
|
|
40
|
+
const fieldEntry = filters[0];
|
|
41
|
+
assert(fieldEntry.getField() === field_pb_1.FieldProto.ASSET_CLASS, 'Field should be ASSET_CLASS');
|
|
42
|
+
assert(fieldEntry.getOperator() === position_util_pb_1.PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
|
|
43
|
+
assert(fieldEntry.getStringValue() === 'FixedIncome', 'String value should be "FixedIncome"');
|
|
44
|
+
}
|
|
45
|
+
function testAddEqualsFilterWithString() {
|
|
46
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
47
|
+
filter.addEqualsFilter(field_pb_1.FieldProto.PRODUCT_TYPE, 'Bond');
|
|
48
|
+
const filters = filter.getFilters();
|
|
49
|
+
assert(filters.length === 1, 'Should have one filter');
|
|
50
|
+
const fieldEntry = filters[0];
|
|
51
|
+
assert(fieldEntry.getField() === field_pb_1.FieldProto.PRODUCT_TYPE, 'Field should be PRODUCT_TYPE');
|
|
52
|
+
assert(fieldEntry.getOperator() === position_util_pb_1.PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
|
|
53
|
+
assert(fieldEntry.getStringValue() === 'Bond', 'String value should be "Bond"');
|
|
54
|
+
}
|
|
55
|
+
function testAddFilterWithString() {
|
|
56
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
57
|
+
filter.addFilter(field_pb_1.FieldProto.SECURITY_DESCRIPTION, position_util_pb_1.PositionFilterOperator.EQUALS, null, 'Test Security');
|
|
58
|
+
const filters = filter.getFilters();
|
|
59
|
+
assert(filters.length === 1, 'Should have one filter');
|
|
60
|
+
const fieldEntry = filters[0];
|
|
61
|
+
assert(fieldEntry.getField() === field_pb_1.FieldProto.SECURITY_DESCRIPTION, 'Field should be SECURITY_DESCRIPTION');
|
|
62
|
+
assert(fieldEntry.getOperator() === position_util_pb_1.PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
|
|
63
|
+
assert(fieldEntry.getStringValue() === 'Test Security', 'String value should be "Test Security"');
|
|
64
|
+
}
|
|
65
|
+
function testAddObjectFilter() {
|
|
66
|
+
const identifierProto = new identifier_pb_1.IdentifierProto();
|
|
67
|
+
identifierProto.setIdentifierType(identifier_type_pb_1.IdentifierTypeProto.ISIN);
|
|
68
|
+
identifierProto.setIdentifierValue('US0378331005');
|
|
69
|
+
const identifier = new identifier_1.Identifier(identifierProto);
|
|
70
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
71
|
+
// Test addObjectFilter method which specifically handles Identifier objects
|
|
72
|
+
filter.addObjectFilter(field_pb_1.FieldProto.IDENTIFIER, identifier);
|
|
73
|
+
const filters = filter.getFilters();
|
|
74
|
+
assert(filters.length === 1, 'Should have one filter');
|
|
75
|
+
const fieldEntry = filters[0];
|
|
76
|
+
assert(fieldEntry.getField() === field_pb_1.FieldProto.IDENTIFIER, 'Field should be IDENTIFIER');
|
|
77
|
+
assert(fieldEntry.getOperator() === position_util_pb_1.PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
|
|
78
|
+
let a = fieldEntry.getFieldValuePacked();
|
|
79
|
+
let b = (0, serialization_util_1.unpack)(a);
|
|
80
|
+
assert(b.toString() === identifier.toString(), 'Identifier should be the same');
|
|
81
|
+
// const packedValue = fieldEntry.getFieldValuePacked();
|
|
82
|
+
// assert(packedValue !== null && packedValue !== undefined, 'Should have packed value');
|
|
83
|
+
// assert(packedValue.getTypeUrl().includes('IdentifierProto'), 'Type URL should include IdentifierProto');
|
|
84
|
+
}
|
|
85
|
+
function testMethodChaining() {
|
|
86
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
87
|
+
const result = filter
|
|
88
|
+
.addEqualsStringFilter(field_pb_1.FieldProto.ASSET_CLASS, 'Equity')
|
|
89
|
+
.addEqualsStringFilter(field_pb_1.FieldProto.PRODUCT_TYPE, 'Stock')
|
|
90
|
+
.addEqualsFilter(field_pb_1.FieldProto.SECURITY_DESCRIPTION, 'Apple Inc.');
|
|
91
|
+
assert(result === filter, 'Should return the same instance for chaining');
|
|
92
|
+
const filters = filter.getFilters();
|
|
93
|
+
assert(filters.length === 3, 'Should have three filters');
|
|
94
|
+
assert(filters[0].getField() === field_pb_1.FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
|
|
95
|
+
assert(filters[1].getField() === field_pb_1.FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
|
|
96
|
+
assert(filters[2].getField() === field_pb_1.FieldProto.SECURITY_DESCRIPTION, 'Third filter should be SECURITY_DESCRIPTION');
|
|
97
|
+
}
|
|
98
|
+
function testGetFilters() {
|
|
99
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
100
|
+
filter.addEqualsStringFilter(field_pb_1.FieldProto.ASSET_CLASS, 'FixedIncome');
|
|
101
|
+
filter.addEqualsStringFilter(field_pb_1.FieldProto.PRODUCT_TYPE, 'Bond');
|
|
102
|
+
const filters = filter.getFilters();
|
|
103
|
+
assert(Array.isArray(filters), 'Should return an array');
|
|
104
|
+
assert(filters.length === 2, 'Should return two filters');
|
|
105
|
+
assert(filters[0].getField() === field_pb_1.FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
|
|
106
|
+
assert(filters[1].getField() === field_pb_1.FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
|
|
107
|
+
}
|
|
108
|
+
function testToProto() {
|
|
109
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
110
|
+
filter.addEqualsStringFilter(field_pb_1.FieldProto.ASSET_CLASS, 'FixedIncome');
|
|
111
|
+
filter.addEqualsStringFilter(field_pb_1.FieldProto.PRODUCT_TYPE, 'Bond');
|
|
112
|
+
const proto = filter.toProto();
|
|
113
|
+
assert(proto !== null && proto !== undefined, 'Should return a PositionFilterProto');
|
|
114
|
+
assert(proto.getObjectClass() === 'PositionFilter', 'Object class should be "PositionFilter"');
|
|
115
|
+
assert(proto.getVersion() === '0.0.1', 'Version should be "0.0.1"');
|
|
116
|
+
const filtersList = proto.getFiltersList();
|
|
117
|
+
assert(filtersList.length === 2, 'Should have two filters in proto');
|
|
118
|
+
assert(filtersList[0].getField() === field_pb_1.FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
|
|
119
|
+
assert(filtersList[1].getField() === field_pb_1.FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
|
|
120
|
+
}
|
|
121
|
+
function testAddFilterThrowsError() {
|
|
122
|
+
const filter = new positionfilter_1.PositionFilter();
|
|
123
|
+
try {
|
|
124
|
+
filter.addFilter(field_pb_1.FieldProto.ASSET_CLASS, position_util_pb_1.PositionFilterOperator.EQUALS);
|
|
125
|
+
assert(false, 'Should have thrown an error');
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
assert(error instanceof Error, 'Should throw Error');
|
|
129
|
+
assert(error.message.includes('Need to provide a string, or object'), 'Error message should mention providing a value');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=positionfilter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positionfilter.test.js","sourceRoot":"","sources":["positionfilter.test.ts"],"names":[],"mappings":"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"}
|