Lewerow/Zurvan

View on GitHub
CHANGELOG

Summary

Maintainability
Test Coverage
0.8.0:
 - experimental TypeScript types
 - updated versions of dependency libraries
 - enabled coverage again

0.5.2:
 - added debugger (thanks to djmitche https://github.com/djmitche)

0.5.1:
 - update release - updated versions of dependency libraries, added codebeat code analysis
0.5.0:
 - added a configuration parameter - timerExpirationPolicy (#17) - to allow non-FIFO expiration of timers with same due time. Default value remains FIFO
 - configuration sanity is now verified (#25)
 - minor documentation fixes
 
0.4.1:
 - *BREAKING CHANGE* implemented #36 - withDefaultConfiguration called without parameters will reset configuration for new zurvan instance
 - *BREAKING CHANGE* fixed bug reported in sinonjs/lolex as #83 - require('timers') was not faked during timer interception
 - *BREAKING CHANGE* promises returned by queue management function are resolved or rejected with an array of failed callbacks
 - added a configuration parameter - rejectOnCallbackFailure - if any of callbacks passed to setTimeout/setImmediate/setInterval exited with an exception, time forwarding promise will be rejected
 - added a configuration parameter - fakeNodeDedicatedTimers - not to break the flow for the browsers
 - added a configuration parameter - denyTimersLongerThanInt32 - to throw if timer delay is longer than allowed in Node (2^31 - 1). #67 in lolex

0.4.0:
 - *BREAKING CHANGE* implemented #42 - sufficiently long chain of setImmediates will cause a rejection (configurable via maxSetImmediateBatchSize) - global state will be unknown after this exception
 - *BREAKING CHANGE* dropped support for Node below 4 - new releases will be tested on node >= 4
 - added a configuration parameter - requestedCyclesAroundSetImmediateQueue - in case you encoutered a weird scenario which is not handled by zurvan by default, you can increment it as a workaround (should work). Please, report such scenarios
 - added forcedReleaseTimers (#37) - note that it should not be used except for special cases (like after detection of infinite loop) and may leave global components in unknown state
 - new field in resolution value of releaseTimers - immediates, contains an object of not-executed immediates (should be always empty in normal releaseTimers, will contain dropped ones with invocation stack in forcedReleaseTimers)
 - updated development packages
 - removed vulnerabilities badge, zurvan should be used for tests mostly, so it's irrelevant
 - minor README fixes

0.3.2:
 - *BREAKING CHANGE* added workaround for most typical cases of integration with request-promise. This increases number of cycles around event loop done before queue is assumed empty
 - Added a new badge to readme (vulnerabilities)
 - Removed grunt-jshint dependency (left only JSHint)
 - Upgraded error messages - in case current time is equal to target, added info that queue is not yet cleared
 - updated used mocha to 3.0.0
 
0.3.1: 
 - *BREAKING CHANGE* fixed a bug where UIDs called by setImmediate leaked between test cases
 - *BREAKING CHANGE* throwOnInvalidClearTimer configuration option applies to setImmediate/clearImmediate as well now
 - removed dependencies on grunt-madge and grunt-mocha-test

0.3.0:
 - *BREAKING CHANGE* default value for TimeUnit are now milliseconds, i.e., TimeUnit called without unit will be converted from milliseconds now. TimeUnit module exports a function now instead of an object. All previous fields are still there.
 - added support for node 0.10 with compatibility mode -> new option to set internal Promise scheduler - this means that zurvan will no longer throw on require if there is no Promise in environment (it will throw at intercept instead), but will use bluebird if available
 - added configuration option to set internal Promise scheduler (useful also for other versions of node). Please use with care and only with thoroughly tested Promise libraries.
 - if there is no global.Promise in the environment, `zurvan` will attempt to use `bluebird`. User is able to override it at interception, but `bluebird` scheduler may be already changed.
 - enhanced error messages
 - added some examples that are executed as tests
 - minor refactoring changes

0.2.4:
 - added environment compatibility check - if required functions are not available in environment, zurvan will throw proper error at `require`
 - error messages shall be visible now (in Error object/reject) in case of using zurvan that was not initialized properly
 
0.2.3:
 - *BREAKING CHANGE* expireAllTimeouts() and forwardTimeToNextTimer clear the queue even if there are no timeouts (previously it was resolved immediately)
 - *BREAKING CHANGE* releaseTimers() is now resolved with leftovers from execution
 - added option to intercept timers while ignoring Date function - it may cause problems in setups that require high compatibility, so now it can be at least suppressed
 - fixed a bug - zurvan does not crash anymore when called as argument of util.format
 - zurvan is running in strict mode now
 
0.2.2:
 - added option to throw when argument to clearTimeout/clearInterval is not a valid timer issued by proper set function
 - fixed a bug - when clearTimeout/clearInterval is called with undefined, it no longer crashes
 
0.2.1:
 - *BREAKING CHANGE* removed hack for modifying original setImmediate fields for bluebird compatibility. 
 Now bluebird.setScheduler is used
 - fixed a bug - waitForEmptyQueue() waits now longer (hopefully until queue is cleared)
previously there was a problem in scenario setImmediate(process.nextTick(setImmediate)))

0.2.0:
 - *BREAKING CHANGE* blockSystem does no longer return a Promise, and is a synchronous call instead
 - added option to ignore faking process timers (process.hrtime and process.uptime)
 - added option to throw on values < 1 passed to setTimeout / setInterval
 - added option for adding per-module configuration
 - added compatibility option to run smoothly with bluebird
 - documentation fixes
 - fixed bug: microqueue tasks in last timeout were not executed before resolving advanceTime promises
 
0.1.1:
 - readme fixes

0.1.0:
 - fixed critical bugs