Blame view

node_modules/domain-browser/source/index.js 1.27 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  // This file should be ES5 compatible
  /* eslint prefer-spread:0, no-var:0, prefer-reflect:0, no-magic-numbers:0 */
  'use strict'
  
  module.exports = (function () {
  	// Import Events
  	var events = require('events')
  
  	// Export Domain
  	var domain = {}
  	domain.createDomain = domain.create = function () {
  		var d = new events.EventEmitter()
  
  		function emitError (e) {
  			d.emit('error', e)
  		}
  
  		d.add = function (emitter) {
  			emitter.on('error', emitError)
  		}
  		d.remove = function (emitter) {
  			emitter.removeListener('error', emitError)
  		}
  		d.bind = function (fn) {
  			return function () {
  				var args = Array.prototype.slice.call(arguments)
  				try {
  					fn.apply(null, args)
  				}
  				catch (err) {
  					emitError(err)
  				}
  			}
  		}
  		d.intercept = function (fn) {
  			return function (err) {
  				if ( err ) {
  					emitError(err)
  				}
  				else {
  					var args = Array.prototype.slice.call(arguments, 1)
  					try {
  						fn.apply(null, args)
  					}
  					catch (err) {
  						emitError(err)
  					}
  				}
  			}
  		}
  		d.run = function (fn) {
  			try {
  				fn()
  			}
  			catch (err) {
  				emitError(err)
  			}
  			return this
  		}
  		d.dispose = function () {
  			this.removeAllListeners()
  			return this
  		}
  		d.enter = d.exit = function () {
  			return this
  		}
  		return d
  	}
  	return domain
  }).call(this)