@plandek-utils/time-utils
Advanced tools
Comparing version 1.1.1 to 2.0.0
@@ -1,2 +0,1 @@ | ||
import { Dayjs } from "dayjs"; | ||
/** | ||
@@ -25,3 +24,3 @@ * Executes the given function, freezing the time first to the given `time`, and resetting the function execution (uses `timekeeper`) | ||
*/ | ||
export declare function freezeTime<T>(time: Dayjs | Date, fn: () => T): T; | ||
export declare function freezeTime<T>(time: Date, fn: () => T): T; | ||
/** | ||
@@ -36,2 +35,2 @@ * same as `freezeTime()` but it expects an async function. It will await for the function's return and return it before resetting the time | ||
*/ | ||
export declare function freezeTimeAwait<T>(time: Dayjs | Date, fn: () => Promise<T>): Promise<T>; | ||
export declare function freezeTimeAwait<T>(time: Date, fn: () => Promise<T>): Promise<T>; |
@@ -6,11 +6,4 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const dayjs_1 = require("dayjs"); | ||
const timekeeper_1 = __importDefault(require("timekeeper")); | ||
/** | ||
* @internal | ||
*/ | ||
function getDate(time) { | ||
return dayjs_1.isDayjs(time) ? time.toDate() : time; | ||
} | ||
/** | ||
* Executes the given function, freezing the time first to the given `time`, and resetting the function execution (uses `timekeeper`) | ||
@@ -39,6 +32,12 @@ * | ||
function freezeTime(time, fn) { | ||
timekeeper_1.default.freeze(getDate(time)); | ||
const result = fn(); | ||
timekeeper_1.default.reset(); | ||
return result; | ||
timekeeper_1.default.freeze(time); | ||
try { | ||
const result = fn(); | ||
timekeeper_1.default.reset(); | ||
return result; | ||
} | ||
catch (e) { | ||
timekeeper_1.default.reset(); | ||
throw e; | ||
} | ||
} | ||
@@ -56,8 +55,14 @@ exports.freezeTime = freezeTime; | ||
async function freezeTimeAwait(time, fn) { | ||
timekeeper_1.default.freeze(getDate(time)); | ||
const result = await fn(); | ||
timekeeper_1.default.reset(); | ||
return result; | ||
timekeeper_1.default.freeze(time); | ||
try { | ||
const result = await fn(); | ||
timekeeper_1.default.reset(); | ||
return result; | ||
} | ||
catch (e) { | ||
timekeeper_1.default.reset(); | ||
throw e; | ||
} | ||
} | ||
exports.freezeTimeAwait = freezeTimeAwait; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBdUM7QUFDdkMsNERBQW9DO0FBRXBDOztHQUVHO0FBQ0gsU0FBUyxPQUFPLENBQUMsSUFBa0I7SUFDakMsT0FBTyxlQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzlDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILFNBQWdCLFVBQVUsQ0FBSSxJQUFrQixFQUFFLEVBQVc7SUFDM0Qsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDcEIsb0JBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBTEQsZ0NBS0M7QUFFRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQUksSUFBa0IsRUFBRSxFQUFvQjtJQUMvRSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzFCLG9CQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUxELDBDQUtDIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0REFBb0M7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxTQUFnQixVQUFVLENBQUksSUFBVSxFQUFFLEVBQVc7SUFDbkQsb0JBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFeEIsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLG9CQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1Ysb0JBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsQ0FBQztLQUNUO0FBQ0gsQ0FBQztBQVhELGdDQVdDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFJLElBQVUsRUFBRSxFQUFvQjtJQUN2RSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUMxQixvQkFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLG9CQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUM7QUFYRCwwQ0FXQyJ9 |
@@ -1,2 +0,1 @@ | ||
import { Dayjs } from "dayjs"; | ||
/** | ||
@@ -25,3 +24,3 @@ * Executes the given function, freezing the time first to the given `time`, and resetting the function execution (uses `timekeeper`) | ||
*/ | ||
export declare function freezeTime<T>(time: Dayjs | Date, fn: () => T): T; | ||
export declare function freezeTime<T>(time: Date, fn: () => T): T; | ||
/** | ||
@@ -36,2 +35,2 @@ * same as `freezeTime()` but it expects an async function. It will await for the function's return and return it before resetting the time | ||
*/ | ||
export declare function freezeTimeAwait<T>(time: Dayjs | Date, fn: () => Promise<T>): Promise<T>; | ||
export declare function freezeTimeAwait<T>(time: Date, fn: () => Promise<T>): Promise<T>; |
@@ -1,10 +0,3 @@ | ||
import { isDayjs } from "dayjs"; | ||
import timekeeper from "timekeeper"; | ||
/** | ||
* @internal | ||
*/ | ||
function getDate(time) { | ||
return isDayjs(time) ? time.toDate() : time; | ||
} | ||
/** | ||
* Executes the given function, freezing the time first to the given `time`, and resetting the function execution (uses `timekeeper`) | ||
@@ -33,6 +26,12 @@ * | ||
export function freezeTime(time, fn) { | ||
timekeeper.freeze(getDate(time)); | ||
const result = fn(); | ||
timekeeper.reset(); | ||
return result; | ||
timekeeper.freeze(time); | ||
try { | ||
const result = fn(); | ||
timekeeper.reset(); | ||
return result; | ||
} | ||
catch (e) { | ||
timekeeper.reset(); | ||
throw e; | ||
} | ||
} | ||
@@ -49,7 +48,13 @@ /** | ||
export async function freezeTimeAwait(time, fn) { | ||
timekeeper.freeze(getDate(time)); | ||
const result = await fn(); | ||
timekeeper.reset(); | ||
return result; | ||
timekeeper.freeze(time); | ||
try { | ||
const result = await fn(); | ||
timekeeper.reset(); | ||
return result; | ||
} | ||
catch (e) { | ||
timekeeper.reset(); | ||
throw e; | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2QyxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFcEM7O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBQyxJQUFrQjtJQUNqQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBSSxJQUFrQixFQUFFLEVBQVc7SUFDM0QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNwQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUksSUFBa0IsRUFBRSxFQUFvQjtJQUMvRSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDMUIsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25CLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBRXBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBSSxJQUFVLEVBQUUsRUFBVztJQUNuRCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNwQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBSSxJQUFVLEVBQUUsRUFBb0I7SUFDdkUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUMxQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDIn0= |
@@ -5,2 +5,15 @@ # Changelog | ||
## [2.0.0](https://github.com/plandek-utils/ts-time-utils/compare/v1.1.1...v2.0.0) (2020-04-15) | ||
### ⚠ BREAKING CHANGES | ||
* In v1.x dayjs objects were supported. This ended up being problematic because of | ||
issues with dayjs versions. It also added a dependency that is not strictly needed. That's why from | ||
v2.x on dayjs is no longer supported and it is removed as a dependency | ||
### Features | ||
* drop dayjs support + ensure unfreeze time if errors ([807e4b5](https://github.com/plandek-utils/ts-time-utils/commit/807e4b515580c8f2cd9e6799b4eff5bc32413500)) | ||
### [1.1.1](https://github.com/plandek-utils/ts-time-utils/compare/v1.1.0...v1.1.1) (2020-04-14) | ||
@@ -7,0 +20,0 @@ |
{ | ||
"name": "@plandek-utils/time-utils", | ||
"version": "1.1.1", | ||
"version": "2.0.0", | ||
"author": "Eduardo Turiño <eturino@plandek.com>", | ||
@@ -54,3 +54,2 @@ "description": "small utils for managing Time, supported by Dayjs. It is intended to be used in tests.", | ||
"dependencies": { | ||
"dayjs": "^1.8.19", | ||
"timekeeper": "^2.2.0" | ||
@@ -74,3 +73,3 @@ }, | ||
"ts-jest": "^25.0.0", | ||
"ts-loader": "^6.0.4", | ||
"ts-loader": "^7.0.0", | ||
"ts-node": "^8.3.0", | ||
@@ -77,0 +76,0 @@ "tslint": "^6.1.1", |
@@ -12,3 +12,3 @@ # `@plandek-utils/time-utils` | ||
small utils for managing Time, supported by `Dayjs`. It is intended to be used in tests. | ||
small utils for managing Time. It is intended to be used in tests. | ||
@@ -21,4 +21,8 @@ ## Installation | ||
it requires [`timekeeper`](https://www.npmjs.com/package/timekeeper) and [`Dayjs`](https://www.npmjs.com/package/dayjs) | ||
it requires [`timekeeper`](https://www.npmjs.com/package/timekeeper) | ||
### V2 Drops dayjs support | ||
In v1.x dayjs objects were supported. This ended up being problematic because of issues with dayjs versions. It also added a dependency that is not strictly needed. That's why from v2.x on dayjs is no longer supported and it is removed as a dependency. | ||
## Usage | ||
@@ -25,0 +29,0 @@ |
21449
1
245
137
- Removeddayjs@^1.8.19
- Removeddayjs@1.11.11(transitive)