CHANGELOG
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