@barchart/portfolio-api-common 1.0.257 → 1.0.261
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.
|
@@ -18,9 +18,10 @@ module.exports = (() => {
|
|
|
18
18
|
* @param {Boolean} opening
|
|
19
19
|
* @param {Boolean} closing
|
|
20
20
|
* @param {Boolean} fee
|
|
21
|
+
* @param {Boolean} corporateAction
|
|
21
22
|
*/
|
|
22
23
|
class TransactionType extends Enum {
|
|
23
|
-
constructor(code, description, display, purchase, sale, income, opening, closing, fee) {
|
|
24
|
+
constructor(code, description, display, purchase, sale, income, opening, closing, fee, corporateAction) {
|
|
24
25
|
super(code, description);
|
|
25
26
|
|
|
26
27
|
assert.argumentIsRequired(display, 'display', String);
|
|
@@ -30,6 +31,7 @@ module.exports = (() => {
|
|
|
30
31
|
assert.argumentIsRequired(opening, 'opening', Boolean);
|
|
31
32
|
assert.argumentIsRequired(closing, 'closing', Boolean);
|
|
32
33
|
assert.argumentIsRequired(fee, 'fee', Boolean);
|
|
34
|
+
assert.argumentIsRequired(corporateAction, 'corporateAction', Boolean);
|
|
33
35
|
|
|
34
36
|
this._display = display;
|
|
35
37
|
this._purchase = purchase;
|
|
@@ -38,6 +40,7 @@ module.exports = (() => {
|
|
|
38
40
|
this._opening = opening;
|
|
39
41
|
this._closing = closing;
|
|
40
42
|
this._fee = fee;
|
|
43
|
+
this._corporateAction = corporateAction;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
/**
|
|
@@ -123,6 +126,16 @@ module.exports = (() => {
|
|
|
123
126
|
return this._fee;
|
|
124
127
|
}
|
|
125
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Indicates if the transaction is a corporate action.
|
|
131
|
+
*
|
|
132
|
+
* @public
|
|
133
|
+
* @returns {Boolean}
|
|
134
|
+
*/
|
|
135
|
+
get corporateAction() {
|
|
136
|
+
return this._corporateAction;
|
|
137
|
+
}
|
|
138
|
+
|
|
126
139
|
/**
|
|
127
140
|
* A purchase.
|
|
128
141
|
*
|
|
@@ -326,27 +339,27 @@ module.exports = (() => {
|
|
|
326
339
|
}
|
|
327
340
|
}
|
|
328
341
|
|
|
329
|
-
const buy = new TransactionType('B', 'Buy', 'Buy', true, false, false, true, false, false);
|
|
330
|
-
const sell = new TransactionType('S', 'Sell', 'Sell', false, true, false, false, true, false);
|
|
331
|
-
const buyShort = new TransactionType('BS', 'Buy To Cover', 'Buy To Cover', true, false, false, false, true, false);
|
|
332
|
-
const sellShort = new TransactionType('SS', 'Sell Short', 'Sell Short', false, true, false, true, false, false);
|
|
333
|
-
const dividend = new TransactionType('DV', 'Dividend', 'Dividend', false, false, true, false, false, false);
|
|
334
|
-
const dividendReinvest = new TransactionType('DX', 'Dividend (Reinvested)', 'Dividend Reinvest', false, false, false, true, false, false);
|
|
335
|
-
const dividendStock = new TransactionType('DS', 'Dividend (Stock)', 'Dividend Stock', false, false, false, true, false, false);
|
|
336
|
-
const split = new TransactionType('SP', 'Split', 'Split', false, false, false, true, false, false);
|
|
337
|
-
const fee = new TransactionType('F', 'Fee', 'Fee', false, false, false, false, false, true);
|
|
338
|
-
const feeUnits = new TransactionType('FU', 'Fee Units', 'Fee', false, false, false, false, true, false);
|
|
339
|
-
|
|
340
|
-
const distributionCash = new TransactionType('DC', 'Distribution (Cash)', 'Cash Distribution', false, false, true, false, false, false);
|
|
341
|
-
const distributionFund = new TransactionType('DF', 'Distribution (Units)', 'Unit Distribution', false, false, false, true, false, false);
|
|
342
|
-
|
|
343
|
-
const deposit = new TransactionType('D', 'Deposit', 'Deposit', false, false, false, false, false, false);
|
|
344
|
-
const withdrawal = new TransactionType('W', 'Withdrawal', 'Withdrawal', false, false, false, false, false, false);
|
|
345
|
-
const debit = new TransactionType('DR', 'Debit', 'Debit', false, false, false, false, false, false);
|
|
346
|
-
const credit = new TransactionType('CR', 'Credit', 'Credit', false, false, false, false, false, false);
|
|
347
|
-
|
|
348
|
-
const valuation = new TransactionType('V', 'Valuation', 'Valuation', false, false, false, false, false, false);
|
|
349
|
-
const income = new TransactionType('I', 'Income', 'Income', false, false, true, false, false, false);
|
|
342
|
+
const buy = new TransactionType('B', 'Buy', 'Buy', true, false, false, true, false, false, false);
|
|
343
|
+
const sell = new TransactionType('S', 'Sell', 'Sell', false, true, false, false, true, false, false);
|
|
344
|
+
const buyShort = new TransactionType('BS', 'Buy To Cover', 'Buy To Cover', true, false, false, false, true, false, false);
|
|
345
|
+
const sellShort = new TransactionType('SS', 'Sell Short', 'Sell Short', false, true, false, true, false, false, false);
|
|
346
|
+
const dividend = new TransactionType('DV', 'Dividend', 'Dividend', false, false, true, false, false, false, true);
|
|
347
|
+
const dividendReinvest = new TransactionType('DX', 'Dividend (Reinvested)', 'Dividend Reinvest', false, false, false, true, false, false, true);
|
|
348
|
+
const dividendStock = new TransactionType('DS', 'Dividend (Stock)', 'Dividend Stock', false, false, false, true, false, false, true);
|
|
349
|
+
const split = new TransactionType('SP', 'Split', 'Split', false, false, false, true, false, false, true);
|
|
350
|
+
const fee = new TransactionType('F', 'Fee', 'Fee', false, false, false, false, false, true, false);
|
|
351
|
+
const feeUnits = new TransactionType('FU', 'Fee Units', 'Fee', false, false, false, false, true, false, false);
|
|
352
|
+
|
|
353
|
+
const distributionCash = new TransactionType('DC', 'Distribution (Cash)', 'Cash Distribution', false, false, true, false, false, false, true);
|
|
354
|
+
const distributionFund = new TransactionType('DF', 'Distribution (Units)', 'Unit Distribution', false, false, false, true, false, false, true);
|
|
355
|
+
|
|
356
|
+
const deposit = new TransactionType('D', 'Deposit', 'Deposit', false, false, false, false, false, false, false);
|
|
357
|
+
const withdrawal = new TransactionType('W', 'Withdrawal', 'Withdrawal', false, false, false, false, false, false, false);
|
|
358
|
+
const debit = new TransactionType('DR', 'Debit', 'Debit', false, false, false, false, false, false, false);
|
|
359
|
+
const credit = new TransactionType('CR', 'Credit', 'Credit', false, false, false, false, false, false, false);
|
|
360
|
+
|
|
361
|
+
const valuation = new TransactionType('V', 'Valuation', 'Valuation', false, false, false, false, false, false, false);
|
|
362
|
+
const income = new TransactionType('I', 'Income', 'Income', false, false, true, false, false, false, false);
|
|
350
363
|
|
|
351
364
|
return TransactionType;
|
|
352
365
|
})();
|
|
@@ -598,7 +598,15 @@ module.exports = (() => {
|
|
|
598
598
|
|
|
599
599
|
function formatPercent(decimal, precision, plus) {
|
|
600
600
|
if (decimal !== null) {
|
|
601
|
-
|
|
601
|
+
let prefix;
|
|
602
|
+
|
|
603
|
+
if (is.boolean(plus) && plus && !Decimal.getIsNegative(decimal)) {
|
|
604
|
+
prefix = '+';
|
|
605
|
+
} else {
|
|
606
|
+
prefix = '';
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
return `${prefix}${formatDecimal(decimal.multiply(100), precision)}%`;
|
|
602
610
|
} else {
|
|
603
611
|
return '—';
|
|
604
612
|
}
|
|
@@ -669,7 +677,7 @@ module.exports = (() => {
|
|
|
669
677
|
actual.cashTotal = updates.cashTotal;
|
|
670
678
|
|
|
671
679
|
format.basis = formatCurrency(actual.basis, currency);
|
|
672
|
-
format.realized = formatCurrency(actual.
|
|
680
|
+
format.realized = formatCurrency(actual.realized, currency);
|
|
673
681
|
format.unrealized = formatCurrency(actual.unrealized, currency);
|
|
674
682
|
format.income = formatCurrency(actual.income, currency);
|
|
675
683
|
format.summaryTotalCurrent = formatCurrency(updates.summaryTotalCurrent, currency);
|
|
@@ -233,7 +233,6 @@ module.exports = (() => {
|
|
|
233
233
|
.withField('dividend.effective', DataType.DAY, true)
|
|
234
234
|
.withField('dividend.price', DataType.DECIMAL, true)
|
|
235
235
|
.withField('dividend.amount', DataType.DECIMAL, true)
|
|
236
|
-
.withField('dividend.reference', DataType.STRING, true)
|
|
237
236
|
.withField('split.numerator', DataType.DECIMAL, true)
|
|
238
237
|
.withField('split.denominator', DataType.DECIMAL, true)
|
|
239
238
|
.withField('split.effective', DataType.DAY, true)
|
|
@@ -283,6 +282,7 @@ module.exports = (() => {
|
|
|
283
282
|
.withField('quantity', DataType.DECIMAL)
|
|
284
283
|
.withField('fee', DataType.DECIMAL, true)
|
|
285
284
|
.withField('force', DataType.BOOLEAN, true)
|
|
285
|
+
.withField('force', DataType.BOOLEAN, true)
|
|
286
286
|
.schema
|
|
287
287
|
);
|
|
288
288
|
|
package/package.json
CHANGED
package/test/SpecRunner.js
CHANGED
|
@@ -463,9 +463,10 @@ module.exports = (() => {
|
|
|
463
463
|
* @param {Boolean} opening
|
|
464
464
|
* @param {Boolean} closing
|
|
465
465
|
* @param {Boolean} fee
|
|
466
|
+
* @param {Boolean} corporateAction
|
|
466
467
|
*/
|
|
467
468
|
class TransactionType extends Enum {
|
|
468
|
-
constructor(code, description, display, purchase, sale, income, opening, closing, fee) {
|
|
469
|
+
constructor(code, description, display, purchase, sale, income, opening, closing, fee, corporateAction) {
|
|
469
470
|
super(code, description);
|
|
470
471
|
|
|
471
472
|
assert.argumentIsRequired(display, 'display', String);
|
|
@@ -475,6 +476,7 @@ module.exports = (() => {
|
|
|
475
476
|
assert.argumentIsRequired(opening, 'opening', Boolean);
|
|
476
477
|
assert.argumentIsRequired(closing, 'closing', Boolean);
|
|
477
478
|
assert.argumentIsRequired(fee, 'fee', Boolean);
|
|
479
|
+
assert.argumentIsRequired(corporateAction, 'corporateAction', Boolean);
|
|
478
480
|
|
|
479
481
|
this._display = display;
|
|
480
482
|
this._purchase = purchase;
|
|
@@ -483,6 +485,7 @@ module.exports = (() => {
|
|
|
483
485
|
this._opening = opening;
|
|
484
486
|
this._closing = closing;
|
|
485
487
|
this._fee = fee;
|
|
488
|
+
this._corporateAction = corporateAction;
|
|
486
489
|
}
|
|
487
490
|
|
|
488
491
|
/**
|
|
@@ -568,6 +571,16 @@ module.exports = (() => {
|
|
|
568
571
|
return this._fee;
|
|
569
572
|
}
|
|
570
573
|
|
|
574
|
+
/**
|
|
575
|
+
* Indicates if the transaction is a corporate action.
|
|
576
|
+
*
|
|
577
|
+
* @public
|
|
578
|
+
* @returns {Boolean}
|
|
579
|
+
*/
|
|
580
|
+
get corporateAction() {
|
|
581
|
+
return this._corporateAction;
|
|
582
|
+
}
|
|
583
|
+
|
|
571
584
|
/**
|
|
572
585
|
* A purchase.
|
|
573
586
|
*
|
|
@@ -771,27 +784,27 @@ module.exports = (() => {
|
|
|
771
784
|
}
|
|
772
785
|
}
|
|
773
786
|
|
|
774
|
-
const buy = new TransactionType('B', 'Buy', 'Buy', true, false, false, true, false, false);
|
|
775
|
-
const sell = new TransactionType('S', 'Sell', 'Sell', false, true, false, false, true, false);
|
|
776
|
-
const buyShort = new TransactionType('BS', 'Buy To Cover', 'Buy To Cover', true, false, false, false, true, false);
|
|
777
|
-
const sellShort = new TransactionType('SS', 'Sell Short', 'Sell Short', false, true, false, true, false, false);
|
|
778
|
-
const dividend = new TransactionType('DV', 'Dividend', 'Dividend', false, false, true, false, false, false);
|
|
779
|
-
const dividendReinvest = new TransactionType('DX', 'Dividend (Reinvested)', 'Dividend Reinvest', false, false, false, true, false, false);
|
|
780
|
-
const dividendStock = new TransactionType('DS', 'Dividend (Stock)', 'Dividend Stock', false, false, false, true, false, false);
|
|
781
|
-
const split = new TransactionType('SP', 'Split', 'Split', false, false, false, true, false, false);
|
|
782
|
-
const fee = new TransactionType('F', 'Fee', 'Fee', false, false, false, false, false, true);
|
|
783
|
-
const feeUnits = new TransactionType('FU', 'Fee Units', 'Fee', false, false, false, false, true, false);
|
|
787
|
+
const buy = new TransactionType('B', 'Buy', 'Buy', true, false, false, true, false, false, false);
|
|
788
|
+
const sell = new TransactionType('S', 'Sell', 'Sell', false, true, false, false, true, false, false);
|
|
789
|
+
const buyShort = new TransactionType('BS', 'Buy To Cover', 'Buy To Cover', true, false, false, false, true, false, false);
|
|
790
|
+
const sellShort = new TransactionType('SS', 'Sell Short', 'Sell Short', false, true, false, true, false, false, false);
|
|
791
|
+
const dividend = new TransactionType('DV', 'Dividend', 'Dividend', false, false, true, false, false, false, true);
|
|
792
|
+
const dividendReinvest = new TransactionType('DX', 'Dividend (Reinvested)', 'Dividend Reinvest', false, false, false, true, false, false, true);
|
|
793
|
+
const dividendStock = new TransactionType('DS', 'Dividend (Stock)', 'Dividend Stock', false, false, false, true, false, false, true);
|
|
794
|
+
const split = new TransactionType('SP', 'Split', 'Split', false, false, false, true, false, false, true);
|
|
795
|
+
const fee = new TransactionType('F', 'Fee', 'Fee', false, false, false, false, false, true, false);
|
|
796
|
+
const feeUnits = new TransactionType('FU', 'Fee Units', 'Fee', false, false, false, false, true, false, false);
|
|
784
797
|
|
|
785
|
-
const distributionCash = new TransactionType('DC', 'Distribution (Cash)', 'Cash Distribution', false, false, true, false, false, false);
|
|
786
|
-
const distributionFund = new TransactionType('DF', 'Distribution (Units)', 'Unit Distribution', false, false, false, true, false, false);
|
|
798
|
+
const distributionCash = new TransactionType('DC', 'Distribution (Cash)', 'Cash Distribution', false, false, true, false, false, false, true);
|
|
799
|
+
const distributionFund = new TransactionType('DF', 'Distribution (Units)', 'Unit Distribution', false, false, false, true, false, false, true);
|
|
787
800
|
|
|
788
|
-
const deposit = new TransactionType('D', 'Deposit', 'Deposit', false, false, false, false, false, false);
|
|
789
|
-
const withdrawal = new TransactionType('W', 'Withdrawal', 'Withdrawal', false, false, false, false, false, false);
|
|
790
|
-
const debit = new TransactionType('DR', 'Debit', 'Debit', false, false, false, false, false, false);
|
|
791
|
-
const credit = new TransactionType('CR', 'Credit', 'Credit', false, false, false, false, false, false);
|
|
801
|
+
const deposit = new TransactionType('D', 'Deposit', 'Deposit', false, false, false, false, false, false, false);
|
|
802
|
+
const withdrawal = new TransactionType('W', 'Withdrawal', 'Withdrawal', false, false, false, false, false, false, false);
|
|
803
|
+
const debit = new TransactionType('DR', 'Debit', 'Debit', false, false, false, false, false, false, false);
|
|
804
|
+
const credit = new TransactionType('CR', 'Credit', 'Credit', false, false, false, false, false, false, false);
|
|
792
805
|
|
|
793
|
-
const valuation = new TransactionType('V', 'Valuation', 'Valuation', false, false, false, false, false, false);
|
|
794
|
-
const income = new TransactionType('I', 'Income', 'Income', false, false, true, false, false, false);
|
|
806
|
+
const valuation = new TransactionType('V', 'Valuation', 'Valuation', false, false, false, false, false, false, false);
|
|
807
|
+
const income = new TransactionType('I', 'Income', 'Income', false, false, true, false, false, false, false);
|
|
795
808
|
|
|
796
809
|
return TransactionType;
|
|
797
810
|
})();
|
|
@@ -2355,7 +2368,15 @@ module.exports = (() => {
|
|
|
2355
2368
|
|
|
2356
2369
|
function formatPercent(decimal, precision, plus) {
|
|
2357
2370
|
if (decimal !== null) {
|
|
2358
|
-
|
|
2371
|
+
let prefix;
|
|
2372
|
+
|
|
2373
|
+
if (is.boolean(plus) && plus && !Decimal.getIsNegative(decimal)) {
|
|
2374
|
+
prefix = '+';
|
|
2375
|
+
} else {
|
|
2376
|
+
prefix = '';
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
return `${prefix}${formatDecimal(decimal.multiply(100), precision)}%`;
|
|
2359
2380
|
} else {
|
|
2360
2381
|
return '—';
|
|
2361
2382
|
}
|
|
@@ -2426,7 +2447,7 @@ module.exports = (() => {
|
|
|
2426
2447
|
actual.cashTotal = updates.cashTotal;
|
|
2427
2448
|
|
|
2428
2449
|
format.basis = formatCurrency(actual.basis, currency);
|
|
2429
|
-
format.realized = formatCurrency(actual.
|
|
2450
|
+
format.realized = formatCurrency(actual.realized, currency);
|
|
2430
2451
|
format.unrealized = formatCurrency(actual.unrealized, currency);
|
|
2431
2452
|
format.income = formatCurrency(actual.income, currency);
|
|
2432
2453
|
format.summaryTotalCurrent = formatCurrency(updates.summaryTotalCurrent, currency);
|