browser.mjs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /* eslint-disable no-unused-vars */
  2. 'use strict';
  3. import cliui from 'https://unpkg.com/cliui@7.0.1/index.mjs'; // eslint-disable-line
  4. import Parser from 'https://unpkg.com/yargs-parser@19.0.0/browser.js'; // eslint-disable-line
  5. import {getProcessArgvBin} from '../../build/lib/utils/process-argv.js';
  6. import {YError} from '../../build/lib/yerror.js';
  7. const REQUIRE_ERROR = 'require is not supported in browser';
  8. const REQUIRE_DIRECTORY_ERROR =
  9. 'loading a directory of commands is not supported in browser';
  10. export default {
  11. assert: {
  12. notStrictEqual: (a, b) => {
  13. // noop.
  14. },
  15. strictEqual: (a, b) => {
  16. // noop.
  17. },
  18. },
  19. cliui,
  20. findUp: () => undefined,
  21. getEnv: key => {
  22. // There is no environment in browser:
  23. return undefined;
  24. },
  25. inspect: console.log,
  26. getCallerFile: () => {
  27. throw new YError(REQUIRE_DIRECTORY_ERROR);
  28. },
  29. getProcessArgvBin,
  30. mainFilename: 'yargs',
  31. Parser,
  32. path: {
  33. basename: str => str,
  34. dirname: str => str,
  35. extname: str => str,
  36. relative: str => str,
  37. },
  38. process: {
  39. argv: () => [],
  40. cwd: () => '',
  41. execPath: () => '',
  42. // exit is noop browser:
  43. exit: () => {},
  44. nextTick: cb => {
  45. // eslint-disable-next-line no-undef
  46. window.setTimeout(cb, 1);
  47. },
  48. stdColumns: 80,
  49. },
  50. readFileSync: () => {
  51. return '';
  52. },
  53. require: () => {
  54. throw new YError(REQUIRE_ERROR);
  55. },
  56. requireDirectory: () => {
  57. throw new YError(REQUIRE_DIRECTORY_ERROR);
  58. },
  59. stringWidth: str => {
  60. return [...str].length;
  61. },
  62. // TODO: replace this with y18n once it's ported to ESM:
  63. y18n: {
  64. __: (...str) => {
  65. if (str.length === 0) return '';
  66. const args = str.slice(1);
  67. return sprintf(str[0], ...args);
  68. },
  69. __n: (str1, str2, count, ...args) => {
  70. if (count === 1) {
  71. return sprintf(str1, ...args);
  72. } else {
  73. return sprintf(str2, ...args);
  74. }
  75. },
  76. getLocale: () => {
  77. return 'en_US';
  78. },
  79. setLocale: () => {},
  80. updateLocale: () => {},
  81. },
  82. };
  83. function sprintf(_str, ...args) {
  84. let str = '';
  85. const split = _str.split('%s');
  86. split.forEach((token, i) => {
  87. str += `${token}${split[i + 1] !== undefined && args[i] ? args[i] : ''}`;
  88. });
  89. return str;
  90. }