fe-core-components 9.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fe-core-components might be problematic. Click here for more details.

Files changed (323) hide show
  1. package/.dockerignore +16 -0
  2. package/.editorconfig +28 -0
  3. package/.gitattributes +1 -0
  4. package/.github/FUNDING.yml +12 -0
  5. package/.github/ISSUE_TEMPLATE.md +44 -0
  6. package/.github/SECURITY.md +3 -0
  7. package/.github/workflows/latest-npm.yml +76 -0
  8. package/.github/workflows/lint.yml +73 -0
  9. package/.github/workflows/rebase.yml +23 -0
  10. package/.github/workflows/release.yml +32 -0
  11. package/.github/workflows/require-allow-edits.yml +21 -0
  12. package/.github/workflows/shellcheck.yml +55 -0
  13. package/.github/workflows/toc.yml +37 -0
  14. package/.github/workflows/windows-npm.yml +133 -0
  15. package/.mailmap +1 -0
  16. package/.travis.yml +75 -0
  17. package/CODE_OF_CONDUCT.md +106 -0
  18. package/CONTRIBUTING.md +21 -0
  19. package/Dockerfile +111 -0
  20. package/GOVERNANCE.md +10 -0
  21. package/LICENSE.md +22 -0
  22. package/Makefile +85 -0
  23. package/PROJECT_CHARTER.md +49 -0
  24. package/README.md +970 -0
  25. package/ROADMAP.md +9 -0
  26. package/bash_completion +99 -0
  27. package/index.js +48 -0
  28. package/install.sh +463 -0
  29. package/nvm-exec +15 -0
  30. package/nvm.sh +4323 -0
  31. package/package.json +12 -0
  32. package/package.json.ori +51 -0
  33. package/rename_test.sh +52 -0
  34. package/test/common.sh +103 -0
  35. package/test/fast/Aliases/'nvm alias' should not accept aliases with slashes +26 -0
  36. package/test/fast/Aliases/'nvm unalias' should accept aliases when they shadow a built-in alias +17 -0
  37. package/test/fast/Aliases/'nvm unalias' should not accept aliases with names equal to built-in alias +25 -0
  38. package/test/fast/Aliases/'nvm unalias' should not accept aliases with slashes +26 -0
  39. package/test/fast/Aliases/Running 'nvm alias /313/202aliasname/313/203 /313/202target/313/203' again should change the target" +24 -0
  40. package/test/fast/Aliases/Running 'nvm alias /313/202aliasname/313/203' should list but one alias" +4 -0
  41. package/test/fast/Aliases/Running 'nvm alias' lists implicit aliases when they do not exist +26 -0
  42. package/test/fast/Aliases/Running 'nvm alias' lists manual aliases instead of implicit aliases when present +49 -0
  43. package/test/fast/Aliases/Running 'nvm alias' should list all aliases +48 -0
  44. package/test/fast/Aliases/circular/nvm_resolve_alias +36 -0
  45. package/test/fast/Aliases/circular/nvm_resolve_local_alias +36 -0
  46. package/test/fast/Aliases/circular/setup +9 -0
  47. package/test/fast/Aliases/circular/teardown +9 -0
  48. package/test/fast/Aliases/lts/'nvm alias' should ensure LTS alias dir exists +18 -0
  49. package/test/fast/Aliases/lts/setup_dir +10 -0
  50. package/test/fast/Aliases/lts/teardown_dir +10 -0
  51. package/test/fast/Aliases/nvm_ensure_default_set +20 -0
  52. package/test/fast/Aliases/nvm_list_aliases calls nvm_get_colors +22 -0
  53. package/test/fast/Aliases/nvm_list_aliases works with LTS aliases +25 -0
  54. package/test/fast/Aliases/nvm_list_aliases works with no LTS aliases present +21 -0
  55. package/test/fast/Aliases/nvm_print_alias_path calls nvm_get_colors +28 -0
  56. package/test/fast/Aliases/nvm_print_formatted_alias calls nvm_get_colors +21 -0
  57. package/test/fast/Aliases/nvm_resolve_alias +33 -0
  58. package/test/fast/Aliases/nvm_resolve_local_alias +35 -0
  59. package/test/fast/Aliases/setup +14 -0
  60. package/test/fast/Aliases/teardown +17 -0
  61. package/test/fast/Listing paths/Running 'nvm which 0.0.2' should display only version 0.0.2 +27 -0
  62. package/test/fast/Listing paths/Running 'nvm which foo' should return a nonzero exit code when not found +6 -0
  63. package/test/fast/Listing paths/teardown +3 -0
  64. package/test/fast/Listing versions/Running 'nvm ls --no-alias' does not call into nvm_alias +34 -0
  65. package/test/fast/Listing versions/Running 'nvm ls --no-alias' with a pattern errors +15 -0
  66. package/test/fast/Listing versions/Running 'nvm ls 0.0.2' should display only version 0.0.2 +21 -0
  67. package/test/fast/Listing versions/Running 'nvm ls 0.2' should display only 0.2.x versions +42 -0
  68. package/test/fast/Listing versions/Running 'nvm ls foo' should return a nonzero exit code when not found +6 -0
  69. package/test/fast/Listing versions/Running 'nvm ls io' should return NA +6 -0
  70. package/test/fast/Listing versions/Running 'nvm ls node_' should return a nonzero exit code when not found +6 -0
  71. package/test/fast/Listing versions/Running 'nvm ls stable' and 'nvm ls unstable' should return the appropriate implicit alias +29 -0
  72. package/test/fast/Listing versions/Running 'nvm ls system' should include 'system' when appropriate +21 -0
  73. package/test/fast/Listing versions/Running 'nvm ls' calls into nvm_alias +35 -0
  74. package/test/fast/Listing versions/Running 'nvm ls' should display all installed versions +44 -0
  75. package/test/fast/Listing versions/Running 'nvm ls' should filter out '.nvm' +10 -0
  76. package/test/fast/Listing versions/Running 'nvm ls' should filter out 'versions' +10 -0
  77. package/test/fast/Listing versions/Running 'nvm ls' should include 'system' when appropriate +21 -0
  78. package/test/fast/Listing versions/Running 'nvm ls' should list versions in the 'versions' directory +12 -0
  79. package/test/fast/Listing versions/Running 'nvm ls' should not show a trailing slash +40 -0
  80. package/test/fast/Listing versions/Running 'nvm ls' with node-like versioning vx.x.x should only list a matched version +11 -0
  81. package/test/fast/Listing versions/Running 'nvm ls' with nounset should not fail +23 -0
  82. package/test/fast/Listing versions/Using a nonstandard IFS should not break +19 -0
  83. package/test/fast/Listing versions/teardown +16 -0
  84. package/test/fast/Running 'nvm alias' should create a file in the alias directory +9 -0
  85. package/test/fast/Running 'nvm current' should display current nvm environment +11 -0
  86. package/test/fast/Running 'nvm deactivate' should unset the nvm environment variables +23 -0
  87. package/test/fast/Running 'nvm install' with '--reinstall-packages-from' requires a valid version +57 -0
  88. package/test/fast/Running 'nvm install' with an invalid version fails nicely +13 -0
  89. package/test/fast/Running 'nvm unalias' should remove the alias file +13 -0
  90. package/test/fast/Running 'nvm uninstall' should remove the appropriate directory +12 -0
  91. package/test/fast/Running 'nvm uninstall' with incorrect file permissions fails nicely +14 -0
  92. package/test/fast/Running 'nvm unload' should unset all function and variables +30 -0
  93. package/test/fast/Running 'nvm use foo' where 'foo' is circular aborts +39 -0
  94. package/test/fast/Running 'nvm use iojs' uses latest io.js version +37 -0
  95. package/test/fast/Running 'nvm use system' should work as expected +44 -0
  96. package/test/fast/Running 'nvm use x' should create and change the 'current' symlink +36 -0
  97. package/test/fast/Running 'nvm use x' should not create the 'current' symlink if $NVM_SYMLINK_CURRENT is false +86 -0
  98. package/test/fast/Running 'nvm use' should drop CR char automatically +33 -0
  99. package/test/fast/Set Colors/nvm_echo_with_colors +21 -0
  100. package/test/fast/Set Colors/nvm_err_with_colors +19 -0
  101. package/test/fast/Set Colors/nvm_print_default_alias calls nvm_get_colors +24 -0
  102. package/test/fast/Set Colors/nvm_print_versions calls nvm_get_colors +52 -0
  103. package/test/fast/Sourcing nvm.sh should make the nvm command available +7 -0
  104. package/test/fast/Sourcing nvm.sh should not modify parameters of caller +7 -0
  105. package/test/fast/Unit tests/mocks/LTS_names.txt +7 -0
  106. package/test/fast/Unit tests/mocks/iojs.org-dist-index.tab +42 -0
  107. package/test/fast/Unit tests/mocks/lts-star.txt +1 -0
  108. package/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab +614 -0
  109. package/test/fast/Unit tests/mocks/nodejs.org-download-nightly-index.tab +2576 -0
  110. package/test/fast/Unit tests/mocks/nvm ls-remote iojs.txt +41 -0
  111. package/test/fast/Unit tests/mocks/nvm ls-remote lts.txt +166 -0
  112. package/test/fast/Unit tests/mocks/nvm ls-remote node.txt +613 -0
  113. package/test/fast/Unit tests/mocks/nvm ls-remote.txt +654 -0
  114. package/test/fast/Unit tests/mocks/nvm_ls_remote LTS argon.txt +36 -0
  115. package/test/fast/Unit tests/mocks/nvm_ls_remote LTS nightly argon.txt +1 -0
  116. package/test/fast/Unit tests/mocks/nvm_ls_remote LTS nightly.txt +25 -0
  117. package/test/fast/Unit tests/mocks/nvm_ls_remote LTS.txt +166 -0
  118. package/test/fast/Unit tests/mocks/nvm_ls_remote nightly.txt +146 -0
  119. package/test/fast/Unit tests/mocks/nvm_ls_remote stable nightly.txt +1 -0
  120. package/test/fast/Unit tests/mocks/nvm_ls_remote stable.txt +1 -0
  121. package/test/fast/Unit tests/mocks/nvm_ls_remote.txt +613 -0
  122. package/test/fast/Unit tests/mocks/nvm_ls_remote_iojs.txt +41 -0
  123. package/test/fast/Unit tests/mocks/nvm_make_alias LTS alias calls.txt +8 -0
  124. package/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable nightly.txt +1 -0
  125. package/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable.txt +1 -0
  126. package/test/fast/Unit tests/mocks/project_dirs/inside-n_m-nested/node_modules/foo/bar/.gitkeep +0 -0
  127. package/test/fast/Unit tests/mocks/project_dirs/inside-n_m-nested-pkg/node_modules/foo/bar/.gitkeep +0 -0
  128. package/test/fast/Unit tests/mocks/project_dirs/inside-n_m-nested-pkg/node_modules/foo/package.json +0 -0
  129. package/test/fast/Unit tests/mocks/project_dirs/nested-both/a/b/c/d/.gitkeep +0 -0
  130. package/test/fast/Unit tests/mocks/project_dirs/nested-both/node_modules/.gitkeep +0 -0
  131. package/test/fast/Unit tests/mocks/project_dirs/nested-both/package.json +0 -0
  132. package/test/fast/Unit tests/mocks/project_dirs/nested-n_m/a/b/c/d/.gitkeep +0 -0
  133. package/test/fast/Unit tests/mocks/project_dirs/nested-n_m/node_modules/.gitkeep +0 -0
  134. package/test/fast/Unit tests/mocks/project_dirs/nested-pkg/a/b/c/d/.gitkeep +0 -0
  135. package/test/fast/Unit tests/mocks/project_dirs/nested-pkg/package.json +0 -0
  136. package/test/fast/Unit tests/mocks/project_dirs/no-nesting-both/node_modules/.gitkeep +0 -0
  137. package/test/fast/Unit tests/mocks/project_dirs/no-nesting-both/package.json +0 -0
  138. package/test/fast/Unit tests/mocks/project_dirs/no-nesting-n_m/node_modules/.gitkeep +0 -0
  139. package/test/fast/Unit tests/mocks/project_dirs/no-nesting-pkg/package.json +0 -0
  140. package/test/fast/Unit tests/nvm ls-remote +73 -0
  141. package/test/fast/Unit tests/nvm set_colors +52 -0
  142. package/test/fast/Unit tests/nvm version-remote +51 -0
  143. package/test/fast/Unit tests/nvm_add_iojs_prefix +9 -0
  144. package/test/fast/Unit tests/nvm_alias +32 -0
  145. package/test/fast/Unit tests/nvm_alias LTS-N +36 -0
  146. package/test/fast/Unit tests/nvm_alias_path +7 -0
  147. package/test/fast/Unit tests/nvm_change_path +57 -0
  148. package/test/fast/Unit tests/nvm_check_for_help +9 -0
  149. package/test/fast/Unit tests/nvm_clang_version +62 -0
  150. package/test/fast/Unit tests/nvm_command_info +58 -0
  151. package/test/fast/Unit tests/nvm_compare_checksum +72 -0
  152. package/test/fast/Unit tests/nvm_compute_checksum +23 -0
  153. package/test/fast/Unit tests/nvm_curl_libz_support +39 -0
  154. package/test/fast/Unit tests/nvm_curl_use_compression +38 -0
  155. package/test/fast/Unit tests/nvm_curl_version +32 -0
  156. package/test/fast/Unit tests/nvm_die_on_prefix +192 -0
  157. package/test/fast/Unit tests/nvm_download +18 -0
  158. package/test/fast/Unit tests/nvm_ensure_default_set +15 -0
  159. package/test/fast/Unit tests/nvm_ensure_version_installed +63 -0
  160. package/test/fast/Unit tests/nvm_ensure_version_prefix +12 -0
  161. package/test/fast/Unit tests/nvm_find_project_dir +33 -0
  162. package/test/fast/Unit tests/nvm_find_up +25 -0
  163. package/test/fast/Unit tests/nvm_format_version +20 -0
  164. package/test/fast/Unit tests/nvm_get_arch +84 -0
  165. package/test/fast/Unit tests/nvm_get_artifact_compression +22 -0
  166. package/test/fast/Unit tests/nvm_get_checksum +45 -0
  167. package/test/fast/Unit tests/nvm_get_checksum_alg +20 -0
  168. package/test/fast/Unit tests/nvm_get_checksum_binary +20 -0
  169. package/test/fast/Unit tests/nvm_get_colors +79 -0
  170. package/test/fast/Unit tests/nvm_get_default_packages +92 -0
  171. package/test/fast/Unit tests/nvm_get_download_slug +111 -0
  172. package/test/fast/Unit tests/nvm_get_latest missing curl or wget +20 -0
  173. package/test/fast/Unit tests/nvm_get_minor_version +45 -0
  174. package/test/fast/Unit tests/nvm_get_mirror +32 -0
  175. package/test/fast/Unit tests/nvm_has +11 -0
  176. package/test/fast/Unit tests/nvm_has_non_aliased +24 -0
  177. package/test/fast/Unit tests/nvm_has_solaris_binary +32 -0
  178. package/test/fast/Unit tests/nvm_has_system_iojs +27 -0
  179. package/test/fast/Unit tests/nvm_has_system_node +27 -0
  180. package/test/fast/Unit tests/nvm_install_binary_extract +59 -0
  181. package/test/fast/Unit tests/nvm_install_binary_nosource +30 -0
  182. package/test/fast/Unit tests/nvm_install_latest_npm +58 -0
  183. package/test/fast/Unit tests/nvm_install_no_progress_bar +43 -0
  184. package/test/fast/Unit tests/nvm_iojs_prefix +7 -0
  185. package/test/fast/Unit tests/nvm_iojs_version_has_solaris_binary +17 -0
  186. package/test/fast/Unit tests/nvm_is_alias +20 -0
  187. package/test/fast/Unit tests/nvm_is_iojs_version +10 -0
  188. package/test/fast/Unit tests/nvm_is_merged_node_version +10 -0
  189. package/test/fast/Unit tests/nvm_is_natural_num +17 -0
  190. package/test/fast/Unit tests/nvm_is_valid_version +13 -0
  191. package/test/fast/Unit tests/nvm_is_version_installed +54 -0
  192. package/test/fast/Unit tests/nvm_ls_current +39 -0
  193. package/test/fast/Unit tests/nvm_ls_remote +86 -0
  194. package/test/fast/Unit tests/nvm_ls_remote LTS aliases +49 -0
  195. package/test/fast/Unit tests/nvm_ls_remote nightly +65 -0
  196. package/test/fast/Unit tests/nvm_ls_remote_iojs +37 -0
  197. package/test/fast/Unit tests/nvm_make_alias +19 -0
  198. package/test/fast/Unit tests/nvm_node_prefix +7 -0
  199. package/test/fast/Unit tests/nvm_node_version_has_solaris_binary +33 -0
  200. package/test/fast/Unit tests/nvm_normalize_lts +38 -0
  201. package/test/fast/Unit tests/nvm_num_version_groups +24 -0
  202. package/test/fast/Unit tests/nvm_print_alias_path +44 -0
  203. package/test/fast/Unit tests/nvm_print_color_code +20 -0
  204. package/test/fast/Unit tests/nvm_print_default_alias +38 -0
  205. package/test/fast/Unit tests/nvm_print_implicit_alias errors +25 -0
  206. package/test/fast/Unit tests/nvm_print_implicit_alias success +106 -0
  207. package/test/fast/Unit tests/nvm_print_npm_version +28 -0
  208. package/test/fast/Unit tests/nvm_remote_version +78 -0
  209. package/test/fast/Unit tests/nvm_remote_versions +77 -0
  210. package/test/fast/Unit tests/nvm_stdout_is_terminal +32 -0
  211. package/test/fast/Unit tests/nvm_strip_iojs_prefix +10 -0
  212. package/test/fast/Unit tests/nvm_strip_path +18 -0
  213. package/test/fast/Unit tests/nvm_supports_xz +42 -0
  214. package/test/fast/Unit tests/nvm_tree_contains_path +31 -0
  215. package/test/fast/Unit tests/nvm_use_if_needed +24 -0
  216. package/test/fast/Unit tests/nvm_validate_implicit_alias +20 -0
  217. package/test/fast/Unit tests/nvm_version +48 -0
  218. package/test/fast/Unit tests/nvm_version_dir +11 -0
  219. package/test/fast/Unit tests/nvm_version_greater +15 -0
  220. package/test/fast/Unit tests/nvm_version_path +14 -0
  221. package/test/fast/nvm should remove the last trailing slash in $NVM_DIR +18 -0
  222. package/test/fast/setup +14 -0
  223. package/test/fast/setup_dir +18 -0
  224. package/test/fast/teardown +12 -0
  225. package/test/fast/teardown_dir +15 -0
  226. package/test/install_script/install_nvm_from_git +129 -0
  227. package/test/install_script/nvm_check_global_modules +63 -0
  228. package/test/install_script/nvm_detect_profile +118 -0
  229. package/test/install_script/nvm_do_install +8 -0
  230. package/test/install_script/nvm_download +18 -0
  231. package/test/install_script/nvm_install_dir +25 -0
  232. package/test/install_script/nvm_install_with_aliased_dot +24 -0
  233. package/test/install_script/nvm_install_with_node_version +12 -0
  234. package/test/install_script/nvm_profile_is_bash_or_zsh +13 -0
  235. package/test/install_script/nvm_reset +38 -0
  236. package/test/install_script/nvm_source +43 -0
  237. package/test/installation_iojs/install already installed uses it +25 -0
  238. package/test/installation_iojs/install from binary +22 -0
  239. package/test/installation_iojs/install from source +22 -0
  240. package/test/installation_iojs/install two versions and use the latest one +25 -0
  241. package/test/installation_iojs/install version specified in .nvmrc from binary +22 -0
  242. package/test/installation_iojs/install version specified in .nvmrc from source +23 -0
  243. package/test/installation_iojs/install while reinstalling packages +31 -0
  244. package/test/installation_iojs/nvm install v1 works +19 -0
  245. package/test/installation_iojs/setup_dir +5 -0
  246. package/test/installation_iojs/teardown_dir +16 -0
  247. package/test/installation_node/default-packages +123 -0
  248. package/test/installation_node/install LTS +29 -0
  249. package/test/installation_node/install already installed uses it +23 -0
  250. package/test/installation_node/install from binary +23 -0
  251. package/test/installation_node/install from binary with binary flag set +37 -0
  252. package/test/installation_node/install from source +29 -0
  253. package/test/installation_node/install from source implicitly +23 -0
  254. package/test/installation_node/install from source with thread parameter +33 -0
  255. package/test/installation_node/install from source without V8 snapshot for ARM +25 -0
  256. package/test/installation_node/install hook +45 -0
  257. package/test/installation_node/install latest npm +51 -0
  258. package/test/installation_node/install two versions and use the latest one +24 -0
  259. package/test/installation_node/install version specified in .nvmrc from binary +20 -0
  260. package/test/installation_node/install version specified in .nvmrc from source +20 -0
  261. package/test/installation_node/install while reinstalling packages +46 -0
  262. package/test/installation_node/install with --alias +11 -0
  263. package/test/installation_node/install with --default +11 -0
  264. package/test/installation_node/install with --latest-npm +12 -0
  265. package/test/installation_node/setup_dir +5 -0
  266. package/test/installation_node/teardown_dir +18 -0
  267. package/test/mocks/isainfo_amd64 +5 -0
  268. package/test/mocks/isainfo_x86 +5 -0
  269. package/test/mocks/pkg_info_amd64 +4 -0
  270. package/test/mocks/pkg_info_fail +1 -0
  271. package/test/mocks/pkg_info_x86 +1 -0
  272. package/test/mocks/uname_osx_amd64 +5 -0
  273. package/test/mocks/uname_osx_x86 +5 -0
  274. package/test/mocks/uname_smartos_amd64 +5 -0
  275. package/test/mocks/uname_smartos_x86 +5 -0
  276. package/test/slow/Running 'nvm current' should display current nvm environment +9 -0
  277. package/test/slow/node 0.6.21 should install 0.6.21-pre +11 -0
  278. package/test/slow/nvm exec/Preamble works and respects 'silent' flag +30 -0
  279. package/test/slow/nvm exec/Running 'nvm exec --lts' should work +18 -0
  280. package/test/slow/nvm exec/Running 'nvm exec 0.x' should work +15 -0
  281. package/test/slow/nvm exec/Running 'nvm exec' should pick up .nvmrc version +16 -0
  282. package/test/slow/nvm exec/Running 'nvm exec' with help should not parse +9 -0
  283. package/test/slow/nvm exec/setup_dir +10 -0
  284. package/test/slow/nvm exec/teardown_dir +13 -0
  285. package/test/slow/nvm reinstall-packages/Running 'nvm copy-packages $(nvm ls current)' should error out +17 -0
  286. package/test/slow/nvm reinstall-packages/setup_dir +11 -0
  287. package/test/slow/nvm reinstall-packages/should work as expected +31 -0
  288. package/test/slow/nvm reinstall-packages/teardown_dir +13 -0
  289. package/test/slow/nvm reinstall-packages/test-npmlink/index.js +2 -0
  290. package/test/slow/nvm reinstall-packages/test-npmlink/package.json +10 -0
  291. package/test/slow/nvm reinstall-packages/works with no installs +18 -0
  292. package/test/slow/nvm run/Running 'nvm run --harmony --version' should work +8 -0
  293. package/test/slow/nvm run/Running 'nvm run --lts' should work +15 -0
  294. package/test/slow/nvm run/Running 'nvm run 0.x' should error out sensibly when 0.x is not installed +16 -0
  295. package/test/slow/nvm run/Running 'nvm run 0.x' should work +8 -0
  296. package/test/slow/nvm run/Running 'nvm run' should pick up .nvmrc version +12 -0
  297. package/test/slow/nvm run/setup_dir +11 -0
  298. package/test/slow/nvm run/teardown_dir +14 -0
  299. package/test/slow/nvm uninstall/Running 'nvm uninstall 0.12.6' uninstalls v0.12.6 +33 -0
  300. package/test/slow/nvm uninstall/Running 'nvm uninstall' with incorrect file permissions fails nicely +30 -0
  301. package/test/slow/nvm uninstall/setup_dir +4 -0
  302. package/test/slow/nvm uninstall/teardown_dir +5 -0
  303. package/test/slow/nvm use/Running 'nvm use --lts' uses latest LTS version +22 -0
  304. package/test/slow/nvm use/Running 'nvm use --lts=foo' uses latest 'foo' LTS version +22 -0
  305. package/test/slow/nvm use/Running 'nvm use iojs' uses latest io.js version +20 -0
  306. package/test/slow/nvm use/Running 'nvm use node --silent' doesn't print anything +13 -0
  307. package/test/slow/nvm use/Running 'nvm use node' uses latest stable node version +20 -0
  308. package/test/slow/nvm use/Running 'nvm use v1.0.0' uses iojs-v1.0.0 iojs version +20 -0
  309. package/test/slow/nvm use/Running 'nvm use' calls 'nvm_die_on_prefix' +22 -0
  310. package/test/slow/nvm use/setup_dir +23 -0
  311. package/test/slow/nvm use/teardown_dir +22 -0
  312. package/test/slow/nvm_get_latest/nvm_get_latest +101 -0
  313. package/test/slow/nvm_get_latest/nvm_get_latest failed redirect +25 -0
  314. package/test/sourcing/Sourcing nvm.sh global alias bug +30 -0
  315. package/test/sourcing/Sourcing nvm.sh should keep version if one is active +20 -0
  316. package/test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded +28 -0
  317. package/test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it +27 -0
  318. package/test/sourcing/Sourcing nvm.sh with --install should install the default +32 -0
  319. package/test/sourcing/Sourcing nvm.sh with --no-use should not use anything +31 -0
  320. package/test/sourcing/Sourcing nvm.sh with no default should return 0 +11 -0
  321. package/test/sourcing/setup +14 -0
  322. package/test/sourcing/teardown +7 -0
  323. package/update_test_mocks.sh +59 -0
