Added new indexes
MODIFY
package-lock.json
package-lock.json
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"archy": {
"version": "1.0.0",
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
"arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz",
"integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg=="
},
+ "bson-ext": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-2.0.5.tgz",
+ "integrity": "sha512-N88i6ikegUf/DeIZ2qziWPLeNjXG0pr+a5vMZdC+ZjQAYdLELP2ReWO0GE4FEApoZmtO574QRInHQUTvXmux6Q==",
+ "requires": {
+ "bindings": "^1.3.0",
+ "bson": "^2.0.2",
+ "nan": "^2.14.0",
+ "prebuild-install": "5.3.0"
+ },
+ "dependencies": {
+ "bson": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-2.0.8.tgz",
+ "integrity": "sha512-0F0T3gHeOwJzHWcN60BZomqj5hCBDRk4b3fANuruvDTnyJJ8sggABKSaePM2F34THNZZSIlB2P1mk2nQWgBr9w=="
+ },
+ "nan": {
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
+ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
+ }
+ }
+ },
"buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
"ieee754": "^1.1.4"
}
},
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
"buffer-equal": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+ },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"chownr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
- "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
- "dev": true
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
},
"chrome-trace-event": {
"version": "1.0.2",
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"collection-visit": {
"version": "1.0.0",
"date-now": "^0.1.4"
}
},
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
"denque": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ },
"detective": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
}
}
},
+ "expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
+ },
"expand-tilde": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"filelist": {
"version": "1.0.1",
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
},
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
"gaxios": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz",
"assert-plus": "^1.0.0"
}
},
+ "github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
+ },
"giturl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz",
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"has-value": {
"version": "1.0.0",
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
"inline-source-map": {
"version": "0.6.2",
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"minipass": {
"version": "3.1.3",
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
"integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
- "dev": true,
"requires": {
"minimist": "^1.2.5"
}
"to-regex": "^3.0.1"
}
},
+ "napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"lower-case": "^1.1.1"
}
},
+ "node-abi": {
+ "version": "2.19.1",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.1.tgz",
+ "integrity": "sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A==",
+ "requires": {
+ "semver": "^5.4.1"
+ }
+ },
"node-cron": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-2.0.3.tgz",
"integrity": "sha1-/r+sy0vSc2eEc6MJxstLSi88SOM=",
"dev": true
},
+ "noop-logger": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
+ "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
+ },
"normalize-html-whitespace": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-0.2.0.tgz",
"path-key": "^2.0.0"
}
},
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"nyc": {
"version": "15.1.0",
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
"os-locale": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
"dev": true
},
+ "prebuild-install": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.0.tgz",
+ "integrity": "sha512-aaLVANlj4HgZweKttFNUVNRxDukytuIuxeK2boIMHjagNJCiVKWFsKF4tCE3ql3GbrD2tExPQ7/pwtEJcHNZeg==",
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^2.7.0",
+ "noop-logger": "^0.1.1",
+ "npmlog": "^4.0.1",
+ "os-homedir": "^1.0.1",
+ "pump": "^2.0.1",
+ "rc": "^1.2.7",
+ "simple-get": "^2.7.0",
+ "tar-fs": "^1.13.0",
+ "tunnel-agent": "^0.6.0",
+ "which-pm-runs": "^1.0.0"
+ },
+ "dependencies": {
+ "bl": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+ "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "simple-get": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
+ "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
+ "requires": {
+ "decompress-response": "^3.3.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "tar-fs": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
+ "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+ "requires": {
+ "chownr": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^1.0.0",
+ "tar-stream": "^1.1.2"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+ "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "requires": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.2.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.1",
+ "xtend": "^4.0.0"
+ }
+ }
+ }
+ },
"preferred-pm": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
},
"simple-get": {
"version": "4.0.0",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"stripe": {
"version": "7.15.0",
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
+ "to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+ },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"path-exists": "^3.0.0"
}
},
+ "which-pm-runs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
+ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs="
+ },
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
},
"y18n": {
"version": "4.0.0",

MODIFY
package.json
package.json
"bluebird": "^3.7.2",
"body-parser": "^1.19.0",
"body-parser-xml": "^2.0.0",
+ "bson-ext": "^2.0.5",
"cf-nodejs-logging-support": "^6.5.3",
"cfenv": "^1.2.3",
"cors": "^2.8.5",

MODIFY
src/server/rest/v1/service/TransactionService.ts
src/server/rest/v1/service/TransactionService.ts
@@ -44,10 +44,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.UPDATE,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleSynchronizeRefundedTransactions'
+ action: Action.UPDATE, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleSynchronizeRefundedTransactions'
});
}
@@ -74,8 +72,7 @@ export default class TransactionService {
source: Constants.CENTRAL_SERVER,
errorCode: HTTPError.GENERAL_ERROR,
message: 'Transaction IDs must be provided',
- module: MODULE_NAME,
- method: 'handleRefundTransactions',
+ module: MODULE_NAME, method: 'handleRefundTransactions',
user: req.user,
action: action
});
@@ -110,10 +107,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.REFUND_TRANSACTION,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleRefundTransactions',
+ action: Action.REFUND_TRANSACTION, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleRefundTransactions',
value: transaction.id.toString()
});
}
@@ -129,10 +124,8 @@ export default class TransactionService {
source: Constants.CENTRAL_SERVER,
errorCode: HTTPError.GENERAL_ERROR,
message: 'No Refund Implementation Found',
- module: MODULE_NAME,
- method: 'handleRefundTransactions',
- user: req.user,
- action: action
+ module: MODULE_NAME, method: 'handleRefundTransactions',
+ user: req.user, action: action
});
}
const refundedTransactions = await refundConnector.refund(req.user.tenantID, user.id, transactionsToRefund);
@@ -179,8 +172,7 @@ export default class TransactionService {
errorCode: HTTPError.TRANSACTION_NOT_FROM_TENANT,
message: `The transaction ID '${transaction.id}' belongs to an external organization`,
module: MODULE_NAME, method: 'handlePushTransactionCdr',
- user: req.user,
- action: action
+ user: req.user, action: action
});
}
// Check OCPI
@@ -190,8 +182,7 @@ export default class TransactionService {
errorCode: HTTPError.TRANSACTION_WITH_NO_OCPI_DATA,
message: `The transaction ID '${transaction.id}' has no OCPI data`,
module: MODULE_NAME, method: 'handlePushTransactionCdr',
- user: req.user,
- action: action
+ user: req.user, action: action
});
}
// CDR already pushed
@@ -201,8 +192,7 @@ export default class TransactionService {
errorCode: HTTPError.TRANSACTION_CDR_ALREADY_PUSHED,
message: `The CDR of the transaction ID '${transaction.id}' has already been pushed`,
module: MODULE_NAME, method: 'handlePushTransactionCdr',
- user: req.user,
- action: action
+ user: req.user, action: action
});
}
// Post CDR
@@ -228,10 +218,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.UPDATE,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleGetUnassignedTransactionsCount'
+ action: Action.UPDATE, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleGetUnassignedTransactionsCount'
});
}
// Filter
@@ -286,10 +274,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.UPDATE,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleAssignTransactionsToUser'
+ action: Action.UPDATE, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleAssignTransactionsToUser'
});
}
// Filter
@@ -327,8 +313,7 @@ export default class TransactionService {
errorCode: HTTPError.GENERAL_ERROR,
message: 'User not issued by the organization',
module: MODULE_NAME, method: 'handleAssignTransactionsToUser',
- user: req.user,
- action: action
+ user: req.user, action: action
});
}
if (!tag.issuer) {
@@ -337,8 +322,7 @@ export default class TransactionService {
errorCode: HTTPError.GENERAL_ERROR,
message: 'Tag not issued by the organization',
module: MODULE_NAME, method: 'handleAssignTransactionsToUser',
- user: req.user,
- action: action
+ user: req.user, action: action
});
}
// Assign
@@ -378,8 +362,7 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.DELETE,
- entity: Entity.TRANSACTION,
+ action: Action.DELETE, entity: Entity.TRANSACTION,
module: MODULE_NAME, method: 'handleDeleteTransactions',
value: transactionsIds.toString()
});
@@ -400,10 +383,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.UPDATE,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleTransactionSoftStop',
+ action: Action.UPDATE, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleTransactionSoftStop',
value: transactionId.toString()
});
}
@@ -468,10 +449,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.READ,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleGetConsumptionFromTransaction',
+ action: Action.READ, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleGetConsumptionFromTransaction',
value: transaction.id.toString()
});
}
@@ -481,10 +460,8 @@ export default class TransactionService {
source: Constants.CENTRAL_SERVER,
errorCode: HTTPError.GENERAL_ERROR,
message: `The requested start date '${new Date(filteredRequest.StartDateTime).toISOString()}' is after the requested end date '${new Date(filteredRequest.StartDateTime).toISOString()}' `,
- module: MODULE_NAME,
- method: 'handleGetConsumptionFromTransaction',
- user: req.user,
- action: action
+ module: MODULE_NAME, method: 'handleGetConsumptionFromTransaction',
+ user: req.user, action: action
});
}
// Get the consumption
@@ -513,10 +490,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.READ,
- entity: Entity.TRANSACTION,
- module: MODULE_NAME,
- method: 'handleGetTransaction',
+ action: Action.READ, entity: Entity.TRANSACTION,
+ module: MODULE_NAME, method: 'handleGetTransaction',
value: filteredRequest.ID.toString()
});
}
@@ -534,10 +509,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.LIST,
- entity: Entity.TRANSACTIONS,
- module: MODULE_NAME,
- method: 'handleGetChargingStationTransactions'
+ action: Action.LIST, entity: Entity.TRANSACTIONS,
+ module: MODULE_NAME, method: 'handleGetChargingStationTransactions'
});
}
// Filter
@@ -603,10 +576,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.LIST,
- entity: Entity.TRANSACTIONS,
- module: MODULE_NAME,
- method: 'handleGetRefundReports'
+ action: Action.LIST, entity: Entity.TRANSACTIONS,
+ module: MODULE_NAME, method: 'handleGetRefundReports'
});
}
const filter: any = { stop: { $exists: true } };
@@ -656,10 +627,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.LIST,
- entity: Entity.TRANSACTIONS,
- module: MODULE_NAME,
- method: 'handleGetTransactionsInError'
+ action: Action.LIST, entity: Entity.TRANSACTIONS,
+ module: MODULE_NAME, method: 'handleGetTransactionsInError'
});
}
const filter: any = {};
@@ -719,7 +688,6 @@ export default class TransactionService {
}
public static convertToCSV(loggedUser: UserToken, transactions: Transaction[], writeHeader = true): string {
- const i18nManager = new I18nManager(loggedUser.locale);
let csv = '';
// Header
if (writeHeader) {
@@ -831,10 +799,8 @@ export default class TransactionService {
throw new AppAuthError({
errorCode: HTTPAuthError.ERROR,
user: req.user,
- action: Action.LIST,
- entity: Entity.TRANSACTIONS,
- module: MODULE_NAME,
- method: 'handleGetTransactionsToRefund'
+ action: Action.LIST, entity: Entity.TRANSACTIONS,
+ module: MODULE_NAME, method: 'handleGetTransactionsToRefund'
});
}
// Filter
@@ -861,7 +827,13 @@ export default class TransactionService {
connectorId: filteredRequest.ConnectorId ? filteredRequest.ConnectorId : null,
inactivityStatus: filteredRequest.InactivityStatus ? filteredRequest.InactivityStatus.split('|') : null,
},
- { limit: filteredRequest.Limit, skip: filteredRequest.Skip, sort: filteredRequest.Sort, onlyRecordCount: filteredRequest.OnlyRecordCount }
+ { limit: filteredRequest.Limit, skip: filteredRequest.Skip, sort: filteredRequest.Sort, onlyRecordCount: filteredRequest.OnlyRecordCount },
+ [
+ 'id', 'chargeBoxID', 'timestamp', 'issuer', 'stateOfCharge', 'tagID', 'timezone',
+ 'stop.price', 'stop.priceUnit', 'stop.inactivityStatus', 'stop.stateOfCharge', 'stop.timestamp', 'stop.totalConsumptionWh',
+ 'stop.totalDurationSecs', 'stop.totalInactivitySecs', 'stop.user.id', 'stop.user.name', 'stop.user.firstName', 'stop.user.email',
+ 'user.id', 'user.name', 'user.firstName', 'user.email', 'billingData.invoiceID', 'ocpiWithNoCdr'
+ ]
);
// Filter
TransactionSecurity.filterTransactionsResponse(transactions, req.user);

MODIFY
src/server/rest/v1/service/UserService.ts
src/server/rest/v1/service/UserService.ts
@@ -1413,7 +1413,9 @@ export default class UserService {
skip: filteredRequest.Skip,
sort: filteredRequest.Sort,
onlyRecordCount: filteredRequest.OnlyRecordCount
- }
+ },
+ ['id', 'name', 'firstName', 'email', 'role', 'status','issuer', 'billingData', 'createdOn', 'createdBy',
+ 'lastChangedOn', 'lastChangedBy', 'eulaAcceptedOn', 'eulaAcceptedVersion']
);
// Filter
UserSecurity.filterUsersResponse(users, req.user);

