You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				| '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;
 |