 e89f2f4b7b
			
		
	
	e89f2f4b7b
	
	
	
		
			
			Created 10 detailed GitHub issues covering: - Project activation and management UI (#1-2) - Worker node coordination and visualization (#3-4) - Automated GitHub repository scanning (#5) - Intelligent model-to-issue matching (#6) - Multi-model task execution system (#7) - N8N workflow integration (#8) - Hive-Bzzz P2P bridge (#9) - Peer assistance protocol (#10) Each issue includes detailed specifications, acceptance criteria, technical implementation notes, and dependency mapping. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			281 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| suite('lunr.Pipeline', function () {
 | |
|   var noop = function () {}
 | |
| 
 | |
|   setup(function () {
 | |
|     this.existingRegisteredFunctions = lunr.Pipeline.registeredFunctions
 | |
|     this.existingWarnIfFunctionNotRegistered = lunr.Pipeline.warnIfFunctionNotRegistered
 | |
| 
 | |
|     lunr.Pipeline.registeredFunctions = {}
 | |
|     lunr.Pipeline.warnIfFunctionNotRegistered = noop
 | |
| 
 | |
|     this.pipeline = new lunr.Pipeline
 | |
|   })
 | |
| 
 | |
|   teardown(function () {
 | |
|     lunr.Pipeline.registeredFunctions = this.existingRegisteredFunctions
 | |
|     lunr.Pipeline.warnIfFunctionNotRegistered = this.existingWarnIfFunctionNotRegistered
 | |
|   })
 | |
| 
 | |
|   suite('#add', function () {
 | |
|     test('add function to pipeline', function () {
 | |
|       this.pipeline.add(noop)
 | |
|       assert.equal(1, this.pipeline._stack.length)
 | |
|     })
 | |
| 
 | |
|     test('add multiple functions to the pipeline', function () {
 | |
|       this.pipeline.add(noop, noop)
 | |
|       assert.equal(2, this.pipeline._stack.length)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#remove', function () {
 | |
|     test('function exists in pipeline', function () {
 | |
|       this.pipeline.add(noop)
 | |
|       assert.equal(1, this.pipeline._stack.length)
 | |
|       this.pipeline.remove(noop)
 | |
|       assert.equal(0, this.pipeline._stack.length)
 | |
|     })
 | |
| 
 | |
|     test('function does not exist in pipeline', function () {
 | |
|       var fn = function () {}
 | |
|       this.pipeline.add(noop)
 | |
|       assert.equal(1, this.pipeline._stack.length)
 | |
|       this.pipeline.remove(fn)
 | |
|       assert.equal(1, this.pipeline._stack.length)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#before', function () {
 | |
|     var fn = function () {}
 | |
| 
 | |
|     test('other function exists', function () {
 | |
|       this.pipeline.add(noop)
 | |
|       this.pipeline.before(noop, fn)
 | |
| 
 | |
|       assert.deepEqual([fn, noop], this.pipeline._stack)
 | |
|     })
 | |
| 
 | |
|     test('other function does not exist', function () {
 | |
|       var action = function () {
 | |
|         this.pipeline.before(noop, fn)
 | |
|       }
 | |
| 
 | |
|       assert.throws(action.bind(this))
 | |
|       assert.equal(0, this.pipeline._stack.length)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#after', function () {
 | |
|     var fn = function () {}
 | |
| 
 | |
|     test('other function exists', function () {
 | |
|       this.pipeline.add(noop)
 | |
|       this.pipeline.after(noop, fn)
 | |
| 
 | |
|       assert.deepEqual([noop, fn], this.pipeline._stack)
 | |
|     })
 | |
| 
 | |
|     test('other function does not exist', function () {
 | |
|       var action = function () {
 | |
|         this.pipeline.after(noop, fn)
 | |
|       }
 | |
| 
 | |
|       assert.throws(action.bind(this))
 | |
|       assert.equal(0, this.pipeline._stack.length)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#run', function () {
 | |
|     test('calling each function for each token', function () {
 | |
|       var count1 = 0, count2 = 0,
 | |
|           fn1 = function (t) { count1++; return t },
 | |
|           fn2 = function (t) { count2++; return t }
 | |
| 
 | |
|       this.pipeline.add(fn1, fn2)
 | |
|       this.pipeline.run([1,2,3])
 | |
| 
 | |
|       assert.equal(3, count1)
 | |
|       assert.equal(3, count2)
 | |
|     })
 | |
| 
 | |
|     test('passes token to pipeline function', function () {
 | |
|       this.pipeline.add(function (token) {
 | |
|         assert.equal('foo', token)
 | |
|       })
 | |
| 
 | |
|       this.pipeline.run(['foo'])
 | |
|     })
 | |
| 
 | |
|     test('passes index to pipeline function', function () {
 | |
|       this.pipeline.add(function (_, index) {
 | |
|         assert.equal(0, index)
 | |
|       })
 | |
| 
 | |
|       this.pipeline.run(['foo'])
 | |
|     })
 | |
| 
 | |
|     test('passes entire token array to pipeline function', function () {
 | |
|       this.pipeline.add(function (_, _, tokens) {
 | |
|         assert.deepEqual(['foo'], tokens)
 | |
|       })
 | |
| 
 | |
|       this.pipeline.run(['foo'])
 | |
|     })
 | |
| 
 | |
|     test('passes output of one function as input to the next', function () {
 | |
|       this.pipeline.add(function (t) {
 | |
|         return t.toUpperCase()
 | |
|       })
 | |
| 
 | |
|       this.pipeline.add(function (t) {
 | |
|         assert.equal('FOO', t)
 | |
|       })
 | |
| 
 | |
|       this.pipeline.run(['foo'])
 | |
|     })
 | |
| 
 | |
|     test('returns the results of the last function', function () {
 | |
|       this.pipeline.add(function (t) {
 | |
|         return t.toUpperCase()
 | |
|       })
 | |
| 
 | |
|       assert.deepEqual(['FOO'], this.pipeline.run(['foo']))
 | |
|     })
 | |
| 
 | |
|     test('filters out null, undefined and empty string values', function () {
 | |
|       var tokens = [],
 | |
|           output
 | |
| 
 | |
|       // only pass on tokens for even token indexes
 | |
|       // return null for 'foo'
 | |
|       // return undefined for 'bar'
 | |
|       // return '' for 'baz'
 | |
|       this.pipeline.add(function (t, i) {
 | |
|         if (i == 4) {
 | |
|           return null
 | |
|         } else if (i == 5) {
 | |
|           return ''
 | |
|         } if (i % 2) {
 | |
|           return t
 | |
|         } else {
 | |
|           return undefined
 | |
|         }
 | |
|       })
 | |
| 
 | |
|       this.pipeline.add(function (t) {
 | |
|         tokens.push(t)
 | |
|         return t
 | |
|       })
 | |
| 
 | |
|       output = this.pipeline.run(['a', 'b', 'c', 'd', 'foo', 'bar', 'baz'])
 | |
| 
 | |
|       assert.sameMembers(['b', 'd'], tokens)
 | |
|       assert.sameMembers(['b', 'd'], output)
 | |
|     })
 | |
| 
 | |
|     suite('expanding tokens', function () {
 | |
|       test('passed to output', function () {
 | |
|         this.pipeline.add(function (t) {
 | |
|           return [t, t.toUpperCase()]
 | |
|         })
 | |
| 
 | |
|         assert.sameMembers(["foo", "FOO"], this.pipeline.run(['foo']))
 | |
|       })
 | |
| 
 | |
|       test('not passed to same function', function () {
 | |
|         var received = []
 | |
| 
 | |
|         this.pipeline.add(function (t) {
 | |
|           received.push(t)
 | |
|           return [t, t.toUpperCase()]
 | |
|         })
 | |
| 
 | |
|         this.pipeline.run(['foo'])
 | |
| 
 | |
|         assert.sameMembers(['foo'], received)
 | |
|       })
 | |
| 
 | |
|       test('passed to the next pipeline function', function () {
 | |
|         var received = []
 | |
| 
 | |
|         this.pipeline.add(function (t) {
 | |
|           return [t, t.toUpperCase()]
 | |
|         })
 | |
| 
 | |
|         this.pipeline.add(function (t) {
 | |
|           received.push(t)
 | |
|         })
 | |
| 
 | |
|         this.pipeline.run(['foo'])
 | |
| 
 | |
|         assert.sameMembers(['foo', 'FOO'], received)
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#toJSON', function () {
 | |
|     test('returns an array of registered function labels', function () {
 | |
|       var fn = function () {}
 | |
| 
 | |
|       lunr.Pipeline.registerFunction(fn, 'fn')
 | |
| 
 | |
|       this.pipeline.add(fn)
 | |
| 
 | |
|       assert.sameMembers(['fn'], this.pipeline.toJSON())
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('.registerFunction', function () {
 | |
|     setup(function () {
 | |
|       this.fn = function () {}
 | |
|     })
 | |
| 
 | |
|     test('adds a label property to the function', function () {
 | |
|       lunr.Pipeline.registerFunction(this.fn, 'fn')
 | |
| 
 | |
|       assert.equal('fn', this.fn.label)
 | |
|     })
 | |
| 
 | |
|     test('adds function to the list of registered functions', function () {
 | |
|       lunr.Pipeline.registerFunction(this.fn, 'fn')
 | |
| 
 | |
|       assert.equal(this.fn, lunr.Pipeline.registeredFunctions['fn'])
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('.load', function () {
 | |
|     test('with registered functions', function () {
 | |
|       var fn = function () {},
 | |
|           serializedPipeline = ['fn'],
 | |
|           pipeline
 | |
| 
 | |
|       lunr.Pipeline.registerFunction(fn, 'fn')
 | |
| 
 | |
|       pipeline = lunr.Pipeline.load(serializedPipeline)
 | |
| 
 | |
|       assert.equal(1, pipeline._stack.length)
 | |
|       assert.equal(fn, pipeline._stack[0])
 | |
|     })
 | |
| 
 | |
|     test('with unregisterd functions', function () {
 | |
|       var serializedPipeline = ['fn']
 | |
| 
 | |
|       assert.throws(function () {
 | |
|         lunr.Pipeline.load(serializedPipeline)
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   suite('#reset', function () {
 | |
|     test('empties the stack', function () {
 | |
|       this.pipeline.add(function () {})
 | |
| 
 | |
|       assert.equal(1, this.pipeline._stack.length)
 | |
| 
 | |
|       this.pipeline.reset()
 | |
| 
 | |
|       assert.equal(0, this.pipeline._stack.length)
 | |
|     })
 | |
|   })
 | |
| })
 |