@@ -0,0 +1,106 @@
1
+ # Code of Conduct
2
+
3
+ `nvm`, as a member project of the OpenJS Foundation, uses [Contributor Covenant v1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct) as their code of conduct. The full text is included [below](#contributor-covenant-code-of-conduct) in English, and translations are available from the Contributor Covenant organisation:
4
+
5
+ - [contributor-covenant.org/translations](https://www.contributor-covenant.org/translations)
6
+ - [github.com/ContributorCovenant](https://github.com/ContributorCovenant/contributor_covenant/tree/release/content/version/1/4)
7
+
8
+ Refer to the sections on reporting and escalation in this document for the specific emails that can be used to report and escalate issues.
9
+
10
+ ## Reporting
11
+
12
+ ### Project Spaces
13
+
14
+ For reporting issues in spaces related to `nvm` please use the email `ljharb@gmail.com`. `nvm` handles CoC issues related to the spaces that it maintains. Projects maintainers commit to:
15
+
16
+ - maintain the confidentiality with regard to the reporter of an incident
17
+ - to participate in the path for escalation as outlined in
18
+ the section on Escalation when required.
19
+
20
+ ### Foundation Spaces
21
+
22
+ For reporting issues in spaces managed by the OpenJS Foundation, for example, repositories within the OpenJS organization, use the email `report@lists.openjsf.org`. The Cross Project Council (CPC) is responsible for managing these reports and commits to:
23
+
24
+ - maintain the confidentiality with regard to the reporter of an incident
25
+ - to participate in the path for escalation as outlined in
26
+ the section on Escalation when required.
27
+
28
+ ## Escalation
29
+
30
+ The OpenJS Foundation maintains a Code of Conduct Panel (CoCP). This is a foundation-wide team established to manage escalation when a reporter believes that a report to a member project or the CPC has not been properly handled. In order to escalate to the CoCP send an email to `coc-escalation@lists.openjsf.org`.
31
+
32
+ For more information, refer to the full [Code of Conduct governance document](https://github.com/openjs-foundation/cross-project-council/blob/master/CODE_OF_CONDUCT.md).
33
+
34
+ ---
35
+
36
+ ## Contributor Covenant Code of Conduct
37
+
38
+ ### Our Pledge
39
+
40
+ In the interest of fostering an open and welcoming environment, we as
41
+ contributors and maintainers pledge to making participation in our project and
42
+ our community a harassment-free experience for everyone, regardless of age, body
43
+ size, disability, ethnicity, gender identity and expression, level of experience,
44
+ nationality, personal appearance, race, religion, or sexual identity and
45
+ orientation.
46
+
47
+ ### Our Standards
48
+
49
+ Examples of behavior that contributes to creating a positive environment include:
50
+
51
+ * Using welcoming and inclusive language
52
+ * Being respectful of differing viewpoints and experiences
53
+ * Gracefully accepting constructive criticism
54
+ * Focusing on what is best for the community
55
+ * Showing empathy towards other community members
56
+
57
+ Examples of unacceptable behavior by participants include:
58
+
59
+ * The use of sexualized language or imagery and unwelcome sexual attention or advances
60
+ * Trolling, insulting/derogatory comments, and personal or political attacks
61
+ * Public or private harassment
62
+ * Publishing others' private information, such as a physical or electronic address, without explicit permission
63
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
64
+
65
+ ### Our Responsibilities
66
+
67
+ Project maintainers are responsible for clarifying the standards of acceptable
68
+ behavior and are expected to take appropriate and fair corrective action in
69
+ response to any instances of unacceptable behavior.
70
+
71
+ Project maintainers have the right and responsibility to remove, edit, or
72
+ reject comments, commits, code, wiki edits, issues, and other contributions
73
+ that are not aligned to this Code of Conduct, or to ban temporarily or
74
+ permanently any contributor for other behaviors that they deem inappropriate,
75
+ threatening, offensive, or harmful.
76
+
77
+ ### Scope
78
+
79
+ This Code of Conduct applies both within project spaces and in public spaces
80
+ when an individual is representing the project or its community. Examples of
81
+ representing a project or community include using an official project e-mail
82
+ address, posting via an official social media account, or acting as an appointed
83
+ representative at an online or offline event. Representation of a project may be
84
+ further defined and clarified by project maintainers.
85
+
86
+ ### Enforcement
87
+
88
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
89
+ reported by contacting the project team at the email addresses listed above in
90
+ the [Reporting](#reporting) and [Escalation](#escalation) sections. All
91
+ complaints will be reviewed and investigated and will result in a response that
92
+ is deemed necessary and appropriate to the circumstances. The project team is
93
+ obligated to maintain confidentiality with regard to the reporter of an
94
+ incident. Further details of specific enforcement policies may be posted
95
+ separately.
96
+
97
+ Project maintainers who do not follow or enforce the Code of Conduct in good
98
+ faith may face temporary or permanent repercussions as determined by other
99
+ members of the project's leadership.
100
+
101
+ ## Attribution
102
+
103
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
104
+ available at [https://www.contributor-covenant.org/version/1/4/code-of-conduct/](https://www.contributor-covenant.org/version/1/4/code-of-conduct/)
105
+
106
+ [homepage]: https://www.contributor-covenant.org
@@ -0,0 +1,21 @@
1
+ Thanks for contributing to `nvm`!
2
+
3
+ We love pull requests and issues, they're our favorite.
4
+
5
+ However, before submitting, please review the following:
6
+
7
+ For bug reports:
8
+
9
+ - Please make sure the bug is reproducible, and give us the steps to reproduce it, so that we can dig into the problem.
10
+ - Please give us as much detail as possible about your environment, so we can more easily confirm the problem.
11
+
12
+ For pull requests:
13
+
14
+ - Please include tests. Changes with tests will be merged very quickly.
15
+ - Please manually confirm that your changes work in `bash`, `sh`/`dash`, `ksh`, and `zsh`. Fast tests do run in these shells, but it's nice to manually verify also.
16
+ - Please maintain consistent whitespace - 2-space indentation, trailing newlines in all files, etc.
17
+ - Any time you make a change to your PR, please rebase freshly on top of master. Nobody likes merge commits.
18
+
19
+ Even if you don't have all of these items covered, please still feel free to submit a PR/issue! Someone else may be inspired and volunteer to complete it for you.
20
+
21
+ Thanks again!
package/Dockerfile ADDED
@@ -0,0 +1,111 @@
1
+ # Dockerized nvm development environment
2
+ #
3
+ # This Dockerfile is for building nvm development environment only,
4
+ # not for any distribution/production usage.
5
+ #
6
+ # Please note that it'll use about 1.2 GB disk space and about 15 minutes to
7
+ # build this image, it depends on your hardware.
8
+
9
+ FROM ubuntu:18.04
10
+ LABEL maintainer="Peter Dave Hello <hsu@peterdavehello.org>"
11
+ LABEL name="nvm-dev-env"
12
+ LABEL version="latest"
13
+
14
+ # Set the SHELL to bash with pipefail option
15
+ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
16
+
17
+ # Prevent dialog during apt install
18
+ ENV DEBIAN_FRONTEND noninteractive
19
+
20
+ # ShellCheck version
21
+ ENV SHELLCHECK_VERSION=0.7.0
22
+
23
+ # Pick a Ubuntu apt mirror site for better speed
24
+ # ref: https://launchpad.net/ubuntu/+archivemirrors
25
+ ENV UBUNTU_APT_SITE ubuntu.cs.utah.edu
26
+
27
+ # Disable src package source
28
+ RUN sed -i 's/^deb-src\ /\#deb-src\ /g' /etc/apt/sources.list
29
+
30
+ # Replace origin apt package site with the mirror site
31
+ RUN sed -E -i "s/([a-z]+.)?archive.ubuntu.com/$UBUNTU_APT_SITE/g" /etc/apt/sources.list
32
+ RUN sed -i "s/security.ubuntu.com/$UBUNTU_APT_SITE/g" /etc/apt/sources.list
33
+
34
+ # Install apt packages
35
+ RUN apt update && \
36
+ apt upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" && \
37
+ apt install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \
38
+ coreutils \
39
+ util-linux \
40
+ bsdutils \
41
+ file \
42
+ openssl \
43
+ libssl-dev \
44
+ locales \
45
+ ca-certificates \
46
+ ssh \
47
+ wget \
48
+ patch \
49
+ sudo \
50
+ htop \
51
+ dstat \
52
+ vim \
53
+ tmux \
54
+ curl \
55
+ git \
56
+ jq \
57
+ zsh \
58
+ ksh \
59
+ gcc-4.8 \
60
+ g++-4.8 \
61
+ xz-utils \
62
+ build-essential \
63
+ bash-completion && \
64
+ apt-get clean
65
+
66
+ RUN wget https://github.com/koalaman/shellcheck/releases/download/v$SHELLCHECK_VERSION/shellcheck-v$SHELLCHECK_VERSION.linux.x86_64.tar.xz -O- | \
67
+ tar xJvf - shellcheck-v$SHELLCHECK_VERSION/shellcheck && \
68
+ mv shellcheck-v$SHELLCHECK_VERSION/shellcheck /bin && \
69
+ rmdir shellcheck-v$SHELLCHECK_VERSION
70
+ RUN shellcheck -V
71
+
72
+ # Set locale
73
+ RUN locale-gen en_US.UTF-8
74
+
75
+ # Print tool versions
76
+ RUN bash --version | head -n 1
77
+ RUN zsh --version
78
+ RUN ksh --version || true
79
+ RUN dpkg -s dash | grep ^Version | awk '{print $2}'
80
+ RUN git --version
81
+ RUN curl --version
82
+ RUN wget --version
83
+
84
+ # Add user "nvm" as non-root user
85
+ RUN useradd -ms /bin/bash nvm
86
+
87
+ # Copy and set permission for nvm directory
88
+ COPY . /home/nvm/.nvm/
89
+ RUN chown nvm:nvm -R "home/nvm/.nvm"
90
+
91
+ # Set sudoer for "nvm"
92
+ RUN echo 'nvm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
93
+
94
+ # Switch to user "nvm" from now
95
+ USER nvm
96
+
97
+ # nvm
98
+ RUN echo 'export NVM_DIR="$HOME/.nvm"' >> "$HOME/.bashrc"
99
+ RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "$HOME/.bashrc"
100
+ RUN echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> "$HOME/.bashrc"
101
+
102
+ # nodejs and tools
103
+ RUN bash -c 'source $HOME/.nvm/nvm.sh && \
104
+ nvm install node && \
105
+ npm install -g doctoc urchin eclint dockerfile_lint && \
106
+ npm install --prefix "$HOME/.nvm/"'
107
+
108
+ # Set WORKDIR to nvm directory
109
+ WORKDIR /home/nvm/.nvm
110
+
111
+ ENTRYPOINT ["/bin/bash"]
package/GOVERNANCE.md ADDED
@@ -0,0 +1,10 @@
1
+ # `nvm` Project Governance
2
+
3
+ ## Maintainers
4
+ - [@ljharb](https://github.com/ljharb)
5
+
6
+ Maintainers are responsible for issue/PR triage, feature additions, maintenance, bugfixes, security fixes, releases, promoting existing contributors to maintainers, managing repo and CI configuration, etc.
7
+
8
+ ## Contributors
9
+
10
+ Anyone who contributes code or content or time, via issues or pull requests or otherwise. Contributors do not have any additional permissions on the project.
package/LICENSE.md ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2010 Tim Caswell
4
+
5
+ Copyright (c) 2014 Jordan Harband
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
8
+ this software and associated documentation files (the "Software"), to deal in
9
+ the Software without restriction, including without limitation the rights to
10
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11
+ the Software, and to permit persons to whom the Software is furnished to do so,
12
+ subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/Makefile ADDED
@@ -0,0 +1,85 @@
1
+ # Since we rely on paths relative to the makefile location, abort if make isn't being run from there.
2
+ $(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in))
3
+ # Note: With Travis CI:
4
+ # - the path to urchin is passed via the command line.
5
+ # - the other utilities are NOT needed, so we skip the test for their existence.
6
+ URCHIN := urchin
7
+ ifeq ($(findstring /,$(URCHIN)),) # urchin path was NOT passed in.
8
+ # Add the local npm packages' bin folder to the PATH, so that `make` can find them, when invoked directly.
9
+ # Note that rather than using `$(npm bin)` the 'node_modules/.bin' path component is hard-coded, so that invocation works even from an environment
10
+ # where npm is (temporarily) unavailable due to having deactivated an nvm instance loaded into the calling shell in order to avoid interference with tests.
11
+ export PATH := $(shell printf '%s' "$$PWD/node_modules/.bin:$$PATH")
12
+ # The list of all supporting utilities, installed with `npm install`.
13
+ UTILS := $(URCHIN) replace semver
14
+ # Make sure that all required utilities can be located.
15
+ UTIL_CHECK := $(or $(shell PATH="$(PATH)" which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to run `npm install` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS)))
16
+ endif
17
+ # The files that need updating when incrementing the version number.
18
+ VERSIONED_FILES := nvm.sh install.sh README.md package.json
19
+ # Define all shells to test with. Can be overridden with `make SHELLS=... <target>`.
20
+ SHELLS := sh bash dash zsh # ksh (#574)
21
+ # Generate 'test-<shell>' target names from specified shells.
22
+ # The embedded shell names are extracted on demand inside the recipes.
23
+ SHELL_TARGETS := $(addprefix test-,$(SHELLS))
24
+ # Define the default test suite(s). This can be overridden with `make TEST_SUITE=<...> <target>`.
25
+ # Test suites are the names of subfolders of './test'.
26
+ TEST_SUITE := $(shell find ./test/* -type d -prune -exec basename {} \;)
27
+
28
+
29
+ # Default target (by virtue of being the first non '.'-prefixed in the file).
30
+ .PHONY: _no-target-specified
31
+ _no-target-specified:
32
+ $(error Please specify the target to make - `make list` shows targets. Alternatively, use `npm test` to run the default tests; `npm run` shows all tests)
33
+
34
+ # Lists all targets defined in this makefile.
35
+ .PHONY: list
36
+ list:
37
+ @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | sort
38
+
39
+ # Set of test-<shell> targets; each runs the specified test suites for a single shell.
40
+ # Note that preexisting NVM_* variables are unset to avoid interfering with tests, except when running the Travis tests (where NVM_DIR must be passed in and the env. is assumed to be pristine).
41
+ .PHONY: $(SHELL_TARGETS)
42
+ $(SHELL_TARGETS):
43
+ @shell='$@'; shell=$${shell##*-}; which "$$shell" >/dev/null || { printf '\033[0;31m%s\033[0m\n' "WARNING: Cannot test with shell '$$shell': not found." >&2; exit 0; } && \
44
+ printf '\n\033[0;34m%s\033[0m\n' "Running tests in $$shell"; \
45
+ [ -z "$$TRAVIS_BUILD_DIR" ] && for v in $$(set | awk -F'=' '$$1 ~ "^NVM_" { print $$1 }'); do unset $$v; done && unset v; \
46
+ for suite in $(TEST_SUITE); do $(URCHIN) -f -s $$shell test/$$suite || exit; done
47
+
48
+ # All-tests target: invokes the specified test suites for ALL shells defined in $(SHELLS).
49
+ .PHONY: test
50
+ test: $(SHELL_TARGETS)
51
+
52
+ .PHONY: _ensure-tag
53
+ _ensure-tag:
54
+ ifndef TAG
55
+ $(error Please invoke with `make TAG=<new-version> release`, where <new-version> is either an increment specifier (patch, minor, major, prepatch, preminor, premajor, prerelease), or an explicit major.minor.patch version number)
56
+ endif
57
+
58
+ # Ensures there are version tags in repository
59
+ .PHONY: _ensure-current-version
60
+
61
+ _ensure-current-version:
62
+ ifeq ($(shell git tag),$(printf ''))
63
+ @git fetch --tags
64
+ endif
65
+
66
+ # Ensures that the git workspace is clean.
67
+ .PHONY: _ensure-clean
68
+ _ensure-clean:
69
+ @[ -z "$$(git status --porcelain --untracked-files=no || echo err)" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; }
70
+
71
+ # Makes a release; invoke with `make TAG=<versionOrIncrementSpec> release`.
72
+ .PHONY: release
73
+ release: _ensure-tag _ensure-clean _ensure-current-version
74
+ @old_ver=`git describe --abbrev=0 --tags --match 'v[0-9]*.[0-9]*.[0-9]*'` || { echo "Failed to determine current version." >&2; exit 1; }; old_ver=$${old_ver#v}; \
75
+ new_ver=`echo "$(TAG)" | sed 's/^v//'`; new_ver=$${new_ver:-patch}; \
76
+ if printf "$$new_ver" | grep -q '^[0-9]'; then \
77
+ semver "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be major.minor.patch' >&2; exit 2; }; \
78
+ semver -r "> $$old_ver" "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be HIGHER than current one.' >&2; exit 2; } \
79
+ else \
80
+ new_ver=`semver -i "$$new_ver" "$$old_ver"` || { echo 'Invalid version-increment specifier: $(TAG)' >&2; exit 2; } \
81
+ fi; \
82
+ printf "=== Bumping version **$$old_ver** to **$$new_ver** before committing and tagging:\n=== TYPE 'proceed' TO PROCEED, anything else to abort: " && read response && [ "$$response" = 'proceed' ] || { echo 'Aborted.' >&2; exit 2; }; \
83
+ replace "$$old_ver" "$$new_ver" $(VERSIONED_FILES) && \
84
+ git commit -m "v$$new_ver" $(VERSIONED_FILES) && \
85
+ git tag -a "v$$new_ver"
@@ -0,0 +1,49 @@
1
+ # `nvm` Charter
2
+
3
+ nvm is a version manager for Node.js, designed to be installed per-user, and invoked per-shell. nvm works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms: unix, macOS, and Windows WSL.
4
+
5
+ ## Section 0: Guiding Principles
6
+
7
+ The `nvm` project is part of the [OpenJS Foundation][openjs foundation], which operates transparently, openly, collaboratively, and ethically. Project proposals, timelines, and status must not merely be open, but also easily visible to outsiders.
8
+
9
+ ## Section 1: Scope
10
+
11
+ `nvm` is a node version manager, focused on making it easy to install and manage multiple Node.js versions. Any features related to managing the installation and removal of Node.js on any node-supported platform are potentially in scope.
12
+
13
+ ## Section 2: Relationship with OpenJS Foundation CPC.
14
+
15
+ Technical leadership for the projects within the [OpenJS Foundation][openjs foundation] is delegated to the projects through their project charters by the [OpenJS Foundation Cross-Project Council](https://openjsf.org/about/governance/) (CPC). In the case of the `nvm` project, it is delegated to the [`nvm` Maintainers](README.md#maintainers) (the “Maintainers”). The OpenJS Foundation's business leadership is the Board of Directors (the “Board”).
16
+
17
+ This `nvm` Charter reflects a carefully constructed balanced role for the Maintainers and the CPC in the governance of the OpenJS Foundation. The charter amendment process is for the Maintainers to propose changes using simple majority of the full Maintainers, the proposed changes being subject to review and approval by the CPC. The CPC may additionally make amendments to the project charter at any time, though the CPC will not interfere with day-to-day discussions, votes or meetings of the Maintainers.
18
+
19
+ ### 2.1 Other Formal Project Relationships
20
+
21
+ Section Intentionally Left Blank
22
+
23
+ ## Section 3: `nvm`'s Maintainers Governing Body
24
+
25
+ `nvm` is governed by its [maintainers](README.md#maintainers).
26
+
27
+ ## Section 4: Roles & Responsibilities
28
+
29
+ The roles and responsibilities of `nvm`'s Maintainers are described in [GOVERNANCE.md](./GOVERNANCE.md).
30
+
31
+ ### Section 4.1 Project Operations & Management
32
+
33
+ Section Intentionally Left Blank
34
+
35
+ ### Section 4.2: Decision-making, Voting, and/or Elections
36
+
37
+ Section Intentionally Left Blank
38
+
39
+ ### Section 4.3: Other Project Roles
40
+
41
+ Section Intentionally Left Blank
42
+
43
+ ## Section 5: Definitions
44
+
45
+ - *Contributors*: contribute code or other artifacts, but do not have the right to commit to the codebase. Contributors work with the project’s maintainers to have code committed to the code base. A Contributor may be promoted to a Maintainer by the Maintainers. Contributors should rarely be encumbered by the Maintainers and never by the CPC or OpenJS Foundation Board.
46
+
47
+ - *Maintainers*: Contributors with any kind of decision-making authority in the project.
48
+
49
+ [openjs foundation]: https://openjsf.org