Comparing version 2.0.2 to 2.0.3
@@ -9,2 +9,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
}; | ||
import Decimal from 'decimal.js'; | ||
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; | ||
@@ -42,3 +43,3 @@ export class DeLorean { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const position = this._position += distance; | ||
const position = new Decimal(this._position).plus(distance).toNumber(); | ||
while (this._definitions.length > 0 && this._definitions[0].position <= position) { | ||
@@ -45,0 +46,0 @@ // TypeScript needs to be convinced that the definition is not undefined. |
@@ -9,2 +9,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
}; | ||
import Decimal from 'decimal.js'; | ||
export class Platoon { | ||
@@ -28,10 +29,16 @@ constructor(...vehicles) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
let distanceAsDecimal = new Decimal(distance); | ||
do { | ||
const distanceToNextStopover = this._vehicles | ||
.reduce((distance, { deLorean, scale }) => { | ||
return Math.min((deLorean.nextStopover - deLorean.position) / scale, distance); | ||
}, distance); | ||
yield Promise.all(this._vehicles.map(({ deLorean, scale }) => deLorean.travel(distanceToNextStopover * scale))); | ||
distance -= distanceToNextStopover; | ||
} while (distance > 0); | ||
.reduce((distanceAsDecimal, { deLorean, scale }) => { | ||
const nextStopoverAsDecimal = new Decimal(deLorean.nextStopover); | ||
return Decimal.min(nextStopoverAsDecimal | ||
.minus(deLorean.position) | ||
.dividedBy(scale), distanceAsDecimal); | ||
}, distanceAsDecimal); | ||
yield Promise.all(this._vehicles.map(({ deLorean, scale }) => { | ||
return deLorean.travel(distanceToNextStopover.times(scale).toNumber()); | ||
})); | ||
distanceAsDecimal = distanceAsDecimal.minus(distanceToNextStopover); | ||
} while (distanceAsDecimal.greaterThan(0)); | ||
}); | ||
@@ -38,0 +45,0 @@ } |
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('babel-runtime/regenerator'), require('babel-runtime/helpers/classCallCheck'), require('babel-runtime/helpers/createClass'), require('babel-runtime/core-js/number/max-safe-integer'), require('babel-runtime/core-js/promise')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'babel-runtime/regenerator', 'babel-runtime/helpers/classCallCheck', 'babel-runtime/helpers/createClass', 'babel-runtime/core-js/number/max-safe-integer', 'babel-runtime/core-js/promise'], factory) : | ||
(factory((global.vehicles = global.vehicles || {}),global._regeneratorRuntime,global._classCallCheck,global._createClass,global._Number$MAX_SAFE_INTEGER,global._Promise)); | ||
}(this, (function (exports,_regeneratorRuntime,_classCallCheck,_createClass,_Number$MAX_SAFE_INTEGER,_Promise) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('babel-runtime/regenerator'), require('babel-runtime/helpers/classCallCheck'), require('babel-runtime/helpers/createClass'), require('babel-runtime/core-js/number/max-safe-integer'), require('babel-runtime/core-js/promise'), require('decimal.js')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'babel-runtime/regenerator', 'babel-runtime/helpers/classCallCheck', 'babel-runtime/helpers/createClass', 'babel-runtime/core-js/number/max-safe-integer', 'babel-runtime/core-js/promise', 'decimal.js'], factory) : | ||
(factory((global.vehicles = global.vehicles || {}),global._regeneratorRuntime,global._classCallCheck,global._createClass,global._Number$MAX_SAFE_INTEGER,global._Promise,global.Decimal)); | ||
}(this, (function (exports,_regeneratorRuntime,_classCallCheck,_createClass,_Number$MAX_SAFE_INTEGER,_Promise,Decimal) { 'use strict'; | ||
@@ -12,2 +12,3 @@ _regeneratorRuntime = 'default' in _regeneratorRuntime ? _regeneratorRuntime['default'] : _regeneratorRuntime; | ||
_Promise = 'default' in _Promise ? _Promise['default'] : _Promise; | ||
Decimal = 'default' in Decimal ? Decimal['default'] : Decimal; | ||
@@ -85,3 +86,3 @@ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { | ||
case 0: | ||
position = this._position += distance; | ||
position = new Decimal(this._position).plus(distance).toNumber(); | ||
@@ -213,3 +214,3 @@ case 1: | ||
var _loop; | ||
var distanceAsDecimal, _loop; | ||
@@ -220,2 +221,3 @@ return _regeneratorRuntime.wrap(function _callee$(_context2) { | ||
case 0: | ||
distanceAsDecimal = new Decimal(distance); | ||
_loop = _regeneratorRuntime.mark(function _loop() { | ||
@@ -227,8 +229,9 @@ var distanceToNextStopover; | ||
case 0: | ||
distanceToNextStopover = _this._vehicles.reduce(function (distance, _ref3) { | ||
distanceToNextStopover = _this._vehicles.reduce(function (distanceAsDecimal, _ref3) { | ||
var deLorean = _ref3.deLorean, | ||
scale = _ref3.scale; | ||
return Math.min((deLorean.nextStopover - deLorean.position) / scale, distance); | ||
}, distance); | ||
var nextStopoverAsDecimal = new Decimal(deLorean.nextStopover); | ||
return Decimal.min(nextStopoverAsDecimal.minus(deLorean.position).dividedBy(scale), distanceAsDecimal); | ||
}, distanceAsDecimal); | ||
_context.next = 3; | ||
@@ -238,7 +241,8 @@ return _Promise.all(_this._vehicles.map(function (_ref4) { | ||
scale = _ref4.scale; | ||
return deLorean.travel(distanceToNextStopover * scale); | ||
return deLorean.travel(distanceToNextStopover.times(scale).toNumber()); | ||
})); | ||
case 3: | ||
distance -= distanceToNextStopover; | ||
distanceAsDecimal = distanceAsDecimal.minus(distanceToNextStopover); | ||
@@ -253,12 +257,12 @@ case 4: | ||
case 1: | ||
return _context2.delegateYield(_loop(), "t0", 2); | ||
case 2: | ||
return _context2.delegateYield(_loop(), "t0", 3); | ||
case 2: | ||
if (distance > 0) { | ||
_context2.next = 1; | ||
case 3: | ||
if (distanceAsDecimal.greaterThan(0)) { | ||
_context2.next = 2; | ||
break; | ||
} | ||
case 3: | ||
case 4: | ||
case "end": | ||
@@ -265,0 +269,0 @@ return _context2.stop(); |
@@ -36,2 +36,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
}; | ||
import Decimal from 'decimal.js'; | ||
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; | ||
@@ -84,3 +85,3 @@ var DeLorean = (function () { | ||
case 0: | ||
position = this._position += distance; | ||
position = new Decimal(this._position).plus(distance).toNumber(); | ||
_b.label = 1; | ||
@@ -87,0 +88,0 @@ case 1: |
@@ -36,2 +36,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
}; | ||
import Decimal from 'decimal.js'; | ||
var Platoon = (function () { | ||
@@ -65,6 +66,7 @@ function Platoon() { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var _loop_1, this_1; | ||
var distanceAsDecimal, _loop_1, this_1; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
distanceAsDecimal = new Decimal(distance); | ||
_loop_1 = function () { | ||
@@ -76,13 +78,16 @@ var distanceToNextStopover; | ||
distanceToNextStopover = this_1._vehicles | ||
.reduce(function (distance, _a) { | ||
.reduce(function (distanceAsDecimal, _a) { | ||
var deLorean = _a.deLorean, scale = _a.scale; | ||
return Math.min((deLorean.nextStopover - deLorean.position) / scale, distance); | ||
}, distance); | ||
var nextStopoverAsDecimal = new Decimal(deLorean.nextStopover); | ||
return Decimal.min(nextStopoverAsDecimal | ||
.minus(deLorean.position) | ||
.dividedBy(scale), distanceAsDecimal); | ||
}, distanceAsDecimal); | ||
return [4 /*yield*/, Promise.all(this_1._vehicles.map(function (_a) { | ||
var deLorean = _a.deLorean, scale = _a.scale; | ||
return deLorean.travel(distanceToNextStopover * scale); | ||
return deLorean.travel(distanceToNextStopover.times(scale).toNumber()); | ||
}))]; | ||
case 1: | ||
_a.sent(); | ||
distance -= distanceToNextStopover; | ||
distanceAsDecimal = distanceAsDecimal.minus(distanceToNextStopover); | ||
return [2 /*return*/]; | ||
@@ -99,3 +104,3 @@ } | ||
case 3: | ||
if (distance > 0) return [3 /*break*/, 1]; | ||
if (distanceAsDecimal.greaterThan(0)) return [3 /*break*/, 1]; | ||
_a.label = 4; | ||
@@ -102,0 +107,0 @@ case 4: return [2 /*return*/]; |
@@ -6,2 +6,10 @@ "use strict"; | ||
}); | ||
exports.DeLorean = undefined; | ||
var _decimal = require("decimal.js"); | ||
var _decimal2 = _interopRequireDefault(_decimal); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { | ||
@@ -31,2 +39,3 @@ return new (P || (P = Promise))(function (resolve, reject) { | ||
}; | ||
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; | ||
@@ -64,3 +73,3 @@ class DeLorean { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const position = this._position += distance; | ||
const position = new _decimal2.default(this._position).plus(distance).toNumber(); | ||
while (this._definitions.length > 0 && this._definitions[0].position <= position) { | ||
@@ -67,0 +76,0 @@ // TypeScript needs to be convinced that the definition is not undefined. |
@@ -6,2 +6,10 @@ "use strict"; | ||
}); | ||
exports.Platoon = undefined; | ||
var _decimal = require("decimal.js"); | ||
var _decimal2 = _interopRequireDefault(_decimal); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { | ||
@@ -49,9 +57,13 @@ return new (P || (P = Promise))(function (resolve, reject) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
let distanceAsDecimal = new _decimal2.default(distance); | ||
do { | ||
const distanceToNextStopover = this._vehicles.reduce((distance, { deLorean, scale }) => { | ||
return Math.min((deLorean.nextStopover - deLorean.position) / scale, distance); | ||
}, distance); | ||
yield Promise.all(this._vehicles.map(({ deLorean, scale }) => deLorean.travel(distanceToNextStopover * scale))); | ||
distance -= distanceToNextStopover; | ||
} while (distance > 0); | ||
const distanceToNextStopover = this._vehicles.reduce((distanceAsDecimal, { deLorean, scale }) => { | ||
const nextStopoverAsDecimal = new _decimal2.default(deLorean.nextStopover); | ||
return _decimal2.default.min(nextStopoverAsDecimal.minus(deLorean.position).dividedBy(scale), distanceAsDecimal); | ||
}, distanceAsDecimal); | ||
yield Promise.all(this._vehicles.map(({ deLorean, scale }) => { | ||
return deLorean.travel(distanceToNextStopover.times(scale).toNumber()); | ||
})); | ||
distanceAsDecimal = distanceAsDecimal.minus(distanceToNextStopover); | ||
} while (distanceAsDecimal.greaterThan(0)); | ||
}); | ||
@@ -58,0 +70,0 @@ } |
@@ -9,2 +9,3 @@ { | ||
"devDependencies": { | ||
"@types/decimal.js": "0.0.30", | ||
"@types/sinon": "^2.3.1", | ||
@@ -79,6 +80,7 @@ "babel-plugin-transform-runtime": "^6.23.0", | ||
"types": "build/es2015/module.d.ts", | ||
"version": "2.0.2", | ||
"version": "2.0.3", | ||
"dependencies": { | ||
"babel-runtime": "^6.23.0" | ||
"babel-runtime": "^6.23.0", | ||
"decimal.js": "^7.2.1" | ||
} | ||
} |
@@ -0,1 +1,2 @@ | ||
import Decimal from 'decimal.js'; | ||
import { IDefinition, IVehicle } from './interfaces'; | ||
@@ -52,3 +53,3 @@ | ||
public async travel (distance: number) { | ||
const position = this._position += distance; | ||
const position = new Decimal(this._position).plus(distance).toNumber(); | ||
@@ -55,0 +56,0 @@ while (this._definitions.length > 0 && this._definitions[0].position <= position) { |
@@ -0,1 +1,2 @@ | ||
import Decimal from 'decimal.js'; | ||
import { DeLorean } from './de-lorean'; | ||
@@ -29,14 +30,25 @@ import { IVehicle } from './interfaces'; | ||
public async travel (distance: number) { | ||
let distanceAsDecimal = new Decimal(distance); | ||
do { | ||
const distanceToNextStopover = this._vehicles | ||
.reduce((distance, { deLorean, scale }) => { | ||
return Math.min((deLorean.nextStopover - deLorean.position) / scale, distance); | ||
}, distance); | ||
.reduce((distanceAsDecimal, { deLorean, scale }) => { | ||
const nextStopoverAsDecimal = new Decimal(deLorean.nextStopover); | ||
await Promise.all(this._vehicles.map(({ deLorean, scale }) => deLorean.travel(distanceToNextStopover * scale))); | ||
return Decimal.min( | ||
nextStopoverAsDecimal | ||
.minus(deLorean.position) | ||
.dividedBy(scale), | ||
distanceAsDecimal | ||
); | ||
}, distanceAsDecimal); | ||
distance -= distanceToNextStopover; | ||
} while (distance > 0) | ||
await Promise.all(this._vehicles.map(({ deLorean, scale }) => { | ||
return deLorean.travel(distanceToNextStopover.times(scale).toNumber()); | ||
})); | ||
distanceAsDecimal = distanceAsDecimal.minus(distanceToNextStopover); | ||
} while (distanceAsDecimal.greaterThan(0)) | ||
} | ||
} |
{ | ||
"extends": "../node_modules/tsconfig-holy-grail/src/tsconfig-universal" | ||
"extends": "../node_modules/tsconfig-holy-grail/src/tsconfig-universal", | ||
"types": [ | ||
"decimal.js" | ||
] | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
52933
912
2
39
+ Addeddecimal.js@^7.2.1
+ Addeddecimal.js@7.5.1(transitive)