36 lines
		
	
	
		
			867 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			867 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const {platform, type} = require("os");
 | |
| 
 | |
| const supportedPlatforms = new Set([
 | |
|   "aix",
 | |
|   "android",
 | |
|   "darwin",
 | |
|   "freebsd",
 | |
|   "linux",
 | |
|   "openbsd",
 | |
|   "sunos",
 | |
|   "win32"
 | |
| ]);
 | |
| 
 | |
| const plat = platform();
 | |
| 
 | |
| if (supportedPlatforms.has(plat)) {
 | |
|   let file = plat;
 | |
|   if (plat === "aix") {
 | |
|     file = type() === "OS400" ? "ibmi" : "sunos"; // AIX `netstat` output is compatible with Solaris
 | |
|   }
 | |
| 
 | |
|   const m = require(`./${file}.js`);
 | |
|   module.exports.v4 = () => m.v4();
 | |
|   module.exports.v6 = () => m.v6();
 | |
|   module.exports.v4.sync = () => m.v4.sync();
 | |
|   module.exports.v6.sync = () => m.v6.sync();
 | |
| } else {
 | |
|   const err = new Error(`Unsupported Platform: ${plat}`);
 | |
|   module.exports.v4 = () => Promise.reject(err);
 | |
|   module.exports.v6 = () => Promise.reject(err);
 | |
|   module.exports.v4.sync = () => { throw err; };
 | |
|   module.exports.v6.sync = () => { throw err; };
 | |
| }
 |