MODIFY
src/server/rest/v1/service/security/TransactionSecurity.ts
src/server/rest/v1/service/security/TransactionSecurity.ts
@@ -143,6 +143,7 @@ export default class TransactionSecurity {
filteredTransaction.issuer = transaction.issuer;
filteredTransaction.connectorId = transaction.connectorId;
filteredTransaction.meterStart = transaction.meterStart;
+ filteredTransaction.ocpiWithNoCdr = transaction.ocpiWithNoCdr;
filteredTransaction.timestamp = transaction.timestamp;
filteredTransaction.timezone = transaction.timezone;
if (Utils.objectHasProperty(transaction, 'price')) {

MODIFY
src/storage/mongodb/MongoDBStorage.ts
src/storage/mongodb/MongoDBStorage.ts
@@ -64,6 +64,8 @@ export default class MongoDBStorage {
});
// Users
await this.handleIndexesInCollection(tenantID, 'users', [
+ { fields: { deleted: 1, name: 1 } },
+ { fields: { issuer: 1, name: 1 } },
{ fields: { email: 1 }, options: { unique: true } },
{ fields: { 'address.coordinates': '2dsphere' } },
]);
@@ -96,6 +98,8 @@ export default class MongoDBStorage {
]);
// Tags
await this.handleIndexesInCollection(tenantID, 'tags', [
+ { fields: { deleted: 1, createdOn: 1 } },
+ { fields: { issuer: 1, createdOn: 1 } },
{ fields: { userID: 1 } }
]);
// Sites/Users
@@ -117,7 +121,7 @@ export default class MongoDBStorage {
]);
// Transactions
await this.handleIndexesInCollection(tenantID, 'transactions', [
- { fields: { timestamp: 1 } },
+ { fields: { issuer: 1, timestamp: 1 } },
{ fields: { chargeBoxID: 1 } },
{ fields: { tagID: 1 } },
{ fields: { userID: 1 } }

MODIFY
src/storage/mongodb/TransactionStorage.ts
src/storage/mongodb/TransactionStorage.ts
@@ -550,6 +550,18 @@ export default class TransactionStorage {
aggregation.push({
$limit: dbParams.limit
});
+ // Add OCPI CDR exists
+ aggregation.push({
+ $addFields: {
+ ocpiWithNoCdr: {
+ $cond: {
+ if: { $and: [ { $gt: ['$ocpiData', null] }, { $not: { $gt: ['$ocpiData.cdr', null] } } ] },
+ then: true,
+ else: false
+ }
+ }
+ }
+ });
// Charge Box
DatabaseUtils.pushChargingStationLookupInAggregation({
tenantID, aggregation: aggregation, localField: 'chargeBoxID', foreignField: '_id',
@@ -990,9 +1002,6 @@ export default class TransactionStorage {
DatabaseUtils.clearFieldValueIfSubFieldIsNull(aggregation, 'stop', 'timestamp');
DatabaseUtils.clearFieldValueIfSubFieldIsNull(aggregation, 'remotestop', 'timestamp');
// Read DB
- console.log('====================================');
- console.log(JSON.stringify(aggregation, null, ' '));
- console.log('====================================');
const transactionsMDB = await global.database.getCollection<Transaction>(tenantID, 'transactions')
.aggregate(aggregation, { allowDiskUse: true })
.toArray();

MODIFY
src/types/Transaction.ts
src/types/Transaction.ts
@@ -70,6 +70,7 @@ export default interface Transaction extends AbstractCurrentConsumption {
uniqueId?: string;
values?: TransactionConsumption[];
billingData?: BillingTransactionData;
+ ocpiWithNoCdr?: boolean;
ocpiData?: {
session?: OCPISession;
cdr?: OCPICdr;

MODIFY
src/utils/Constants.ts
src/utils/Constants.ts
@@ -7,8 +7,8 @@ import Tenant from '../types/Tenant';
export default class Constants {
public static readonly CSV_SEPARATOR = '\t'; // Cannot store regex in enum
- public static readonly PERF_MAX_DATA_VOLUME_KB = 16;
- public static readonly PERF_MAX_RESPONSE_TIME_MILLIS = 250;
+ public static readonly PERF_MAX_DATA_VOLUME_KB = 64;
+ public static readonly PERF_MAX_RESPONSE_TIME_MILLIS = 500;
public static readonly AXIOS_DEFAULT_TIMEOUT = 60000;

Added new indexes