93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| import cliui from 'https://unpkg.com/cliui@7.0.1/index.mjs'; // eslint-disable-line
 | |
| import Parser from 'https://unpkg.com/yargs-parser@19.0.0/browser.js'; // eslint-disable-line
 | |
| import {getProcessArgvBin} from '../../build/lib/utils/process-argv.js';
 | |
| import {YError} from '../../build/lib/yerror.js';
 | |
| 
 | |
| const REQUIRE_ERROR = 'require is not supported in browser';
 | |
| const REQUIRE_DIRECTORY_ERROR =
 | |
|   'loading a directory of commands is not supported in browser';
 | |
| 
 | |
| export default {
 | |
|   assert: {
 | |
|     notStrictEqual: (a, b) => {
 | |
|       // noop.
 | |
|     },
 | |
|     strictEqual: (a, b) => {
 | |
|       // noop.
 | |
|     },
 | |
|   },
 | |
|   cliui,
 | |
|   findUp: () => undefined,
 | |
|   getEnv: key => {
 | |
|     // There is no environment in browser:
 | |
|     return undefined;
 | |
|   },
 | |
|   inspect: console.log,
 | |
|   getCallerFile: () => {
 | |
|     throw new YError(REQUIRE_DIRECTORY_ERROR);
 | |
|   },
 | |
|   getProcessArgvBin,
 | |
|   mainFilename: 'yargs',
 | |
|   Parser,
 | |
|   path: {
 | |
|     basename: str => str,
 | |
|     dirname: str => str,
 | |
|     extname: str => str,
 | |
|     relative: str => str,
 | |
|   },
 | |
|   process: {
 | |
|     argv: () => [],
 | |
|     cwd: () => '',
 | |
|     execPath: () => '',
 | |
|     // exit is noop browser:
 | |
|     exit: () => {},
 | |
|     nextTick: cb => {
 | |
|       window.setTimeout(cb, 1);
 | |
|     },
 | |
|     stdColumns: 80,
 | |
|   },
 | |
|   readFileSync: () => {
 | |
|     return '';
 | |
|   },
 | |
|   require: () => {
 | |
|     throw new YError(REQUIRE_ERROR);
 | |
|   },
 | |
|   requireDirectory: () => {
 | |
|     throw new YError(REQUIRE_DIRECTORY_ERROR);
 | |
|   },
 | |
|   stringWidth: str => {
 | |
|     return [...str].length;
 | |
|   },
 | |
|   // TODO: replace this with y18n once it's ported to ESM:
 | |
|   y18n: {
 | |
|     __: (...str) => {
 | |
|       if (str.length === 0) return '';
 | |
|       const args = str.slice(1);
 | |
|       return sprintf(str[0], ...args);
 | |
|     },
 | |
|     __n: (str1, str2, count, ...args) => {
 | |
|       if (count === 1) {
 | |
|         return sprintf(str1, ...args);
 | |
|       } else {
 | |
|         return sprintf(str2, ...args);
 | |
|       }
 | |
|     },
 | |
|     getLocale: () => {
 | |
|       return 'en_US';
 | |
|     },
 | |
|     setLocale: () => {},
 | |
|     updateLocale: () => {},
 | |
|   },
 | |
| };
 | |
| 
 | |
| function sprintf(_str, ...args) {
 | |
|   let str = '';
 | |
|   const split = _str.split('%s');
 | |
|   split.forEach((token, i) => {
 | |
|     str += `${token}${split[i + 1] !== undefined && args[i] ? args[i] : ''}`;
 | |
|   });
 | |
|   return str;
 | |
| }
 |