@fintekkers/ledger-models 0.1.116 → 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.
Files changed (38) hide show
  1. package/node/wrappers/models/position/position.d.ts +2 -1
  2. package/node/wrappers/models/position/position.js.map +1 -1
  3. package/node/wrappers/models/position/position.ts +3 -2
  4. package/node/wrappers/models/position/positionfilter.d.ts +2 -0
  5. package/node/wrappers/models/position/positionfilter.js +9 -0
  6. package/node/wrappers/models/position/positionfilter.js.map +1 -1
  7. package/node/wrappers/models/position/positionfilter.test.d.ts +1 -0
  8. package/node/wrappers/models/position/positionfilter.test.js +132 -0
  9. package/node/wrappers/models/position/positionfilter.test.js.map +1 -0
  10. package/node/wrappers/models/position/positionfilter.test.ts +161 -0
  11. package/node/wrappers/models/position/positionfilter.ts +11 -0
  12. package/node/wrappers/models/security/coupon_type.test.js +1 -1
  13. package/node/wrappers/models/security/coupon_type.test.js.map +1 -1
  14. package/node/wrappers/models/security/coupon_type.test.ts +1 -1
  15. package/node/wrappers/models/security/identifier.d.ts +29 -0
  16. package/node/wrappers/models/security/identifier.js +51 -0
  17. package/node/wrappers/models/security/identifier.js.map +1 -0
  18. package/node/wrappers/models/security/identifier.test.d.ts +1 -0
  19. package/node/wrappers/models/security/identifier.test.js +55 -0
  20. package/node/wrappers/models/security/identifier.test.js.map +1 -0
  21. package/node/wrappers/models/security/identifier.test.ts +65 -0
  22. package/node/wrappers/models/security/identifier.ts +58 -0
  23. package/node/wrappers/models/security/term.test.js +6 -0
  24. package/node/wrappers/models/security/term.test.js.map +1 -1
  25. package/node/wrappers/models/security/term.test.ts +7 -0
  26. package/node/wrappers/models/utils/date.test.js +1 -1
  27. package/node/wrappers/models/utils/date.test.ts +1 -1
  28. package/node/wrappers/models/utils/serialization.d.ts +4 -2
  29. package/node/wrappers/models/utils/serialization.js +5 -1
  30. package/node/wrappers/models/utils/serialization.js.map +1 -1
  31. package/node/wrappers/models/utils/serialization.ts +7 -3
  32. package/node/wrappers/models/utils/serialization.util.d.ts +5 -2
  33. package/node/wrappers/models/utils/serialization.util.js +24 -1
  34. package/node/wrappers/models/utils/serialization.util.js.map +1 -1
  35. package/node/wrappers/models/utils/serialization.util.test.js.map +1 -1
  36. package/node/wrappers/models/utils/serialization.util.test.ts +3 -3
  37. package/node/wrappers/models/utils/serialization.util.ts +39 -14
  38. package/package.json +1 -1
@@ -10,6 +10,7 @@ import { UUID } from "../utils/uuid";
10
10
  import { ZonedDateTime } from "../utils/datetime";
11
11
  import { PriceProto } from "../../../fintekkers/models/price/price_pb";
12
12
  import { Tenor } from "../security/term";
