You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							1.5 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const avvio = require('.')()
 | 
						|
 | 
						|
function a (instance, opts, cb) {
 | 
						|
  (opts.use || []).forEach(_ => { instance.use(_, { use: opts.subUse || [] }) })
 | 
						|
  setTimeout(cb, 10)
 | 
						|
}
 | 
						|
const pointer = a
 | 
						|
 | 
						|
function b (instance, opts, cb) {
 | 
						|
  (opts.use || []).forEach(_ => { instance.use(_, { use: opts.subUse || [] }) })
 | 
						|
  setTimeout(cb, 20)
 | 
						|
}
 | 
						|
 | 
						|
function c (instance, opts, cb) {
 | 
						|
  (opts.use || []).forEach(_ => { instance.use(_, { use: opts.subUse || [] }) })
 | 
						|
  setTimeout(cb, 30)
 | 
						|
}
 | 
						|
 | 
						|
avvio
 | 
						|
  .use(first, { hello: 'world' })
 | 
						|
  .use(duplicate, { count: 0 })
 | 
						|
  .use(function a (instance, opts, cb) {
 | 
						|
    instance.use(pointer, { use: [b], subUse: [c] })
 | 
						|
      .use(b)
 | 
						|
    setTimeout(cb, 42)
 | 
						|
  })
 | 
						|
  .after(function (err, cb) {
 | 
						|
    if (err) {
 | 
						|
      console.log('something bad happened')
 | 
						|
      console.log(err)
 | 
						|
    }
 | 
						|
    console.log('after first and second')
 | 
						|
    cb()
 | 
						|
  })
 | 
						|
  .use(duplicate, { count: 4 })
 | 
						|
  .use(third)
 | 
						|
  .ready(function (err) {
 | 
						|
    if (err) {
 | 
						|
      throw err
 | 
						|
    }
 | 
						|
    console.log('application booted!')
 | 
						|
  })
 | 
						|
 | 
						|
avvio.on('preReady', () => {
 | 
						|
  console.log(avvio.prettyPrint())
 | 
						|
})
 | 
						|
 | 
						|
function first (instance, opts, cb) {
 | 
						|
  console.log('first loaded', opts)
 | 
						|
  instance.use(second)
 | 
						|
  setTimeout(cb, 42)
 | 
						|
}
 | 
						|
 | 
						|
function second (instance, opts, cb) {
 | 
						|
  console.log('second loaded')
 | 
						|
  process.nextTick(cb)
 | 
						|
}
 | 
						|
 | 
						|
function third (instance, opts, cb) {
 | 
						|
  console.log('third loaded')
 | 
						|
  cb()
 | 
						|
}
 | 
						|
 | 
						|
function duplicate (instance, opts, cb) {
 | 
						|
  console.log('duplicate loaded', opts.count)
 | 
						|
  if (opts.count > 0) {
 | 
						|
    instance.use(duplicate, { count: opts.count - 1 })
 | 
						|
  }
 | 
						|
  setTimeout(cb, 20)
 | 
						|
}
 |