Initial commit

This commit is contained in:
Spencer Pincott
2024-07-15 22:20:13 -04:00
commit 97737ca1ae
16618 changed files with 934131 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
const transform = require('..')
const assert = require('assert')
transform([
['1','2','3','4'],
['a','b','c','d']
], function(data){
data.push(data.shift())
return data
}, function(err, output){
assert.deepEqual(output, [
[ '2', '3', '4', '1' ],
[ 'b', 'c', 'd', 'a' ]
])
})

View File

@@ -0,0 +1,26 @@
const transform = require('..')
const assert = require('assert')
const output = []
const transformer = transform(function(data){
data.push(data.shift())
return data
})
transformer.on('readable', function(){
while(row = transformer.read()){
output.push(row)
}
})
transformer.on('error', function(err){
console.log(err.message)
})
transformer.on('finish', function(){
assert.deepEqual(output, [
[ '2', '3', '4', '1' ],
[ 'b', 'c', 'd', 'a' ]
])
})
transformer.write(['1','2','3','4'])
transformer.write(['a','b','c','d'])
transformer.end()

View File

@@ -0,0 +1,15 @@
const transform = require('../lib/sync')
const assert = require('assert')
const data = transform([
[ 'a', 'b', 'c', 'd' ],
[ '1', '2', '3', '4' ]
], function(data){
data.push(data.shift())
return data
})
assert.deepEqual(data, [
[ 'b', 'c', 'd', 'a' ],
[ '2', '3', '4', '1' ]
])

View File

@@ -0,0 +1,26 @@
const transform = require('..')
const assert = require('assert')
const output = []
transform([
['1','2','3','4'],
['a','b','c','d']
], function(data){
data.push(data.shift())
return data
})
.on('readable', function(){
while(row = this.read()){
output.push(row)
}
})
.on('error', function(err){
console.log(err.message)
})
.on('finish', function(){
assert.deepEqual(output, [
[ '2', '3', '4', '1' ],
[ 'b', 'c', 'd', 'a' ]
])
})

View File

@@ -0,0 +1,20 @@
const transform = require('..')
const assert = require('assert')
// Generate a dataset of 500 records
const records = '.'.repeat(500).split('.').map( (_, i) => i )
// Transform the dataset
transform(records, {
parallel: 1
}, function(record, callback){
setTimeout(function(){
callback(null, record)
// Random timeout to prove sequential execution
}, Math.ceil(Math.random() * 10))
}, function(err, records){
assert.equal(
records.join(','),
'.'.repeat(500).split('.').map( (_, i) => i ).join(',')
)
})

View File

@@ -0,0 +1,19 @@
const transform = require('..')
transform([
['1','2','3','4'],
['a','b','c','d']
], function(data, callback){
setImmediate(function(){
data.push(data.shift())
callback(null, data.join(',')+'\n')
})
}, {
parallel: 20
})
.pipe(process.stdout)
// Output:
// 2,3,4,1
// b,c,d,a

View File

@@ -0,0 +1,15 @@
const transform = require('..')
transform([
['1','2','3','4'],
['a','b','c','d']
], function(data){
data.push(data.shift())
return data.join(',')+'\n'
})
.pipe(process.stdout)
// Output:
// 2,3,4,1
// b,c,d,a

View File

@@ -0,0 +1,26 @@
const transform = require('..')
const assert = require('assert')
// Generate a dataset of 5 records
const records = 'record\n'.repeat(5).trim().split('\n')
let test_running = records.length
let test_started = records.length
let test_finished = 0
// Execute the transformation
transform(records, function(record, callback){
setTimeout( () => {
const {running, started, finished} = this
assert.equal(running, test_running--)
assert.equal(started, test_started)
assert.equal(finished, test_finished++)
callback(null, `${running}_${started}_${finished}\n`)
}, 100)
})
// Get notify on error
.on('end', function(){
process.stdout.write('-------\n')
const {running, started, finished} = this
process.stdout.write(`${running}_${started}_${finished}\n`)
})
// Print the transformed records to the standard output
.pipe(process.stdout)

View File

@@ -0,0 +1,19 @@
const transform = require('..')
// Generate a dataset of 5 records
const records = 'record\n'.repeat(5).trim().split('\n')
// Initialize the transformation
const transformer = transform(records, (record, callback) => {
setTimeout( () => {
const {running, started, finished} = transformer
callback(null, `${running}_${started}_${finished}\n`)
}, 100)
})
// Get notify when done
transformer.on('end', () => {
process.stdout.write('-------\n')
const {running, started, finished} = transformer
process.stdout.write(`${running}_${started}_${finished}\n`)
})
// Print the transformed records to the standard output
transformer.pipe(process.stdout)