Skip to content

Commit

Permalink
feat(context): add context providers to handle debug specific stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
christianalfoni committed Apr 18, 2016
1 parent ae8005a commit a1f6177
Show file tree
Hide file tree
Showing 4 changed files with 270 additions and 32 deletions.
31 changes: 18 additions & 13 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ module.exports = function SignalStore () {

var asyncActionsRunning = []

if (controller.addContextProvider) {
controller.addContextProvider(require('cerebral/src/contextProviders/mutationsProvider'))
controller.addContextProvider(require('./providers/servicesTrackerProvider'))
}

var addAsyncAction = function (action) {
asyncActionsRunning.push(action)
}
Expand Down Expand Up @@ -161,30 +166,30 @@ module.exports = function SignalStore () {
return services
}

controller.on('signalTrigger', function (args) {
var signal = args.signal
controller.on('signalTrigger', function (event) {
var signal = event.signal

if (!isRemembering && currentIndex !== -1 && currentIndex < signals.length - 1) {
signal.preventSignalRun()
console.warn('Cerebral - Looking in the past, ignored signal ' + signal.name)
}
})
controller.on('signalStart', function (args) {
var signal = args.signal
var options = args.options
controller.on('signalStart', function (event) {
var signal = event.signal
var options = event.signal.options || event.options

if (!signal.isPrevented) addSignal(signal, options)
})
controller.on('actionStart', function (args) {
var action = args.action
if (action.isAsync) addAsyncAction(args.action)
controller.on('actionStart', function (event) {
var action = event.action
if (action.isAsync) addAsyncAction(action)
})
controller.on('actionEnd', function (args) {
var action = args.action
if (action.isAsync) removeAsyncAction(args.action)
controller.on('actionEnd', function (event) {
var action = event.action
if (action.isAsync) removeAsyncAction(action)
})
controller.on('signalEnd', function (args) {
var signal = args.signal
controller.on('signalEnd', function (event) {
var signal = event.signal
var storeSignal = storeSignalReferences[originalSignalReferences.indexOf(signal)]
storeSignal.isExecuting = signal.isExecuting
storeSignal.duration = signal.duration
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"analyzeCommits": "./sr-prerelease.js"
},
"devDependencies": {
"cerebral": "^0.33.31",
"cerebral": "^0.34.0-rc.2",
"commitizen": "^2.5.0",
"conventional-changelog": "0.0.17",
"coveralls": "^2.11.6",
Expand All @@ -48,7 +48,7 @@
"validate-commit-msg": "^1.1.1"
},
"peerDependencies": {
"cerebral": "^0.33.8 || ^0.34.0-0"
"cerebral": "^0.34.0-rc.2"
},
"dependencies": {
"uuid": "^2.0.1"
Expand Down
44 changes: 44 additions & 0 deletions providers/servicesTrackerProvider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
var convertServices = function (action, path, modulesPaths, services) {
return Object.keys(services).reduce(function (newservices, key) {
path.push(key)
if (
typeof services[key] === 'function' &&
services[key].constructor.name === 'Function' &&
!Object.keys(services[key]).length &&
(!services[key].prototype || !Object.keys(services[key].prototype).length)
) {
var servicePath = path.slice()
var method = servicePath.pop()
newservices[key] = function () {
action.serviceCalls.push({
name: servicePath.join('.'),
method: method,
args: [].slice.call(arguments)
})
return services[key].apply(this, arguments)
}
} else if (
typeof services[key] === 'object' &&
!Array.isArray(services[key]) &&
services[key] !== null &&
modulesPaths.indexOf(path.join('.')) >= 0
) {
newservices[key] = convertServices(action, path, modulesPaths, services[key])
} else {
newservices[key] = services[key]
}
path.pop(key)
return newservices
}, {})
}

module.exports = function (context, execution, controller) {
var action = execution.action
var modules = controller.getModules()
var services = controller.getServices()
var path = []
action.serviceCalls = action.serviceCalls || []
context.services = convertServices(action, path, Object.keys(modules), services)

return context
}
Loading

0 comments on commit a1f6177

Please sign in to comment.