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;
 |