13
+ import { Identifier } from "../security/identifier";
13
14
  export declare class Position {
14
15
  proto: PositionProto;
15
16
  constructor(positionProto: PositionProto);
@@ -22,7 +23,7 @@ export declare class Position {
22
23
  */
23
24
  static fromJSON(json: any): Position;
24
25
  getFieldValue(field: FieldProto): any;
25
- getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor;
26
+ getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Identifier | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor;
26
27
  getMeasureValue(measure: MeasureProto): Decimal;
27
28
  private getMeasure;
28
29
  getFieldDisplay(fieldToGet: FieldMapEntry): string;
@@ -1 +1 @@
1
- {"version":3,"file":"position.js","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ import { SecurityProto } from "../../../fintekkers/models/security/security_pb";
25
25
 
26
26
  import { StringValue } from 'google-protobuf/google/protobuf/wrappers_pb';
27
27
  import { Tenor } from "../security/term";
28
+ import { Identifier } from "../security/identifier";
28
29
  export class Position {
29
30
  proto: PositionProto;
30
31
 
@@ -52,7 +53,7 @@ export class Position {
52
53
  return this.getField(new FieldMapEntry().setField(field));
53
54
  }
54
55
 
55
- public getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor {
56
+ public getField(fieldToGet: FieldMapEntry): string | ProtoEnum | Security | Identifier | Portfolio | UUID | Date | ZonedDateTime | number | PriceProto | Tenor {
56
57
  for (const tmpField of this.proto.getFieldsList()) {
57
58
  if (tmpField.getField() === fieldToGet.getField()) {
58
59
 
@@ -97,7 +98,7 @@ export class Position {
97
98
  return new Portfolio(unpackedValue);
98
99
  }
99
100
 
100
- return ProtoSerializationUtil.deserialize(unpackedValue);
101
+ return ProtoSerializationUtil.deserialize(unpackedValue) as string | number | Identifier | Date | ZonedDateTime | UUID | ProtoEnum | Security | Tenor | Portfolio | PriceProto;
101
102
  }
102
103
  }
103
104
 
@@ -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;AAE7F,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,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;AA5DD,wCA4DC"}
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,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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"}
@@ -0,0 +1,161 @@
1
+ import assert = require('assert');
2
+ import { PositionFilter } from './positionfilter';
3
+ import { FieldProto } from '../../../fintekkers/models/position/field_pb';
4
+ import { PositionFilterOperator } from '../../../fintekkers/models/position/position_util_pb';
5
+ import { Identifier } from '../security/identifier';
6
+ import { IdentifierProto } from '../../../fintekkers/models/security/identifier/identifier_pb';
7
+ import { IdentifierTypeProto } from '../../../fintekkers/models/security/identifier/identifier_type_pb';
8
+ import { unpack } from '../utils/serialization.util';
9
+ import { Any } from 'google-protobuf/google/protobuf/any_pb';
10
+
11
+ test('test PositionFilter.addEqualsStringFilter adds string filter', () => {
12
+ testAddEqualsStringFilter();
13
+ });
14
+
15
+ test('test PositionFilter.addEqualsFilter with string', () => {
16
+ testAddEqualsFilterWithString();
17
+ });
18
+
19
+ test('test PositionFilter.addFilter with string value', () => {
20
+ testAddFilterWithString();
21
+ });
22
+
23
+ test('test PositionFilter.addObjectFilter adds Identifier filter', () => {
24
+ testAddObjectFilter();
25
+ });
26
+
27
+ test('test PositionFilter method chaining', () => {
28
+ testMethodChaining();
29
+ });
30
+
31
+ test('test PositionFilter.getFilters returns all filters', () => {
32
+ testGetFilters();
33
+ });
34
+
35
+ test('test PositionFilter.toProto creates PositionFilterProto', () => {
36
+ testToProto();
37
+ });
38
+
39
+ test('test PositionFilter.addFilter throws error when no value provided', () => {
40
+ testAddFilterThrowsError();
41
+ });
42
+
43
+ function testAddEqualsStringFilter(): void {
44
+ const filter = new PositionFilter();
45
+ filter.addEqualsStringFilter(FieldProto.ASSET_CLASS, 'FixedIncome');
46
+
47
+ const filters = filter.getFilters();
48
+ assert(filters.length === 1, 'Should have one filter');
49
+
50
+ const fieldEntry = filters[0];
51
+ assert(fieldEntry.getField() === FieldProto.ASSET_CLASS, 'Field should be ASSET_CLASS');
52
+ assert(fieldEntry.getOperator() === PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
53
+ assert(fieldEntry.getStringValue() === 'FixedIncome', 'String value should be "FixedIncome"');
54
+ }
55
+
56
+ function testAddEqualsFilterWithString(): void {
57
+ const filter = new PositionFilter();
58
+ filter.addEqualsFilter(FieldProto.PRODUCT_TYPE, 'Bond');
59
+
60
+ const filters = filter.getFilters();
61
+ assert(filters.length === 1, 'Should have one filter');
62
+
63
+ const fieldEntry = filters[0];
64
+ assert(fieldEntry.getField() === FieldProto.PRODUCT_TYPE, 'Field should be PRODUCT_TYPE');
65
+ assert(fieldEntry.getOperator() === PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
66
+ assert(fieldEntry.getStringValue() === 'Bond', 'String value should be "Bond"');
67
+ }
68
+
69
+ function testAddFilterWithString(): void {
70
+ const filter = new PositionFilter();
71
+ filter.addFilter(FieldProto.SECURITY_DESCRIPTION, PositionFilterOperator.EQUALS, null, 'Test Security');
72
+
73
+ const filters = filter.getFilters();
74
+ assert(filters.length === 1, 'Should have one filter');
75
+
76
+ const fieldEntry = filters[0];
77
+ assert(fieldEntry.getField() === FieldProto.SECURITY_DESCRIPTION, 'Field should be SECURITY_DESCRIPTION');
78
+ assert(fieldEntry.getOperator() === PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
79
+ assert(fieldEntry.getStringValue() === 'Test Security', 'String value should be "Test Security"');
80
+ }
81
+
82
+ function testAddObjectFilter(): void {
83
+ const identifierProto = new IdentifierProto();
84
+ identifierProto.setIdentifierType(IdentifierTypeProto.ISIN);
85
+ identifierProto.setIdentifierValue('US0378331005');
86
+ const identifier = new Identifier(identifierProto);
87
+
88
+ const filter = new PositionFilter();
89
+ // Test addObjectFilter method which specifically handles Identifier objects
90
+ filter.addObjectFilter(FieldProto.IDENTIFIER, identifier);
91
+
92
+ const filters = filter.getFilters();
93
+ assert(filters.length === 1, 'Should have one filter');
94
+
95
+ const fieldEntry = filters[0];
96
+ assert(fieldEntry.getField() === FieldProto.IDENTIFIER, 'Field should be IDENTIFIER');
97
+ assert(fieldEntry.getOperator() === PositionFilterOperator.EQUALS, 'Operator should be EQUALS');
98
+
99
+ let a = fieldEntry.getFieldValuePacked();
100
+ let b = unpack(a as Any) as Identifier;
101
+
102
+ assert(b.getIdentifierValue() === 'US0378331005', 'Identifier value should be "US0378331005"');
103
+ assert(b.getIdentifierTypeName() === 'ISIN', 'Identifier type name should be "ISIN"');
104
+ }
105
+
106
+ function testMethodChaining(): void {
107
+ const filter = new PositionFilter();
108
+ const result = filter
109
+ .addEqualsStringFilter(FieldProto.ASSET_CLASS, 'Equity')
110
+ .addEqualsStringFilter(FieldProto.PRODUCT_TYPE, 'Stock')
111
+ .addEqualsFilter(FieldProto.SECURITY_DESCRIPTION, 'Apple Inc.');
112
+
113
+ assert(result === filter, 'Should return the same instance for chaining');
114
+
115
+ const filters = filter.getFilters();
116
+ assert(filters.length === 3, 'Should have three filters');
117
+ assert(filters[0].getField() === FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
118
+ assert(filters[1].getField() === FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
119
+ assert(filters[2].getField() === FieldProto.SECURITY_DESCRIPTION, 'Third filter should be SECURITY_DESCRIPTION');
120
+ }
121
+
122
+ function testGetFilters(): void {
123
+ const filter = new PositionFilter();
124
+ filter.addEqualsStringFilter(FieldProto.ASSET_CLASS, 'FixedIncome');
125
+ filter.addEqualsStringFilter(FieldProto.PRODUCT_TYPE, 'Bond');
126
+
127
+ const filters = filter.getFilters();
128
+ assert(Array.isArray(filters), 'Should return an array');
129
+ assert(filters.length === 2, 'Should return two filters');
130
+ assert(filters[0].getField() === FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
131
+ assert(filters[1].getField() === FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
132
+ }
133
+
134
+ function testToProto(): void {
135
+ const filter = new PositionFilter();
136
+ filter.addEqualsStringFilter(FieldProto.ASSET_CLASS, 'FixedIncome');
137
+ filter.addEqualsStringFilter(FieldProto.PRODUCT_TYPE, 'Bond');
138
+
139
+ const proto = filter.toProto();
140
+ assert(proto !== null && proto !== undefined, 'Should return a PositionFilterProto');
141
+ assert(proto.getObjectClass() === 'PositionFilter', 'Object class should be "PositionFilter"');
142
+ assert(proto.getVersion() === '0.0.1', 'Version should be "0.0.1"');
143
+
144
+ const filtersList = proto.getFiltersList();
145
+ assert(filtersList.length === 2, 'Should have two filters in proto');
146
+ assert(filtersList[0].getField() === FieldProto.ASSET_CLASS, 'First filter should be ASSET_CLASS');
147
+ assert(filtersList[1].getField() === FieldProto.PRODUCT_TYPE, 'Second filter should be PRODUCT_TYPE');
148
+ }
149
+
150
+ function testAddFilterThrowsError(): void {
151
+ const filter = new PositionFilter();
152
+
153
+ try {
154
+ filter.addFilter(FieldProto.ASSET_CLASS, PositionFilterOperator.EQUALS);
155
+ assert(false, 'Should have thrown an error');
156
+ } catch (error) {
157
+ assert(error instanceof Error, 'Should throw Error');
158
+ assert(error.message.includes('Need to provide a string, or object'), 'Error message should mention providing a value');
159
+ }
160
+ }
161
+
@@ -2,6 +2,7 @@ import { FieldMapEntry, PositionFilterOperator } from '../../../fintekkers/model
2
2
  import { FieldProto } from '../../../fintekkers/models/position/field_pb';
3
3
  import { pack } from '../utils/serialization.util';
4
4
  import { PositionFilterProto } from '../../../fintekkers/models/position/position_filter_pb';
5
+ import { Identifier } from '../security/identifier';
5
6
 
6
7
  export class PositionFilter {
7
8
  filters: FieldMapEntry[];
@@ -51,6 +52,16 @@ export class PositionFilter {
51
52
  return this;
52
53
  }
53
54
 
55
+ //TODO: Add support for other objects
56
+ addObjectFilter(field: FieldProto, object: Identifier): PositionFilter {
57
+ const fieldMapEntry = new FieldMapEntry();
58
+ fieldMapEntry.setField(field);
59
+ fieldMapEntry.setOperator(PositionFilterOperator.EQUALS);
60
+ fieldMapEntry.setFieldValuePacked(pack(object));
61
+ this.filters.push(fieldMapEntry);
62
+ return this;
63
+ }
64
+
54
65
  getFilters(): Array<FieldMapEntry> {
55
66
  return this.filters;
56
67
  }
@@ -8,6 +8,6 @@ test('test CouponType.FIXED returns "FIXED"', () => {
8
8
  });
9
9
  function testFixedCouponType() {
10
10
  const couponType = new coupon_type_1.CouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
11
- assert(couponType.toString() === 'FIXED');
11
+ assert(couponType.name() === 'FIXED');
12
12
  }
13
13
  //# sourceMappingURL=coupon_type.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coupon_type.test.js","sourceRoot":"","sources":["coupon_type.test.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,+CAA2C;AAC3C,uFAAqF;AAErF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,mBAAmB,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,SAAS,mBAAmB;IAC1B,MAAM,UAAU,GAAG,IAAI,wBAAU,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"coupon_type.test.js","sourceRoot":"","sources":["coupon_type.test.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,+CAA2C;AAC3C,uFAAqF;AAErF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,mBAAmB,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,SAAS,mBAAmB;IAC1B,MAAM,UAAU,GAAG,IAAI,wBAAU,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -8,6 +8,6 @@ test('test CouponType.FIXED returns "FIXED"', () => {
8
8
 
9
9
  function testFixedCouponType(): void {
10
10
  const couponType = new CouponType(CouponTypeProto.FIXED);
11
- assert(couponType.toString() === 'FIXED');
11
+ assert(couponType.name() === 'FIXED');
12
12
  }
13
13
 
@@ -0,0 +1,29 @@
1
+ import { IdentifierProto } from '../../../fintekkers/models/security/identifier/identifier_pb';
2
+ import { IdentifierTypeProto } from '../../../fintekkers/models/security/identifier/identifier_type_pb';
3
+ export declare class Identifier {
4
+ proto: IdentifierProto;
5
+ constructor(proto: IdentifierProto);
6
+ static identifierTypeEnumMap: Map<number, string>;
7
+ /**
8
+ * Returns the identifier type name based on the enum value.
9
+ * NOTE that this method is not performant and should only be used for debugging purposes,
10
+ * or infrequently. If this is required for a high performance use case, please create a
11
+ * reverse map with the enum ID as the key and the enum descriptor as the value.
12
+ *
13
+ * @returns IdentifierType as a string (e.g., "ISIN", "CUSIP", "EXCH_TICKER")
14
+ */
15
+ getIdentifierTypeName(): string;
16
+ /**
17
+ * Returns the identifier value (e.g., "US0378331005" for an ISIN)
18
+ */
19
+ getIdentifierValue(): string;
20
+ /**
21
+ * Returns the identifier type enum value
22
+ */
23
+ getIdentifierType(): IdentifierTypeProto;
24
+ /**
25
+ * Returns a string representation in the format: "IDENTIFIER_TYPE:identifier_value"
26
+ * Example: "ISIN:US0378331005" or "CUSIP:037833100"
27
+ */
28
+ toString(): string;
29
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Identifier = void 0;
4
+ const identifier_type_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_type_pb");
5
+ class Identifier {
6
+ constructor(proto) {
7
+ this.proto = proto;
8
+ }
9
+ /**
10
+ * Returns the identifier type name based on the enum value.
11
+ * NOTE that this method is not performant and should only be used for debugging purposes,
12
+ * or infrequently. If this is required for a high performance use case, please create a
13
+ * reverse map with the enum ID as the key and the enum descriptor as the value.
14
+ *
15
+ * @returns IdentifierType as a string (e.g., "ISIN", "CUSIP", "EXCH_TICKER")
16
+ */
17
+ getIdentifierTypeName() {
18
+ var _a;
19
+ const identifierType = this.proto.getIdentifierType();
20
+ return (_a = Identifier.identifierTypeEnumMap.get(identifierType)) !== null && _a !== void 0 ? _a : 'UNKNOWN_IDENTIFIER_TYPE';
21
+ }
22
+ /**
23
+ * Returns the identifier value (e.g., "US0378331005" for an ISIN)
24
+ */
25
+ getIdentifierValue() {
26
+ return this.proto.getIdentifierValue();
27
+ }
28
+ /**
29
+ * Returns the identifier type enum value
30
+ */
31
+ getIdentifierType() {
32
+ return this.proto.getIdentifierType();
33
+ }
34
+ /**
35
+ * Returns a string representation in the format: "IDENTIFIER_TYPE:identifier_value"
36
+ * Example: "ISIN:US0378331005" or "CUSIP:037833100"
37
+ */
38
+ toString() {
39
+ const typeName = this.getIdentifierTypeName();
40
+ const value = this.getIdentifierValue();
41
+ return `${typeName}:${value}`;
42
+ }
43
+ }
44
+ exports.Identifier = Identifier;
45
+ (() => {
46
+ Identifier.identifierTypeEnumMap = new Map();
47
+ Object.keys(identifier_type_pb_1.IdentifierTypeProto).forEach(key => {
48
+ Identifier.identifierTypeEnumMap.set(identifier_type_pb_1.IdentifierTypeProto[key], key);
49
+ });
50
+ })();
51
+ //# sourceMappingURL=identifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier.js","sourceRoot":"","sources":["identifier.ts"],"names":[],"mappings":";;;AACA,0GAAwG;AAExG,MAAa,UAAU;IAGnB,YAAY,KAAsB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAYD;;;;;;;OAOG;IACH,qBAAqB;;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACtD,OAAO,MAAA,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,yBAAyB,CAAC;IAC7F,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;IAClC,CAAC;CACJ;AArDD,gCAqDC;AA5CG;IACI,UAAU,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7D,MAAM,CAAC,IAAI,CAAC,wCAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC3C,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,wCAAmB,CAAC,GAAuC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert = require("assert");
4
+ const identifier_1 = require("./identifier");
5
+ const identifier_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_pb");
6
+ const identifier_type_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_type_pb");
7
+ test('test Identifier.ISIN returns correct type name and toString', () => {
8
+ testIsinIdentifier();
9
+ });
10
+ test('test Identifier.CUSIP returns correct type name and toString', () => {
11
+ testCusipIdentifier();
12
+ });
13
+ test('test Identifier.EXCH_TICKER returns correct type name and toString', () => {
14
+ testExchTickerIdentifier();
15
+ });
16
+ test('test Identifier.UNKNOWN returns correct type name and toString', () => {
17
+ testUnknownIdentifier();
18
+ });
19
+ function testIsinIdentifier() {
20
+ const identifierProto = new identifier_pb_1.IdentifierProto();
21
+ identifierProto.setIdentifierType(identifier_type_pb_1.IdentifierTypeProto.ISIN);
22
+ identifierProto.setIdentifierValue('US0378331005');
23
+ const identifier = new identifier_1.Identifier(identifierProto);
24
+ assert(identifier.getIdentifierTypeName() === 'ISIN', 'Should return "ISIN"');
25
+ assert(identifier.getIdentifierValue() === 'US0378331005', 'Should return the identifier value');
26
+ assert(identifier.toString() === 'ISIN:US0378331005', 'Should return "ISIN:US0378331005"');
27
+ }
28
+ function testCusipIdentifier() {
29
+ const identifierProto = new identifier_pb_1.IdentifierProto();
30
+ identifierProto.setIdentifierType(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
31
+ identifierProto.setIdentifierValue('037833100');
32
+ const identifier = new identifier_1.Identifier(identifierProto);
33
+ assert(identifier.getIdentifierTypeName() === 'CUSIP', 'Should return "CUSIP"');
34
+ assert(identifier.getIdentifierValue() === '037833100', 'Should return the identifier value');
35
+ assert(identifier.toString() === 'CUSIP:037833100', 'Should return "CUSIP:037833100"');
36
+ }
37
+ function testExchTickerIdentifier() {
38
+ const identifierProto = new identifier_pb_1.IdentifierProto();
39
+ identifierProto.setIdentifierType(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER);
40
+ identifierProto.setIdentifierValue('AAPL');
41
+ const identifier = new identifier_1.Identifier(identifierProto);
42
+ assert(identifier.getIdentifierTypeName() === 'EXCH_TICKER', 'Should return "EXCH_TICKER"');
43
+ assert(identifier.getIdentifierValue() === 'AAPL', 'Should return the identifier value');
44
+ assert(identifier.toString() === 'EXCH_TICKER:AAPL', 'Should return "EXCH_TICKER:AAPL"');
45
+ }
46
+ function testUnknownIdentifier() {
47
+ const identifierProto = new identifier_pb_1.IdentifierProto();
48
+ identifierProto.setIdentifierType(identifier_type_pb_1.IdentifierTypeProto.UNKNOWN_IDENTIFIER_TYPE);
49
+ identifierProto.setIdentifierValue('UNKNOWN123');
50
+ const identifier = new identifier_1.Identifier(identifierProto);
51
+ assert(identifier.getIdentifierTypeName() === 'UNKNOWN_IDENTIFIER_TYPE', 'Should return "UNKNOWN_IDENTIFIER_TYPE"');
52
+ assert(identifier.getIdentifierValue() === 'UNKNOWN123', 'Should return the identifier value');
53
+ assert(identifier.toString() === 'UNKNOWN_IDENTIFIER_TYPE:UNKNOWN123', 'Should return "UNKNOWN_IDENTIFIER_TYPE:UNKNOWN123"');
54
+ }
55
+ //# sourceMappingURL=identifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier.test.js","sourceRoot":"","sources":["identifier.test.ts"],"names":[],"mappings":"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"}