@barchart/portfolio-api-common 1.11.1 → 1.11.2

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.
@@ -168,6 +168,16 @@ module.exports = (() => {
168
168
  shares = '';
169
169
  }
170
170
 
171
+ if (shares) {
172
+ const rounded = shares.round(0);
173
+
174
+ if (rounded.subtract(shares).absolute().getIsLessThan(0.01)) {
175
+ shares = rounded;
176
+ } else {
177
+ shares = shares.round(2);
178
+ }
179
+ }
180
+
171
181
  f.shares = shares;
172
182
 
173
183
  if (t.dividend.currency) {
@@ -186,11 +196,27 @@ module.exports = (() => {
186
196
  let shares;
187
197
 
188
198
  if (!t.dividend.rate.getIsZero()) {
189
- shares = t.dividend.amount.divide(t.dividend.rate);
199
+ if (t.dividend.native) {
200
+ shares = t.dividend.native.divide(t.dividend.rate);
201
+ } else {
202
+ shares = t.dividend.amount.divide(t.dividend.rate);
203
+ }
190
204
  } else {
191
205
  shares = '';
192
206
  }
193
207
 
208
+ if (shares) {
209
+ const rounded = shares.round(0);
210
+
211
+ if (rounded.subtract(shares).absolute().getIsLessThan(0.01)) {
212
+ shares = rounded;
213
+ } else {
214
+ shares = shares.round(2);
215
+ }
216
+ }
217
+
218
+ f.shares = shares;
219
+
194
220
  if (t.dividend.currency) {
195
221
  f.currency = t.dividend.currency;
196
222
  }
@@ -198,8 +224,6 @@ module.exports = (() => {
198
224
  if (t.dividend.native) {
199
225
  f.native = t.dividend.native;
200
226
  }
201
-
202
- f.shares = shares;
203
227
  };
204
228
 
205
229
  const dividendReinvestFormatter = (t, f) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barchart/portfolio-api-common",
3
- "version": "1.11.1",
3
+ "version": "1.11.2",
4
4
  "description": "Common code used by the Portfolio system",
5
5
  "author": {
6
6
  "name": "Bryan Ingle",
package/.jshintrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "esversion": 9,
3
- "validthis": true,
4
- "-W018": true,
5
- "-W093": true
6
- }
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added a new `PortfolioFailureType` for negative quantity.
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added `native` and `currency` fields for dividends and distributions which paid in alternate currency (from underlying stock or fund).
@@ -1,3 +0,0 @@
1
- **Bug Fixes**
2
-
3
- * Fixed issue that caused the number of effective shares for a dividend to be calculated incorrectly.
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added new ```Schema``` for results of a query by symbol.
@@ -1,3 +0,0 @@
1
- **Configuration Changes**
2
-
3
- * The failure message for corrupt corporate actions (e.g. two instruments with same symbol) was updated to indicate an expected time to correction (of 24 to 48 hours).
@@ -1,4 +0,0 @@
1
- **Technical Enhancements**
2
-
3
- * Added a `transaction` field into `basicFormatter` function for the `TransactionFormatter` class.
4
- * Changed the way to add and remove a portfolio in `PositionContainer` to support reactive changes.
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added a new `PortfolioFailureType` for attempting to edit a transaction's type.
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added a new `PortfolioFailureType` for attempting to reinvest a dividend when the position is short.
@@ -1,3 +0,0 @@
1
- **New Features**
2
-
3
- * Added a new `PortfolioFailureType` for attempts to switch to dividend reinvestment when the position is short.
@@ -1,4 +0,0 @@
1
- **New Features**
2
-
3
- * Added `close` field to the `Sell` transaction schema.
4
- * Added `close` field to the `Buy Short` transaction schema.
@@ -1,4 +0,0 @@
1
- **Bug Fixes**
2
-
3
- * Made `quantity` field optional for the `Sell` transaction schema.
4
- * Made `quantity` field optional for the `Buy Short` transaction schema.
package/buildspec.yml DELETED
@@ -1,15 +0,0 @@
1
- version: 0.2
2
-
3
- phases:
4
- install:
5
- runtime-versions:
6
- nodejs: 12.x
7
-
8
- pre_build:
9
- commands:
10
- - npm install
11
-
12
- build:
13
- commands:
14
- - ./node_modules/.bin/gulp lint
15
- - ./node_modules/.bin/gulp test
package/gulpfile.js DELETED
@@ -1,122 +0,0 @@
1
- const gulp = require('gulp');
2
-
3
- const fs = require('fs');
4
-
5
- const browserify = require('browserify'),
6
- buffer = require('vinyl-buffer'),
7
- exec = require('child_process').exec,
8
- git = require('gulp-git'),
9
- gitStatus = require('git-get-status'),
10
- glob = require('glob'),
11
- jasmine = require('gulp-jasmine'),
12
- jshint = require('gulp-jshint'),
13
- prompt = require('gulp-prompt'),
14
- source = require('vinyl-source-stream');
15
-
16
- function getVersionFromPackage() {
17
- return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version;
18
- }
19
-
20
- gulp.task('ensure-clean-working-directory', (cb) => {
21
- gitStatus((err, status) => {
22
- if (err, !status.clean) {
23
- throw new Error('Unable to proceed, your working directory is not clean.');
24
- }
25
-
26
- cb();
27
- });
28
- });
29
-
30
- gulp.task('bump-choice', (cb) => {
31
- const processor = prompt.prompt({
32
- type: 'list',
33
- name: 'bump',
34
- message: 'What type of bump would you like to do?',
35
- choices: ['patch', 'minor', 'major'],
36
- }, (res) => {
37
- global.bump = res.bump;
38
-
39
- return cb();
40
- });
41
-
42
- return gulp.src(['./package.json']).pipe(processor);
43
- });
44
-
45
- gulp.task('bump-version', (cb) => {
46
- exec(`npm version ${global.bump || 'patch'} --no-git-tag-version`, {
47
- cwd: './'
48
- }, (error) => {
49
- if (error) {
50
- cb(error);
51
- }
52
-
53
- cb();
54
- });
55
- });
56
-
57
- gulp.task('commit-changes', () => {
58
- return gulp.src([ './', './test/', './package.json' ])
59
- .pipe(git.add())
60
- .pipe(git.commit('Release. Bump version number'));
61
- });
62
-
63
- gulp.task('push-changes', (cb) => {
64
- git.push('origin', 'master', cb);
65
- });
66
-
67
- gulp.task('create-tag', (cb) => {
68
- const version = getVersionFromPackage();
69
-
70
- git.tag(version, 'Release ' + version, (error) => {
71
- if (error) {
72
- return cb(error);
73
- }
74
-
75
- git.push('origin', 'master', { args: '--tags' }, cb);
76
- });
77
- });
78
-
79
- gulp.task('build-test-bundle', () => {
80
- return browserify({ entries: glob.sync('test/specs/**/*.js') })
81
- .bundle()
82
- .pipe(source('SpecRunner.js'))
83
- .pipe(buffer())
84
- .pipe(gulp.dest('test'));
85
- });
86
-
87
- gulp.task('execute-browser-tests', () => {
88
- return gulp.src('test/SpecRunner.js')
89
- .pipe(jasmine());
90
- });
91
-
92
- gulp.task('execute-node-tests', () => {
93
- return gulp.src(['test/specs/**/*.js'])
94
- .pipe(jasmine());
95
- });
96
-
97
- gulp.task('execute-tests', gulp.series(
98
- 'build-test-bundle',
99
- 'execute-browser-tests',
100
- 'execute-node-tests'
101
- ));
102
-
103
- gulp.task('release', gulp.series(
104
- 'ensure-clean-working-directory',
105
- 'execute-tests',
106
- 'bump-choice',
107
- 'bump-version',
108
- 'commit-changes',
109
- 'push-changes',
110
- 'create-tag'
111
- ));
112
-
113
- gulp.task('lint', () => {
114
- return gulp.src([ './**/*.js', './test/specs/**/*.js', '!./node_modules/**', '!./test/SpecRunner.js' ])
115
- .pipe(jshint({'esversion': 9}))
116
- .pipe(jshint.reporter('default'))
117
- .pipe(jshint.reporter('fail'));
118
- });
119
-
120
- gulp.task('test', gulp.series('execute-tests'));
121
-
122
- gulp.task('default', gulp.series('lint'));