import {
	addNoopGenerator,
	noopGenerator,
	serializeGenerator,
	uppercaseBufferGenerator,
	uppercaseGenerator,
	getOutputGenerator,
	outputObjectGenerator,
	getOutputsGenerator,
	noYieldGenerator,
	multipleYieldGenerator,
	throwingGenerator,
	appendGenerator,
	timeoutGenerator,
} from './generator.js';
import {
	addNoopDuplex,
	noopDuplex,
	serializeDuplex,
	uppercaseBufferDuplex,
	getOutputDuplex,
	outputObjectDuplex,
	getOutputsDuplex,
	noYieldDuplex,
	multipleYieldDuplex,
	throwingDuplex,
	appendDuplex,
	timeoutDuplex,
} from './duplex.js';
import {
	addNoopWebTransform,
	noopWebTransform,
	serializeWebTransform,
	uppercaseBufferWebTransform,
	getOutputWebTransform,
	outputObjectWebTransform,
	getOutputsWebTransform,
	noYieldWebTransform,
	multipleYieldWebTransform,
	throwingWebTransform,
	appendWebTransform,
	timeoutWebTransform,
} from './web-transform.js';

export const generatorsMap = {
	generator: {
		addNoop: addNoopGenerator,
		noop: noopGenerator,
		serialize: serializeGenerator,
		uppercaseBuffer: uppercaseBufferGenerator,
		uppercase: uppercaseGenerator,
		getOutput: getOutputGenerator,
		outputObject: outputObjectGenerator,
		getOutputs: getOutputsGenerator,
		noYield: noYieldGenerator,
		multipleYield: multipleYieldGenerator,
		throwing: throwingGenerator,
		append: appendGenerator,
		timeout: timeoutGenerator,
	},
	duplex: {
		addNoop: addNoopDuplex,
		noop: noopDuplex,
		serialize: serializeDuplex,
		uppercaseBuffer: uppercaseBufferDuplex,
		uppercase: uppercaseBufferDuplex,
		getOutput: getOutputDuplex,
		outputObject: outputObjectDuplex,
		getOutputs: getOutputsDuplex,
		noYield: noYieldDuplex,
		multipleYield: multipleYieldDuplex,
		throwing: throwingDuplex,
		append: appendDuplex,
		timeout: timeoutDuplex,
	},
	webTransform: {
		addNoop: addNoopWebTransform,
		noop: noopWebTransform,
		serialize: serializeWebTransform,
		uppercaseBuffer: uppercaseBufferWebTransform,
		uppercase: uppercaseBufferWebTransform,
		getOutput: getOutputWebTransform,
		outputObject: outputObjectWebTransform,
		getOutputs: getOutputsWebTransform,
		noYield: noYieldWebTransform,
		multipleYield: multipleYieldWebTransform,
		throwing: throwingWebTransform,
		append: appendWebTransform,
		timeout: timeoutWebTransform,
	},
};
