@fintekkers/ledger-models 0.4.43 → 0.4.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node/fintekkers/models/portfolio/portfolio_pb.d.ts +7 -15
- package/node/fintekkers/models/portfolio/portfolio_pb.js +35 -132
- package/node/fintekkers/models/position/position_filter_pb.d.ts +7 -15
- package/node/fintekkers/models/position/position_filter_pb.js +35 -132
- package/node/fintekkers/models/position/position_pb.d.ts +7 -15
- package/node/fintekkers/models/position/position_pb.js +35 -132
- package/node/fintekkers/models/price/price_pb.d.ts +7 -15
- package/node/fintekkers/models/price/price_pb.js +35 -132
- package/node/fintekkers/models/security/bond/issuance_pb.d.ts +7 -15
- package/node/fintekkers/models/security/bond/issuance_pb.js +35 -132
- package/node/fintekkers/models/security/identifier/identifier_pb.d.ts +7 -15
- package/node/fintekkers/models/security/identifier/identifier_pb.js +35 -132
- package/node/fintekkers/models/security/index_composition_pb.d.ts +7 -15
- package/node/fintekkers/models/security/index_composition_pb.js +35 -132
- package/node/fintekkers/models/security/security_pb.d.ts +7 -15
- package/node/fintekkers/models/security/security_pb.js +35 -132
- package/node/fintekkers/models/security/security_pb.test.js +4 -8
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +4 -5
- package/node/fintekkers/models/security/tenor_pb.d.ts +7 -15
- package/node/fintekkers/models/security/tenor_pb.js +35 -132
- package/node/fintekkers/models/strategy/strategy_allocation_pb.d.ts +7 -15
- package/node/fintekkers/models/strategy/strategy_allocation_pb.js +35 -132
- package/node/fintekkers/models/strategy/strategy_pb.d.ts +7 -15
- package/node/fintekkers/models/strategy/strategy_pb.js +35 -132
- package/node/fintekkers/models/transaction/transaction_pb.d.ts +7 -15
- package/node/fintekkers/models/transaction/transaction_pb.js +35 -132
- package/node/fintekkers/models/util/api/api_key_pb.d.ts +7 -15
- package/node/fintekkers/models/util/api/api_key_pb.js +35 -132
- package/node/fintekkers/models/util/date_range_pb.d.ts +7 -15
- package/node/fintekkers/models/util/date_range_pb.js +35 -132
- package/node/fintekkers/models/util/decimal_value_pb.d.ts +0 -5
- package/node/fintekkers/models/util/decimal_value_pb.js +0 -30
- package/node/fintekkers/models/util/lock/node_partition_pb.d.ts +7 -15
- package/node/fintekkers/models/util/lock/node_partition_pb.js +35 -132
- package/node/fintekkers/models/util/lock/node_state_pb.d.ts +7 -15
- package/node/fintekkers/models/util/lock/node_state_pb.js +35 -132
- package/node/fintekkers/models/util/object_type_pb.d.ts +0 -3
- package/node/fintekkers/models/util/object_type_pb.js +0 -28
- package/node/fintekkers/models/util/version_grpc_pb.js +1 -0
- package/node/fintekkers/models/util/version_pb.d.ts +33 -0
- package/node/fintekkers/models/util/version_pb.js +236 -0
- package/node/fintekkers/requests/index_composition/create_index_composition_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/index_composition/create_index_composition_request_pb.js +68 -264
- package/node/fintekkers/requests/index_composition/get_index_composition_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/index_composition/get_index_composition_request_pb.js +68 -264
- package/node/fintekkers/requests/portfolio/create_portfolio_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/create_portfolio_request_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/create_portfolio_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/create_portfolio_response_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.js +35 -132
- package/node/fintekkers/requests/position/query_position_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/position/query_position_request_pb.js +35 -132
- package/node/fintekkers/requests/position/query_position_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/position/query_position_response_pb.js +35 -132
- package/node/fintekkers/requests/price/create_price_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/create_price_request_pb.js +35 -132
- package/node/fintekkers/requests/price/create_price_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/create_price_response_pb.js +35 -132
- package/node/fintekkers/requests/price/query_price_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/query_price_request_pb.js +35 -132
- package/node/fintekkers/requests/price/query_price_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/query_price_response_pb.js +35 -132
- package/node/fintekkers/requests/security/create_security_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/create_security_request_pb.js +35 -132
- package/node/fintekkers/requests/security/create_security_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/create_security_response_pb.js +35 -132
- package/node/fintekkers/requests/security/get_field_values_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_field_values_request_pb.js +35 -132
- package/node/fintekkers/requests/security/get_field_values_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_field_values_response_pb.js +35 -132
- package/node/fintekkers/requests/security/get_fields_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_fields_response_pb.js +35 -132
- package/node/fintekkers/requests/security/query_security_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/query_security_request_pb.js +35 -132
- package/node/fintekkers/requests/security/query_security_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/query_security_response_pb.js +35 -132
- package/node/fintekkers/requests/transaction/create_transaction_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/create_transaction_request_pb.js +35 -132
- package/node/fintekkers/requests/transaction/create_transaction_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/create_transaction_response_pb.js +35 -132
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.js +35 -132
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.js +35 -132
- package/node/fintekkers/requests/util/delete_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/util/delete_request_pb.js +68 -264
- package/node/fintekkers/requests/util/lock/lock_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/util/lock/lock_request_pb.js +35 -132
- package/node/fintekkers/requests/util/lock/lock_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/util/lock/lock_response_pb.js +35 -132
- package/node/fintekkers/requests/valuation/curve_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/curve_request_pb.js +35 -132
- package/node/fintekkers/requests/valuation/curve_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/curve_response_pb.js +35 -132
- package/node/fintekkers/requests/valuation/product_inputs.test.js +10 -17
- package/node/fintekkers/requests/valuation/product_inputs.test.js.map +1 -1
- package/node/fintekkers/requests/valuation/product_inputs.test.ts +10 -16
- package/node/fintekkers/requests/valuation/valuation_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/valuation_request_pb.js +35 -132
- package/node/fintekkers/requests/valuation/valuation_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/valuation_response_pb.js +35 -132
- package/node/wrappers/models/portfolio/portfolio.test.js +0 -2
- package/node/wrappers/models/portfolio/portfolio.test.js.map +1 -1
- package/node/wrappers/models/portfolio/portfolio.test.ts +0 -2
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js +2 -3
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js.map +1 -1
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.ts +2 -2
- package/node/wrappers/models/position/position.test.js +5 -6
- package/node/wrappers/models/position/position.test.js.map +1 -1
- package/node/wrappers/models/position/position.test.ts +5 -4
- package/node/wrappers/models/position/positionfilter.js +1 -1
- package/node/wrappers/models/position/positionfilter.js.map +1 -1
- package/node/wrappers/models/position/positionfilter.test.js +4 -2
- package/node/wrappers/models/position/positionfilter.test.js.map +1 -1
- package/node/wrappers/models/position/positionfilter.test.ts +3 -2
- package/node/wrappers/models/position/positionfilter.ts +1 -1
- package/node/wrappers/models/price/Price.cash.test.js +4 -5
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -3
- package/node/wrappers/models/price/Price.js +2 -2
- package/node/wrappers/models/price/Price.js.map +1 -1
- package/node/wrappers/models/price/Price.test.js +4 -2
- package/node/wrappers/models/price/Price.test.js.map +1 -1
- package/node/wrappers/models/price/Price.test.ts +4 -2
- package/node/wrappers/models/price/Price.ts +2 -2
- package/node/wrappers/models/price/price_rules.test.js +9 -4
- package/node/wrappers/models/price/price_rules.test.js.map +1 -1
- package/node/wrappers/models/price/price_rules.test.ts +9 -4
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +2 -4
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +2 -3
- package/node/wrappers/models/security/BondSecurity.test.js +7 -13
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +7 -12
- package/node/wrappers/models/security/IndexSecurity.test.js +0 -8
- package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/IndexSecurity.test.ts +0 -8
- package/node/wrappers/models/security/Issuance.test.js +6 -6
- package/node/wrappers/models/security/Issuance.test.js.map +1 -1
- package/node/wrappers/models/security/Issuance.test.ts +6 -5
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js +13 -14
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js.map +1 -1
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.ts +13 -12
- package/node/wrappers/models/security/security-roundtrip.test.js +9 -21
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +9 -20
- package/node/wrappers/models/security/security.identifiers.test.js +0 -2
- package/node/wrappers/models/security/security.identifiers.test.js.map +1 -1
- package/node/wrappers/models/security/security.identifiers.test.ts +0 -2
- package/node/wrappers/models/security/security.tbillCoupon.test.js +3 -2
- package/node/wrappers/models/security/security.tbillCoupon.test.js.map +1 -1
- package/node/wrappers/models/security/security.tbillCoupon.test.ts +3 -2
- package/node/wrappers/models/security/security.test.js +14 -14
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +14 -13
- package/node/wrappers/models/transaction/transaction.derived.test.js +3 -9
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +3 -8
- package/node/wrappers/models/transaction/transaction.js +2 -2
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.test.js +3 -3
- package/node/wrappers/models/transaction/transaction.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.test.ts +3 -2
- package/node/wrappers/models/transaction/transaction.ts +2 -2
- package/node/wrappers/models/transaction/transaction_constructor.test.js +6 -9
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +6 -7
- package/node/wrappers/models/transaction/transaction_price_defaults.test.js +2 -10
- package/node/wrappers/models/transaction/transaction_price_defaults.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_price_defaults.test.ts +2 -9
- package/node/wrappers/models/transaction/transaction_security_defaults.test.js +0 -6
- package/node/wrappers/models/transaction/transaction_security_defaults.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_security_defaults.test.ts +0 -6
- package/node/wrappers/models/utils/date.test.js +0 -2
- package/node/wrappers/models/utils/date.test.js.map +1 -1
- package/node/wrappers/models/utils/date.test.ts +0 -2
- package/node/wrappers/models/utils/datetime.test.js +0 -2
- package/node/wrappers/models/utils/datetime.test.js.map +1 -1
- package/node/wrappers/models/utils/datetime.test.ts +0 -2
- package/node/wrappers/models/utils/decimal.d.ts +9 -28
- package/node/wrappers/models/utils/decimal.js +13 -52
- package/node/wrappers/models/utils/decimal.js.map +1 -1
- package/node/wrappers/models/utils/decimal.test.js +12 -68
- package/node/wrappers/models/utils/decimal.test.js.map +1 -1
- package/node/wrappers/models/utils/decimal.test.ts +14 -76
- package/node/wrappers/models/utils/decimal.ts +12 -60
- package/node/wrappers/models/utils/serialization.test.js +0 -4
- package/node/wrappers/models/utils/serialization.test.js.map +1 -1
- package/node/wrappers/models/utils/serialization.test.ts +0 -4
- package/node/wrappers/requests/position/QueryPositionRequest.js +1 -1
- package/node/wrappers/requests/position/QueryPositionRequest.js.map +1 -1
- package/node/wrappers/requests/position/QueryPositionRequest.ts +1 -1
- package/node/wrappers/requests/query-paging.test.js +4 -28
- package/node/wrappers/requests/query-paging.test.js.map +1 -1
- package/node/wrappers/requests/query-paging.test.ts +3 -36
- package/node/wrappers/services/portfolio-service/PortfolioService.js +3 -3
- package/node/wrappers/services/portfolio-service/PortfolioService.js.map +1 -1
- package/node/wrappers/services/portfolio-service/PortfolioService.ts +3 -3
- package/node/wrappers/services/portfolio-service/portfolioService.test.js +0 -2
- package/node/wrappers/services/portfolio-service/portfolioService.test.js.map +1 -1
- package/node/wrappers/services/portfolio-service/portfolioService.test.ts +0 -2
- package/node/wrappers/services/price-service/PriceService.js +3 -3
- package/node/wrappers/services/price-service/PriceService.js.map +1 -1
- package/node/wrappers/services/price-service/PriceService.ts +3 -3
- package/node/wrappers/services/price-service/price-wrapper.test.js +2 -6
- package/node/wrappers/services/price-service/price-wrapper.test.js.map +1 -1
- package/node/wrappers/services/price-service/price-wrapper.test.ts +2 -6
- package/node/wrappers/services/price-service/price.test.js +8 -17
- package/node/wrappers/services/price-service/price.test.js.map +1 -1
- package/node/wrappers/services/price-service/price.test.ts +8 -14
- package/node/wrappers/services/searchWithSecurities.test.js +2 -7
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -6
- package/node/wrappers/services/security-service/SecurityService.js +3 -3
- package/node/wrappers/services/security-service/SecurityService.js.map +1 -1
- package/node/wrappers/services/security-service/SecurityService.ts +3 -3
- package/node/wrappers/services/security-service/security.test.js +3 -7
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +3 -6
- package/node/wrappers/services/transaction-service/TransactionService.js +3 -3
- package/node/wrappers/services/transaction-service/TransactionService.js.map +1 -1
- package/node/wrappers/services/transaction-service/TransactionService.ts +3 -3
- package/node/wrappers/services/transaction-service/transaction.test.js +3 -8
- package/node/wrappers/services/transaction-service/transaction.test.js.map +1 -1
- package/node/wrappers/services/transaction-service/transaction.test.ts +3 -6
- package/node/wrappers/util/link-resolver.js +3 -3
- package/node/wrappers/util/link-resolver.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.js +4 -13
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +4 -12
- package/node/wrappers/util/link-resolver.ts +3 -3
- package/node/wrappers/util/object-types.d.ts +21 -47
- package/node/wrappers/util/object-types.js +19 -178
- package/node/wrappers/util/object-types.js.map +1 -1
- package/node/wrappers/util/object-types.test.js +50 -151
- package/node/wrappers/util/object-types.test.js.map +1 -1
- package/node/wrappers/util/object-types.test.ts +55 -170
- package/node/wrappers/util/object-types.ts +28 -182
- package/package.json +1 -1
- package/node/wrappers/models/position/position.test copy.js +0 -107
- package/node/wrappers/models/position/position.test copy.js.map +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.d.ts +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.js +0 -174
- package/node/wrappers/models/utils/decimal.legacy.test.js.map +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.ts +0 -158
- package/node/wrappers/models/utils/decimal.typings.test.d.ts +0 -1
- package/node/wrappers/models/utils/decimal.typings.test.js +0 -39
- package/node/wrappers/models/utils/decimal.typings.test.js.map +0 -1
- package/node/wrappers/models/utils/decimal.typings.test.ts +0 -16
- package/node/wrappers/util/object-type-legacy.json +0 -21
|
@@ -5,15 +5,14 @@ import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value
|
|
|
5
5
|
import { ModelValidationError } from '../errors';
|
|
6
6
|
import { ProtoSerializationUtil } from './serialization';
|
|
7
7
|
import {
|
|
8
|
-
CompactDecimal,
|
|
9
8
|
MAX_DIGITS,
|
|
10
9
|
MAX_SCALE,
|
|
11
10
|
MAX_UNSCALED_BYTES,
|
|
12
11
|
decodeDecimal,
|
|
13
12
|
encodeDecimal,
|
|
14
13
|
fromDecimalJs,
|
|
14
|
+
isUnsetDecimal,
|
|
15
15
|
parseDecimalString,
|
|
16
|
-
setDecimalLogger,
|
|
17
16
|
toCanonicalString,
|
|
18
17
|
withField,
|
|
19
18
|
} from './decimal';
|
|
@@ -45,11 +44,6 @@ function expectInvalid(fn: () => unknown): void {
|
|
|
45
44
|
expect(fn).toThrow(ModelValidationError);
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
beforeAll(() => {
|
|
49
|
-
// String-only decodes below would warn once; keep the test output quiet.
|
|
50
|
-
setDecimalLogger({ warn: jest.fn() });
|
|
51
|
-
});
|
|
52
|
-
|
|
53
47
|
describe('metric 1: shared fixture', () => {
|
|
54
48
|
test('fixture limits match the codec', () => {
|
|
55
49
|
expect(FIXTURE.limits).toEqual({
|
|
@@ -76,7 +70,6 @@ describe('metric 1: shared fixture', () => {
|
|
|
76
70
|
const stringErrors: [string, string][] = FIXTURE.string_errors.map((c: { name: string; string: string }) => [c.name, c.string]);
|
|
77
71
|
test.each(stringErrors)('string error %s is a ModelValidationError', (_name, s) => {
|
|
78
72
|
expectInvalid(() => parseDecimalString(s));
|
|
79
|
-
expectInvalid(() => decodeDecimal(new DecimalValueProto().setArbitraryPrecisionValue(s)));
|
|
80
73
|
});
|
|
81
74
|
|
|
82
75
|
const decodeErrors: [string, any][] = FIXTURE.decode_errors.map((c: any) => [c.name, c]);
|
|
@@ -112,28 +105,23 @@ describe('metric 1: shared fixture', () => {
|
|
|
112
105
|
}
|
|
113
106
|
});
|
|
114
107
|
|
|
115
|
-
test('compact form wins over a conflicting string and does not warn', () => {
|
|
116
|
-
jest.isolateModules(() => {
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
118
|
-
const codec = require('./decimal');
|
|
119
|
-
const warn = jest.fn();
|
|
120
|
-
codec.setDecimalLogger({ warn });
|
|
121
|
-
const proto = new DecimalValueProto()
|
|
122
|
-
.setArbitraryPrecisionValue('9')
|
|
123
|
-
.setUnscaledValue(unhex('0096'))
|
|
124
|
-
.setScale(2);
|
|
125
|
-
expect(codec.toCanonicalString(codec.decodeDecimal(proto))).toBe('1.50');
|
|
126
|
-
expect(warn).not.toHaveBeenCalled();
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
108
|
test('negative zero from decimal.js encodes to 0x00 at scale 0', () => {
|
|
131
109
|
const v = fromDecimalJs(new Decimal('-0'));
|
|
132
110
|
expect(v).toEqual({ unscaled: BigInt(0), scale: 0 });
|
|
133
111
|
const proto = encodeDecimal(v);
|
|
134
112
|
expect(hex(proto.getUnscaledValue_asU8())).toBe('00');
|
|
135
113
|
expect(proto.getScale()).toBe(0);
|
|
136
|
-
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
test('a string-only decimal from old bytes is unset (LM-318)', () => {
|
|
117
|
+
// 0x52 = field 10, length-delimited: "1.5" as a v0.4.33 writer stored
|
|
118
|
+
// it. LM-318 deleted field 10, so the decimal is unset.
|
|
119
|
+
const old = DecimalValueProto.deserializeBinary(new Uint8Array([0x52, 0x03, 0x31, 0x2e, 0x35]));
|
|
120
|
+
expect(isUnsetDecimal(old)).toBe(true);
|
|
121
|
+
expect(() => decodeDecimal(old)).toThrow(ModelValidationError);
|
|
122
|
+
expect(() => decodeDecimal(old)).toThrow('decimal is required but unset');
|
|
123
|
+
// Compact zero is still set.
|
|
124
|
+
expect(isUnsetDecimal(encodeDecimal(parseDecimalString('0')))).toBe(false);
|
|
137
125
|
});
|
|
138
126
|
});
|
|
139
127
|
|
|
@@ -162,55 +150,6 @@ describe('metric 3: decodeDecimal takes the proto only', () => {
|
|
|
162
150
|
});
|
|
163
151
|
});
|
|
164
152
|
|
|
165
|
-
describe('metric 4: one deprecation warning per process', () => {
|
|
166
|
-
test('a compact-only decode does not warn', () => {
|
|
167
|
-
jest.isolateModules(() => {
|
|
168
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
169
|
-
const codec = require('./decimal');
|
|
170
|
-
const warn = jest.fn();
|
|
171
|
-
codec.setDecimalLogger({ warn });
|
|
172
|
-
for (const c of CASES) codec.decodeDecimal(compactOnly(c));
|
|
173
|
-
expect(warn).toHaveBeenCalledTimes(0);
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
test('three string-only prices read through the Price wrapper warn exactly once', () => {
|
|
178
|
-
jest.isolateModules(() => {
|
|
179
|
-
// The same isolated registry: Price loads this codec instance.
|
|
180
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
181
|
-
const codec = require('./decimal');
|
|
182
|
-
const warn = jest.fn();
|
|
183
|
-
codec.setDecimalLogger({ warn });
|
|
184
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
185
|
-
const { PriceProto } = require('../../../fintekkers/models/price/price_pb');
|
|
186
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
187
|
-
const Price = require('../price/Price').default;
|
|
188
|
-
const values = ['100.25', '-0.50', '1E+3'];
|
|
189
|
-
const read = values.map(s => new Price(
|
|
190
|
-
new PriceProto().setPrice(new DecimalValueProto().setArbitraryPrecisionValue(s))).getPrice());
|
|
191
|
-
expect(read.map((d: Decimal) => d.toString())).toEqual(['100.25', '-0.5', '1000']);
|
|
192
|
-
expect(warn).toHaveBeenCalledTimes(1);
|
|
193
|
-
expect(warn.mock.calls[0][0]).toContain('arbitrary_precision_value');
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
describe('metric 5: writers set both forms', () => {
|
|
199
|
-
test.each(CASES.map(c => [c.name, c] as [string, Case]))('%s: both forms are set and decode equal', (_name, c) => {
|
|
200
|
-
const proto = encodeDecimal(parseDecimalString(c.string));
|
|
201
|
-
expect(proto.getArbitraryPrecisionValue()).toBe(c.canonical);
|
|
202
|
-
expect(proto.getUnscaledValue_asU8().length).toBeGreaterThan(0);
|
|
203
|
-
|
|
204
|
-
const stringOnly = new DecimalValueProto().setArbitraryPrecisionValue(proto.getArbitraryPrecisionValue());
|
|
205
|
-
const compact = new DecimalValueProto()
|
|
206
|
-
.setUnscaledValue(proto.getUnscaledValue_asU8())
|
|
207
|
-
.setScale(proto.getScale());
|
|
208
|
-
const expected: CompactDecimal = { unscaled: expectedUnscaled(c.unscaled_hex), scale: c.scale };
|
|
209
|
-
expect(decodeDecimal(stringOnly)).toEqual(expected);
|
|
210
|
-
expect(decodeDecimal(compact)).toEqual(expected);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
|
|
214
153
|
describe('guardrail: lossless', () => {
|
|
215
154
|
const NODE = path.join(__dirname, '../../..');
|
|
216
155
|
const SCANNED = [
|
|
@@ -247,14 +186,13 @@ describe('guardrail: lossless', () => {
|
|
|
247
186
|
expectInvalid(() => ProtoSerializationUtil.serialize(0.1));
|
|
248
187
|
expectInvalid(() => ProtoSerializationUtil.serialize(2 ** 53));
|
|
249
188
|
const proto = ProtoSerializationUtil.serialize(42) as DecimalValueProto;
|
|
250
|
-
expect(proto.getArbitraryPrecisionValue()).toBe('42');
|
|
251
189
|
expect(hex(proto.getUnscaledValue_asU8())).toBe('2a');
|
|
252
190
|
expect(proto.getScale()).toBe(0);
|
|
253
191
|
});
|
|
254
192
|
|
|
255
|
-
test('serialize(Decimal) writes
|
|
193
|
+
test('serialize(Decimal) writes the compact form; deserialize returns a Decimal', () => {
|
|
256
194
|
const proto = ProtoSerializationUtil.serialize(new Decimal('-123.45')) as DecimalValueProto;
|
|
257
|
-
expect(proto
|
|
195
|
+
expect(toCanonicalString(decodeDecimal(proto))).toBe('-123.45');
|
|
258
196
|
expect(hex(proto.getUnscaledValue_asU8())).toBe('cfc7');
|
|
259
197
|
|
|
260
198
|
const big = CASES.find(c => c.name === 'two_pow_127')!;
|
|
@@ -9,19 +9,14 @@ import { ModelValidationError, violation } from '../errors';
|
|
|
9
9
|
*
|
|
10
10
|
* value = unscaled x 10^-scale, where `unscaled_value` (field 11) is a minimal
|
|
11
11
|
* two's-complement big-endian integer of any size and `scale` is field 12. A
|
|
12
|
-
* non-empty `unscaled_value` means the
|
|
13
|
-
*
|
|
14
|
-
* read, with a warning logged once per process (LM-307).
|
|
12
|
+
* non-empty `unscaled_value` means the decimal is set; empty means unset. The
|
|
13
|
+
* old string form, field 10, was deleted by LM-318.
|
|
15
14
|
*
|
|
16
15
|
* Lossless: no binary floating point on any path (no JS `number` value, no
|
|
17
16
|
* `parseFloat`). A value that cannot be represented exactly is a
|
|
18
17
|
* `ModelValidationError`, never rounded. The codec does not know which field
|
|
19
18
|
* it is decoding: a caller that wants the field named wraps the call in
|
|
20
19
|
* `withField`.
|
|
21
|
-
*
|
|
22
|
-
* Stage 1 (until LM-295): writers set both forms, so readers on older
|
|
23
|
-
* ledger-models keep working. This module is the only code allowed to touch
|
|
24
|
-
* the deprecated string field.
|
|
25
20
|
*/
|
|
26
21
|
|
|
27
22
|
/**
|
|
@@ -36,9 +31,6 @@ export const MAX_SCALE = 4096;
|
|
|
36
31
|
*/
|
|
37
32
|
export const MAX_UNSCALED_BYTES = 1702;
|
|
38
33
|
|
|
39
|
-
/** The library release that first writes the compact form. */
|
|
40
|
-
const FIRST_COMPACT_RELEASE = 'v0.4.34';
|
|
41
|
-
|
|
42
34
|
// No bigint literals: tsconfig targets es2016.
|
|
43
35
|
const ZERO = BigInt(0);
|
|
44
36
|
const ONE = BigInt(1);
|
|
@@ -50,19 +42,6 @@ export interface CompactDecimal {
|
|
|
50
42
|
scale: number;
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
/** Where the once-per-process deprecation warning goes. Defaults to `console`. */
|
|
54
|
-
export interface DecimalLogger {
|
|
55
|
-
warn(message: string): void;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
let logger: DecimalLogger = console;
|
|
59
|
-
let warned = false;
|
|
60
|
-
|
|
61
|
-
/** Sends the deprecation warning to `l` from now on. Tests use it to spy. */
|
|
62
|
-
export function setDecimalLogger(l: DecimalLogger): void {
|
|
63
|
-
logger = l;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
45
|
/** An unlabelled ModelValidationError: the field is empty until `withField` adds it. */
|
|
67
46
|
function invalid(message: string): ModelValidationError {
|
|
68
47
|
return new ModelValidationError([violation('', undefined, message)]);
|
|
@@ -112,7 +91,7 @@ function isDigit(c: string | undefined): boolean {
|
|
|
112
91
|
}
|
|
113
92
|
|
|
114
93
|
/**
|
|
115
|
-
* Parses a decimal string
|
|
94
|
+
* Parses a decimal string such as `1.50` or `1E+3`.
|
|
116
95
|
*
|
|
117
96
|
* Grammar: `[+-]? (digits [. digits?] | . digits) ([eE] [+-]? digits)?`. No
|
|
118
97
|
* whitespace, no `NaN` or `Infinity`. The exponent is folded into the scale;
|
|
@@ -244,35 +223,25 @@ function decodeCompact(unscaledValue: Uint8Array, scale: number): CompactDecimal
|
|
|
244
223
|
return { unscaled, scale };
|
|
245
224
|
}
|
|
246
225
|
|
|
247
|
-
/** True when
|
|
226
|
+
/** True when `unscaled_value` is empty. A set zero is the byte 0x00. */
|
|
248
227
|
export function isUnsetDecimal(p: DecimalValueProto): boolean {
|
|
249
|
-
return p.getUnscaledValue_asU8().length === 0
|
|
228
|
+
return p.getUnscaledValue_asU8().length === 0;
|
|
250
229
|
}
|
|
251
230
|
|
|
252
231
|
/**
|
|
253
|
-
* Decodes a `DecimalValueProto`.
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* or over-cap value. Takes the proto only (owner ruling, 12 Oct): label
|
|
257
|
-
* errors with `withField`.
|
|
232
|
+
* Decodes a `DecimalValueProto`. An empty `unscaled_value` ("decimal is
|
|
233
|
+
* required but unset") or an over-cap value is a ModelValidationError. Takes
|
|
234
|
+
* the proto only (owner ruling, 12 Oct): label errors with `withField`.
|
|
258
235
|
*/
|
|
259
236
|
export function decodeDecimal(p: DecimalValueProto): CompactDecimal {
|
|
260
237
|
const unscaledValue = p.getUnscaledValue_asU8();
|
|
261
|
-
if (unscaledValue.length
|
|
262
|
-
return decodeCompact(unscaledValue, p.getScale());
|
|
263
|
-
}
|
|
264
|
-
const legacy = p.getArbitraryPrecisionValue();
|
|
265
|
-
if (legacy === '') {
|
|
238
|
+
if (unscaledValue.length === 0) {
|
|
266
239
|
throw invalid('decimal is required but unset');
|
|
267
240
|
}
|
|
268
|
-
|
|
269
|
-
return parseDecimalString(legacy);
|
|
241
|
+
return decodeCompact(unscaledValue, p.getScale());
|
|
270
242
|
}
|
|
271
243
|
|
|
272
|
-
/**
|
|
273
|
-
* Encodes both forms (stage 1): fields 11 and 12, plus the canonical string
|
|
274
|
-
* in field 10 for readers on ledger-models older than v0.4.34.
|
|
275
|
-
*/
|
|
244
|
+
/** Encodes fields 11 and 12. */
|
|
276
245
|
export function encodeDecimal(v: CompactDecimal): DecimalValueProto {
|
|
277
246
|
if (typeof v.unscaled !== 'bigint') {
|
|
278
247
|
throw invalid('decimal unscaled value must be a bigint');
|
|
@@ -281,15 +250,11 @@ export function encodeDecimal(v: CompactDecimal): DecimalValueProto {
|
|
|
281
250
|
throw invalid(`decimal scale must be an integer from 0 to ${MAX_SCALE}: ${v.scale}`);
|
|
282
251
|
}
|
|
283
252
|
return new DecimalValueProto()
|
|
284
|
-
.setArbitraryPrecisionValue(toCanonicalString(v))
|
|
285
253
|
.setUnscaledValue(bigIntToBytes(v.unscaled))
|
|
286
254
|
.setScale(v.scale);
|
|
287
255
|
}
|
|
288
256
|
|
|
289
|
-
/**
|
|
290
|
-
* `p` rewritten in both forms (stage 1), keeping its value and scale. Used
|
|
291
|
-
* when re-saving a message loaded from older bytes.
|
|
292
|
-
*/
|
|
257
|
+
/** `p` rewritten with minimal unscaled bytes, keeping its value and scale. */
|
|
293
258
|
export function reencodeDecimal(p: DecimalValueProto): DecimalValueProto {
|
|
294
259
|
return encodeDecimal(decodeDecimal(p));
|
|
295
260
|
}
|
|
@@ -320,16 +285,3 @@ export function fromDecimalJs(d: Decimal): CompactDecimal {
|
|
|
320
285
|
}
|
|
321
286
|
return parseDecimalString(d.toFixed());
|
|
322
287
|
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Logs that a decimal was read from the deprecated string, the first time
|
|
326
|
-
* only in this process.
|
|
327
|
-
*/
|
|
328
|
-
function emitDeprecation(): void {
|
|
329
|
-
if (warned) return;
|
|
330
|
-
warned = true;
|
|
331
|
-
logger.warn(
|
|
332
|
-
'DecimalValueProto read from deprecated arbitrary_precision_value; '
|
|
333
|
-
+ `writer predates ledger-models ${FIRST_COMPACT_RELEASE}`
|
|
334
|
-
);
|
|
335
|
-
}
|
|
@@ -33,13 +33,9 @@ function checkUUID() {
|
|
|
33
33
|
}
|
|
34
34
|
function checkStrategyAllocationProtoDeserialize() {
|
|
35
35
|
const proto = new strategy_allocation_pb_1.StrategyAllocationProto();
|
|
36
|
-
proto.setObjectClass('StrategyAllocation');
|
|
37
|
-
proto.setVersion('0.0.1');
|
|
38
36
|
proto.setIsLink(false);
|
|
39
37
|
const deserialized = serialization_1.ProtoSerializationUtil.deserialize(proto);
|
|
40
38
|
assert.strictEqual(deserialized, proto, 'deserialize returns same StrategyAllocationProto instance');
|
|
41
|
-
assert.equal(deserialized.getObjectClass(), 'StrategyAllocation');
|
|
42
|
-
assert.equal(deserialized.getVersion(), '0.0.1');
|
|
43
39
|
assert.equal(deserialized.getIsLink(), false);
|
|
44
40
|
}
|
|
45
41
|
//# sourceMappingURL=serialization.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.test.js","sourceRoot":"","sources":["serialization.test.ts"],"names":[],"mappings":";;AACA,uGAAqG;AACrG,mDAAyD;AACzD,iCAA8B;AAE9B,iCAAkC;AAClC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,iBAAiB,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IAClD,uCAAuC,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,SAAS,iBAAiB;IACtB,SAAS,EAAE,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAC/E,MAAM,cAAc,GAAQ,sCAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,gBAAgB,GAAQ,sCAAsB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACjF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,mBAAmB,GAAQ,sCAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7E,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,qBAAqB,GAAQ,sCAAsB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC3F,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,SAAS;IACd,MAAM,IAAI,GAAS,WAAI,CAAC,MAAM,EAAE,CAAC;IACjC,MAAM,cAAc,GAAc,sCAAsB,CAAC,SAAS,CAAC,IAAI,CAAc,CAAC;IACtF,MAAM,QAAQ,GAAS,sCAAsB,CAAC,WAAW,CAAC,cAAc,CAAS,CAAC;IAElF,MAAM,UAAU,GAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAW,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACzC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,uCAAuC;IAC5C,MAAM,KAAK,GAAG,IAAI,gDAAuB,EAAE,CAAC;IAC5C,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"serialization.test.js","sourceRoot":"","sources":["serialization.test.ts"],"names":[],"mappings":";;AACA,uGAAqG;AACrG,mDAAyD;AACzD,iCAA8B;AAE9B,iCAAkC;AAClC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,iBAAiB,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IAClD,uCAAuC,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,SAAS,iBAAiB;IACtB,SAAS,EAAE,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAC/E,MAAM,cAAc,GAAQ,sCAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,gBAAgB,GAAQ,sCAAsB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACjF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,mBAAmB,GAAQ,sCAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7E,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,qBAAqB,GAAQ,sCAAsB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC3F,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,SAAS;IACd,MAAM,IAAI,GAAS,WAAI,CAAC,MAAM,EAAE,CAAC;IACjC,MAAM,cAAc,GAAc,sCAAsB,CAAC,SAAS,CAAC,IAAI,CAAc,CAAC;IACtF,MAAM,QAAQ,GAAS,sCAAsB,CAAC,WAAW,CAAC,cAAc,CAAS,CAAC;IAElF,MAAM,UAAU,GAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAW,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACzC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,uCAAuC;IAC5C,MAAM,KAAK,GAAG,IAAI,gDAAuB,EAAE,CAAC;IAC5C,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,YAAY,GAAG,sCAAsB,CAAC,WAAW,CAAC,KAAK,CAA4B,CAAC;IAE1F,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,2DAA2D,CAAC,CAAC;IACrG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -43,15 +43,11 @@ function checkUUID() {
|
|
|
43
43
|
|
|
44
44
|
function checkStrategyAllocationProtoDeserialize(): void {
|
|
45
45
|
const proto = new StrategyAllocationProto();
|
|
46
|
-
proto.setObjectClass('StrategyAllocation');
|
|
47
|
-
proto.setVersion('0.0.1');
|
|
48
46
|
proto.setIsLink(false);
|
|
49
47
|
|
|
50
48
|
const deserialized = ProtoSerializationUtil.deserialize(proto) as StrategyAllocationProto;
|
|
51
49
|
|
|
52
50
|
assert.strictEqual(deserialized, proto, 'deserialize returns same StrategyAllocationProto instance');
|
|
53
|
-
assert.equal(deserialized.getObjectClass(), 'StrategyAllocation');
|
|
54
|
-
assert.equal(deserialized.getVersion(), '0.0.1');
|
|
55
51
|
assert.equal(deserialized.getIsLink(), false);
|
|
56
52
|
}
|
|
57
53
|
|
|
@@ -25,7 +25,7 @@ class QueryPositionRequest {
|
|
|
25
25
|
this.asOf = asOf;
|
|
26
26
|
}
|
|
27
27
|
toProto() {
|
|
28
|
-
const proto = (0, object_types_1.stamp)(new query_position_request_pb_1.QueryPositionRequestProto(), object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_QUERY_POSITION_REQUEST
|
|
28
|
+
const proto = (0, object_types_1.stamp)(new query_position_request_pb_1.QueryPositionRequestProto(), object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_QUERY_POSITION_REQUEST)
|
|
29
29
|
.setAsOf(this.asOf.toProto())
|
|
30
30
|
.setPositionType(this.positionType)
|
|
31
31
|
.setPositionView(this.positionView)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryPositionRequest.js","sourceRoot":"","sources":["QueryPositionRequest.ts"],"names":[],"mappings":";;;AAEA,iFAAuG;AAEvG,0DAA4D;AAC5D,yEAAsE;AACtE,iFAA2F;AAE3F,UAAU;AACV,+GAA4G;AAC5G,mFAAiF;AACjF,0DAAgD;AAEhD,MAAa,oBAAoB;IAQ7B,MAAM,CAAC,QAAQ,CAAC,MAAyB,EAAE,QAA6B,EAAE,IAAmB;QACzF,OAAO,IAAI,oBAAoB,CAC3B,IAAI,+BAAc,EAAE,EACpB,+BAAiB,CAAC,WAAW,EAC7B,+BAAiB,CAAC,YAAY,EAC9B,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAyB,EAAE,QAA6B;QAChE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,YAAY,MAAsB,EAAE,YAA+B,EAAE,YAA+B,EAChG,MAAyB,EAAE,QAA6B,EAAE,IAAmB;QAC7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,OAAO;QACV,MAAM,KAAK,GAAG,IAAA,oBAAK,EAAC,IAAI,qDAAyB,EAAE,EAAE,gCAAe,CAAC,kCAAkC,
|
|
1
|
+
{"version":3,"file":"QueryPositionRequest.js","sourceRoot":"","sources":["QueryPositionRequest.ts"],"names":[],"mappings":";;;AAEA,iFAAuG;AAEvG,0DAA4D;AAC5D,yEAAsE;AACtE,iFAA2F;AAE3F,UAAU;AACV,+GAA4G;AAC5G,mFAAiF;AACjF,0DAAgD;AAEhD,MAAa,oBAAoB;IAQ7B,MAAM,CAAC,QAAQ,CAAC,MAAyB,EAAE,QAA6B,EAAE,IAAmB;QACzF,OAAO,IAAI,oBAAoB,CAC3B,IAAI,+BAAc,EAAE,EACpB,+BAAiB,CAAC,WAAW,EAC7B,+BAAiB,CAAC,YAAY,EAC9B,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAyB,EAAE,QAA6B;QAChE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,YAAY,MAAsB,EAAE,YAA+B,EAAE,YAA+B,EAChG,MAAyB,EAAE,QAA6B,EAAE,IAAmB;QAC7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,OAAO;QACV,MAAM,KAAK,GAAG,IAAA,oBAAK,EAAC,IAAI,qDAAyB,EAAE,EAAE,gCAAe,CAAC,kCAAkC,CAAC;aACnG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aAC5B,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;aAClC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;aAClC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;aAC1B,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC9B,gBAAgB,CAAC,wCAAyB,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC;YAClD,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAEhD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAnDD,oDAmDC"}
|
|
@@ -45,7 +45,7 @@ export class QueryPositionRequest {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
public toProto(): QueryPositionRequestProto {
|
|
48
|
-
const proto = stamp(new QueryPositionRequestProto(), ObjectTypeProto.OBJECT_TYPE_QUERY_POSITION_REQUEST
|
|
48
|
+
const proto = stamp(new QueryPositionRequestProto(), ObjectTypeProto.OBJECT_TYPE_QUERY_POSITION_REQUEST)
|
|
49
49
|
.setAsOf(this.asOf.toProto())
|
|
50
50
|
.setPositionType(this.positionType)
|
|
51
51
|
.setPositionView(this.positionView)
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
// Wire tests for the paging fields (limit, page_token, next_page_token) on all
|
|
4
4
|
// four query messages. See docs/adr/query_paging.md.
|
|
5
5
|
const date_range_pb_1 = require("../../fintekkers/models/util/date_range_pb");
|
|
6
|
+
const version_pb_1 = require("../../fintekkers/models/util/version_pb");
|
|
6
7
|
const query_portfolio_request_pb_1 = require("../../fintekkers/requests/portfolio/query_portfolio_request_pb");
|
|
7
8
|
const query_portfolio_response_pb_1 = require("../../fintekkers/requests/portfolio/query_portfolio_response_pb");
|
|
8
9
|
const query_price_request_pb_1 = require("../../fintekkers/requests/price/query_price_request_pb");
|
|
@@ -11,10 +12,6 @@ const query_security_request_pb_1 = require("../../fintekkers/requests/security/
|
|
|
11
12
|
const query_security_response_pb_1 = require("../../fintekkers/requests/security/query_security_response_pb");
|
|
12
13
|
const query_transaction_request_pb_1 = require("../../fintekkers/requests/transaction/query_transaction_request_pb");
|
|
13
14
|
const query_transaction_response_pb_1 = require("../../fintekkers/requests/transaction/query_transaction_response_pb");
|
|
14
|
-
// Serialized with the bindings on main (0a0c9657), before the paging fields
|
|
15
|
-
// existed. Command: see ledger-models-python/test/requests/test_query_paging.py.
|
|
16
|
-
const OLD_PRICE_REQUEST_HEX = '0a0c5072696365526571756573741205302e302e31c80106';
|
|
17
|
-
const OLD_TRANSACTION_REQUEST_HEX = '0a125472616e73616374696f6e526571756573741205302e302e31c00164';
|
|
18
15
|
const ENTITIES = [
|
|
19
16
|
{
|
|
20
17
|
name: 'security',
|
|
@@ -45,33 +42,14 @@ const ENTITIES = [
|
|
|
45
42
|
parseResponse: (b) => query_price_response_pb_1.QueryPriceResponseProto.deserializeBinary(b),
|
|
46
43
|
},
|
|
47
44
|
];
|
|
48
|
-
function fromHex(hex) {
|
|
49
|
-
return Uint8Array.from(Buffer.from(hex, 'hex'));
|
|
50
|
-
}
|
|
51
45
|
describe('query paging fields', () => {
|
|
52
46
|
test.each(ENTITIES)('$name: old request reads limit 0 and empty page_token', (entity) => {
|
|
53
47
|
const old = entity.newRequest();
|
|
54
|
-
old.setObjectClass('Request');
|
|
55
|
-
old.setVersion('0.0.1');
|
|
56
48
|
const parsed = entity.parseRequest(old.serializeBinary());
|
|
57
49
|
expect(parsed.getLimit()).toBe(0);
|
|
58
50
|
expect(parsed.getPageToken()).toBe('');
|
|
59
51
|
expect(entity.parseResponse(new Uint8Array()).getNextPageToken()).toBe('');
|
|
60
52
|
});
|
|
61
|
-
test('old price request bytes decode', () => {
|
|
62
|
-
const parsed = query_price_request_pb_1.QueryPriceRequestProto.deserializeBinary(fromHex(OLD_PRICE_REQUEST_HEX));
|
|
63
|
-
expect(parsed.getObjectClass()).toBe('PriceRequest');
|
|
64
|
-
expect(parsed.getTimeRangeCase()).toBe(query_price_request_pb_1.QueryPriceRequestProto.TimeRangeCase.HORIZON);
|
|
65
|
-
expect(parsed.getHorizon()).toBe(query_price_request_pb_1.PriceHorizonProto.PRICE_HORIZON_1_YEAR);
|
|
66
|
-
expect(parsed.getLimit()).toBe(0);
|
|
67
|
-
expect(parsed.getPageToken()).toBe('');
|
|
68
|
-
});
|
|
69
|
-
test('old transaction request bytes decode', () => {
|
|
70
|
-
const parsed = query_transaction_request_pb_1.QueryTransactionRequestProto.deserializeBinary(fromHex(OLD_TRANSACTION_REQUEST_HEX));
|
|
71
|
-
expect(parsed.getObjectClass()).toBe('TransactionRequest');
|
|
72
|
-
expect(parsed.getLimit()).toBe(100);
|
|
73
|
-
expect(parsed.getPageToken()).toBe('');
|
|
74
|
-
});
|
|
75
53
|
test.each(ENTITIES)('$name: paging fields round-trip', (entity) => {
|
|
76
54
|
const request = entity.newRequest();
|
|
77
55
|
request.setLimit(25);
|
|
@@ -86,9 +64,7 @@ describe('query paging fields', () => {
|
|
|
86
64
|
});
|
|
87
65
|
test.each(ENTITIES)('$name: empty next_page_token encodes as unset', (entity) => {
|
|
88
66
|
const unset = entity.newResponse();
|
|
89
|
-
unset.setVersion('0.0.1');
|
|
90
67
|
const empty = entity.newResponse();
|
|
91
|
-
empty.setVersion('0.0.1');
|
|
92
68
|
empty.setNextPageToken('');
|
|
93
69
|
expect(Array.from(empty.serializeBinary())).toEqual(Array.from(unset.serializeBinary()));
|
|
94
70
|
});
|
|
@@ -104,16 +80,16 @@ describe('query paging fields', () => {
|
|
|
104
80
|
expect(parsed.getLimit()).toBe(10);
|
|
105
81
|
});
|
|
106
82
|
test('price page_token round-trips with date_range', () => {
|
|
107
|
-
var _a;
|
|
83
|
+
var _a, _b;
|
|
108
84
|
const dateRange = new date_range_pb_1.DateRangeProto();
|
|
109
|
-
dateRange.setVersion(
|
|
85
|
+
dateRange.setVersion(new version_pb_1.VersionProto().setPatch(1));
|
|
110
86
|
const request = new query_price_request_pb_1.QueryPriceRequestProto();
|
|
111
87
|
request.setDateRange(dateRange);
|
|
112
88
|
request.setPageToken('opaque-abc');
|
|
113
89
|
request.setLimit(10);
|
|
114
90
|
const parsed = query_price_request_pb_1.QueryPriceRequestProto.deserializeBinary(request.serializeBinary());
|
|
115
91
|
expect(parsed.getTimeRangeCase()).toBe(query_price_request_pb_1.QueryPriceRequestProto.TimeRangeCase.DATE_RANGE);
|
|
116
|
-
expect((_a = parsed.getDateRange()) === null || _a === void 0 ? void 0 : _a.getVersion()).toBe(
|
|
92
|
+
expect((_b = (_a = parsed.getDateRange()) === null || _a === void 0 ? void 0 : _a.getVersion()) === null || _b === void 0 ? void 0 : _b.getPatch()).toBe(1);
|
|
117
93
|
expect(parsed.getPageToken()).toBe('opaque-abc');
|
|
118
94
|
expect(parsed.getLimit()).toBe(10);
|
|
119
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-paging.test.js","sourceRoot":"","sources":["query-paging.test.ts"],"names":[],"mappings":";;AAAA,+EAA+E;AAC/E,qDAAqD;AACrD,8EAA4E;AAC5E,+GAA4G;AAC5G,iHAA8G;AAC9G,mGAAmH;AACnH,qGAAkG;AAClG,4GAAyG;AACzG,8GAA2G;AAC3G,qHAAkH;AAClH,uHAAoH;
|
|
1
|
+
{"version":3,"file":"query-paging.test.js","sourceRoot":"","sources":["query-paging.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Wire tests for the paging fields (limit, page_token, next_page_token) on all
|
|
2
2
|
// four query messages. See docs/adr/query_paging.md.
|
|
3
3
|
import { DateRangeProto } from '../../fintekkers/models/util/date_range_pb';
|
|
4
|
+
import { VersionProto } from '../../fintekkers/models/util/version_pb';
|
|
4
5
|
import { QueryPortfolioRequestProto } from '../../fintekkers/requests/portfolio/query_portfolio_request_pb';
|
|
5
6
|
import { QueryPortfolioResponseProto } from '../../fintekkers/requests/portfolio/query_portfolio_response_pb';
|
|
6
7
|
import { PriceHorizonProto, QueryPriceRequestProto } from '../../fintekkers/requests/price/query_price_request_pb';
|
|
@@ -10,14 +11,7 @@ import { QuerySecurityResponseProto } from '../../fintekkers/requests/security/q
|
|
|
10
11
|
import { QueryTransactionRequestProto } from '../../fintekkers/requests/transaction/query_transaction_request_pb';
|
|
11
12
|
import { QueryTransactionResponseProto } from '../../fintekkers/requests/transaction/query_transaction_response_pb';
|
|
12
13
|
|
|
13
|
-
// Serialized with the bindings on main (0a0c9657), before the paging fields
|
|
14
|
-
// existed. Command: see ledger-models-python/test/requests/test_query_paging.py.
|
|
15
|
-
const OLD_PRICE_REQUEST_HEX = '0a0c5072696365526571756573741205302e302e31c80106';
|
|
16
|
-
const OLD_TRANSACTION_REQUEST_HEX = '0a125472616e73616374696f6e526571756573741205302e302e31c00164';
|
|
17
|
-
|
|
18
14
|
interface PagedRequest {
|
|
19
|
-
setObjectClass(value: string): unknown;
|
|
20
|
-
setVersion(value: string): unknown;
|
|
21
15
|
getLimit(): number;
|
|
22
16
|
setLimit(value: number): unknown;
|
|
23
17
|
getPageToken(): string;
|
|
@@ -26,7 +20,6 @@ interface PagedRequest {
|
|
|
26
20
|
}
|
|
27
21
|
|
|
28
22
|
interface PagedResponse {
|
|
29
|
-
setVersion(value: string): unknown;
|
|
30
23
|
getNextPageToken(): string;
|
|
31
24
|
setNextPageToken(value: string): unknown;
|
|
32
25
|
serializeBinary(): Uint8Array;
|
|
@@ -71,15 +64,9 @@ const ENTITIES: Entity[] = [
|
|
|
71
64
|
},
|
|
72
65
|
];
|
|
73
66
|
|
|
74
|
-
function fromHex(hex: string): Uint8Array {
|
|
75
|
-
return Uint8Array.from(Buffer.from(hex, 'hex'));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
67
|
describe('query paging fields', () => {
|
|
79
68
|
test.each(ENTITIES)('$name: old request reads limit 0 and empty page_token', (entity) => {
|
|
80
69
|
const old = entity.newRequest();
|
|
81
|
-
old.setObjectClass('Request');
|
|
82
|
-
old.setVersion('0.0.1');
|
|
83
70
|
|
|
84
71
|
const parsed = entity.parseRequest(old.serializeBinary());
|
|
85
72
|
|
|
@@ -88,24 +75,6 @@ describe('query paging fields', () => {
|
|
|
88
75
|
expect(entity.parseResponse(new Uint8Array()).getNextPageToken()).toBe('');
|
|
89
76
|
});
|
|
90
77
|
|
|
91
|
-
test('old price request bytes decode', () => {
|
|
92
|
-
const parsed = QueryPriceRequestProto.deserializeBinary(fromHex(OLD_PRICE_REQUEST_HEX));
|
|
93
|
-
|
|
94
|
-
expect(parsed.getObjectClass()).toBe('PriceRequest');
|
|
95
|
-
expect(parsed.getTimeRangeCase()).toBe(QueryPriceRequestProto.TimeRangeCase.HORIZON);
|
|
96
|
-
expect(parsed.getHorizon()).toBe(PriceHorizonProto.PRICE_HORIZON_1_YEAR);
|
|
97
|
-
expect(parsed.getLimit()).toBe(0);
|
|
98
|
-
expect(parsed.getPageToken()).toBe('');
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
test('old transaction request bytes decode', () => {
|
|
102
|
-
const parsed = QueryTransactionRequestProto.deserializeBinary(fromHex(OLD_TRANSACTION_REQUEST_HEX));
|
|
103
|
-
|
|
104
|
-
expect(parsed.getObjectClass()).toBe('TransactionRequest');
|
|
105
|
-
expect(parsed.getLimit()).toBe(100);
|
|
106
|
-
expect(parsed.getPageToken()).toBe('');
|
|
107
|
-
});
|
|
108
|
-
|
|
109
78
|
test.each(ENTITIES)('$name: paging fields round-trip', (entity) => {
|
|
110
79
|
const request = entity.newRequest();
|
|
111
80
|
request.setLimit(25);
|
|
@@ -123,9 +92,7 @@ describe('query paging fields', () => {
|
|
|
123
92
|
|
|
124
93
|
test.each(ENTITIES)('$name: empty next_page_token encodes as unset', (entity) => {
|
|
125
94
|
const unset = entity.newResponse();
|
|
126
|
-
unset.setVersion('0.0.1');
|
|
127
95
|
const empty = entity.newResponse();
|
|
128
|
-
empty.setVersion('0.0.1');
|
|
129
96
|
empty.setNextPageToken('');
|
|
130
97
|
|
|
131
98
|
expect(Array.from(empty.serializeBinary())).toEqual(Array.from(unset.serializeBinary()));
|
|
@@ -147,7 +114,7 @@ describe('query paging fields', () => {
|
|
|
147
114
|
|
|
148
115
|
test('price page_token round-trips with date_range', () => {
|
|
149
116
|
const dateRange = new DateRangeProto();
|
|
150
|
-
dateRange.setVersion(
|
|
117
|
+
dateRange.setVersion(new VersionProto().setPatch(1));
|
|
151
118
|
const request = new QueryPriceRequestProto();
|
|
152
119
|
request.setDateRange(dateRange);
|
|
153
120
|
request.setPageToken('opaque-abc');
|
|
@@ -156,7 +123,7 @@ describe('query paging fields', () => {
|
|
|
156
123
|
const parsed = QueryPriceRequestProto.deserializeBinary(request.serializeBinary());
|
|
157
124
|
|
|
158
125
|
expect(parsed.getTimeRangeCase()).toBe(QueryPriceRequestProto.TimeRangeCase.DATE_RANGE);
|
|
159
|
-
expect(parsed.getDateRange()?.getVersion()).toBe(
|
|
126
|
+
expect(parsed.getDateRange()?.getVersion()?.getPatch()).toBe(1);
|
|
160
127
|
expect(parsed.getPageToken()).toBe('opaque-abc');
|
|
161
128
|
expect(parsed.getLimit()).toBe(10);
|
|
162
129
|
});
|
|
@@ -67,7 +67,7 @@ class PortfolioService {
|
|
|
67
67
|
validateCreatePortfolio(portfolio) {
|
|
68
68
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
69
|
const createRequest = new create_portfolio_request_pb_1.CreatePortfolioRequestProto();
|
|
70
|
-
(0, object_types_1.stamp)(createRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST
|
|
70
|
+
(0, object_types_1.stamp)(createRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST);
|
|
71
71
|
createRequest.setCreatePortfolioInput(portfolio);
|
|
72
72
|
const validateCreateOrUpdateAsync = (0, util_1.promisify)(this.client.validateCreateOrUpdate.bind(this.client));
|
|
73
73
|
const response = yield validateCreateOrUpdateAsync(createRequest);
|
|
@@ -77,7 +77,7 @@ class PortfolioService {
|
|
|
77
77
|
createPortfolio(portfolio) {
|
|
78
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
79
|
const createRequest = new create_portfolio_request_pb_1.CreatePortfolioRequestProto();
|
|
80
|
-
(0, object_types_1.stamp)(createRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST
|
|
80
|
+
(0, object_types_1.stamp)(createRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST);
|
|
81
81
|
createRequest.setCreatePortfolioInput(portfolio);
|
|
82
82
|
const createPortfolioAsync = (0, util_1.promisify)(this.client.createOrUpdate.bind(this.client));
|
|
83
83
|
const response = yield createPortfolioAsync(createRequest);
|
|
@@ -96,7 +96,7 @@ class PortfolioService {
|
|
|
96
96
|
searchPortfolio(asOf, positionFilter) {
|
|
97
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
98
|
const searchRequest = new query_portfolio_request_pb_1.QueryPortfolioRequestProto();
|
|
99
|
-
(0, object_types_1.stamp)(searchRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_QUERY_PORTFOLIO_REQUEST
|
|
99
|
+
(0, object_types_1.stamp)(searchRequest, object_type_pb_1.ObjectTypeProto.OBJECT_TYPE_QUERY_PORTFOLIO_REQUEST);
|
|
100
100
|
searchRequest.setAsOf(asOf);
|
|
101
101
|
searchRequest.setSearchPortfolioInput(positionFilter.toProto());
|
|
102
102
|
const tmpClient = this.client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortfolioService.js","sourceRoot":"","sources":["PortfolioService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AAOjC,cAAc;AAEd,sBAAsB;AACtB,wHAA2G;AAC3G,kHAA+G;AAE/G,oHAAiH;AAEjH,uFAA0D;AAC1D,8DAAoD;AAEpD,iFAAyD;AACzD,kDAA+C;AAC/C,0DAA4D;AAC5D,uEAAyD;AACzD,mFAAiF;AACjF,0DAAgD;AAEhD,MAAM,gBAAgB;IAGpB,mEAAmE;IACnE,MAAM,KAAK,GAAG;QACZ,OAAO,wBAAS,CAAC,MAAM,CAAC,wBAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,MAAe;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,MAAM,EAAE,wBAAO,CAAC,SAAS,CAAC,CAAC;YACzG,IAAI,CAAC,MAAM,GAAG,IAAI,2CAAe,CAAC,wBAAS,CAAC,MAAM,CAAC,wBAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SACvG;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,2CAAe,CAAC,wBAAS,CAAC,MAAM,CAAC,wBAAO,CAAC,SAAS,CAAC,EAAE,wBAAS,CAAC,cAAc,CAAC,wBAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACrH;IACH,CAAC;IAEK,uBAAuB,CAAC,SAAyB;;YACrD,MAAM,aAAa,GAAG,IAAI,yDAA2B,EAAE,CAAC;YACxD,IAAA,oBAAK,EAAC,aAAa,EAAE,gCAAe,CAAC,oCAAoC,
|
|
1
|
+
{"version":3,"file":"PortfolioService.js","sourceRoot":"","sources":["PortfolioService.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ class PortfolioService {
|
|
|
42
42
|
|
|
43
43
|
async validateCreatePortfolio(portfolio: PortfolioProto): Promise<SummaryProto> {
|
|
44
44
|
const createRequest = new CreatePortfolioRequestProto();
|
|
45
|
-
stamp(createRequest, ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST
|
|
45
|
+
stamp(createRequest, ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST);
|
|
46
46
|
createRequest.setCreatePortfolioInput(portfolio);
|
|
47
47
|
|
|
48
48
|
const validateCreateOrUpdateAsync = promisify(this.client.validateCreateOrUpdate.bind(this.client));
|
|
@@ -52,7 +52,7 @@ class PortfolioService {
|
|
|
52
52
|
|
|
53
53
|
async createPortfolio(portfolio: PortfolioProto): Promise<CreatePortfolioResponseProto> {
|
|
54
54
|
const createRequest = new CreatePortfolioRequestProto();
|
|
55
|
-
stamp(createRequest, ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST
|
|
55
|
+
stamp(createRequest, ObjectTypeProto.OBJECT_TYPE_CREATE_PORTFOLIO_REQUEST);
|
|
56
56
|
createRequest.setCreatePortfolioInput(portfolio);
|
|
57
57
|
|
|
58
58
|
const createPortfolioAsync = promisify(this.client.createOrUpdate.bind(this.client));
|
|
@@ -72,7 +72,7 @@ class PortfolioService {
|
|
|
72
72
|
async searchPortfolio(asOf: LocalTimestampProto,
|
|
73
73
|
positionFilter: PositionFilter): Promise<Portfolio[]> {
|
|
74
74
|
const searchRequest = new QueryPortfolioRequestProto();
|
|
75
|
-
stamp(searchRequest, ObjectTypeProto.OBJECT_TYPE_QUERY_PORTFOLIO_REQUEST
|
|
75
|
+
stamp(searchRequest, ObjectTypeProto.OBJECT_TYPE_QUERY_PORTFOLIO_REQUEST);
|
|
76
76
|
searchRequest.setAsOf(asOf);
|
|
77
77
|
|
|
78
78
|
searchRequest.setSearchPortfolioInput(positionFilter.toProto());
|