49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
const isWSL = require('is-wsl');
 | 
						|
const termux = require('./lib/termux.js');
 | 
						|
const linux = require('./lib/linux.js');
 | 
						|
const macos = require('./lib/macos.js');
 | 
						|
const windows = require('./lib/windows.js');
 | 
						|
 | 
						|
const platformLib = (() => {
 | 
						|
	switch (process.platform) {
 | 
						|
		case 'darwin':
 | 
						|
			return macos;
 | 
						|
		case 'win32':
 | 
						|
			return windows;
 | 
						|
		case 'android':
 | 
						|
			if (process.env.PREFIX !== '/data/data/com.termux/files/usr') {
 | 
						|
				throw new Error('You need to install Termux for this module to work on Android: https://termux.com');
 | 
						|
			}
 | 
						|
 | 
						|
			return termux;
 | 
						|
		default:
 | 
						|
			// `process.platform === 'linux'` for WSL.
 | 
						|
			if (isWSL) {
 | 
						|
				return windows;
 | 
						|
			}
 | 
						|
 | 
						|
			return linux;
 | 
						|
	}
 | 
						|
})();
 | 
						|
 | 
						|
exports.write = async text => {
 | 
						|
	if (typeof text !== 'string') {
 | 
						|
		throw new TypeError(`Expected a string, got ${typeof text}`);
 | 
						|
	}
 | 
						|
 | 
						|
	await platformLib.copy({input: text});
 | 
						|
};
 | 
						|
 | 
						|
exports.read = async () => platformLib.paste({stripEof: false});
 | 
						|
 | 
						|
exports.writeSync = text => {
 | 
						|
	if (typeof text !== 'string') {
 | 
						|
		throw new TypeError(`Expected a string, got ${typeof text}`);
 | 
						|
	}
 | 
						|
 | 
						|
	platformLib.copySync({input: text});
 | 
						|
};
 | 
						|
 | 
						|
exports.readSync = () => platformLib.pasteSync({stripEof: false}).stdout;
 |