pax_global_header 0000666 0000000 0000000 00000000064 14520340062 0014506 g ustar 00root root 0000000 0000000 52 comment=0d9f8a9f9a76c812b4823210e3de718b578410b7
envinfo-7.11.0/ 0000775 0000000 0000000 00000000000 14520340062 0013240 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/.all-contributorsrc 0000664 0000000 0000000 00000006223 14520340062 0017074 0 ustar 00root root 0000000 0000000 {
"projectName": "envinfo",
"projectOwner": "tabrindle",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "tabrindle",
"name": "Trevor Brindle",
"avatar_url": "https://avatars1.githubusercontent.com/u/2925048?v=4",
"profile": "http://trevorbrindle.com",
"contributions": [
"question",
"blog",
"bug",
"code",
"doc",
"example",
"ideas",
"review",
"talk",
"test"
]
},
{
"login": "GantMan",
"name": "Gant Laborde",
"avatar_url": "https://avatars0.githubusercontent.com/u/997157?v=4",
"profile": "http://gantlaborde.com/",
"contributions": [
"blog",
"bug",
"code",
"ideas"
]
},
{
"login": "antonfisher",
"name": "Anton Fisher",
"avatar_url": "https://avatars1.githubusercontent.com/u/599352?v=4",
"profile": "http://antonfisher.com",
"contributions": [
"bug",
"code"
]
},
{
"login": "ahmadawais",
"name": "Ahmad Awais β‘οΈ",
"avatar_url": "https://avatars1.githubusercontent.com/u/960133?v=4",
"profile": "https://AhmadAwais.com/",
"contributions": [
"bug",
"code"
]
},
{
"login": "LEQADA",
"name": "Hasan",
"avatar_url": "https://avatars2.githubusercontent.com/u/9251453?v=4",
"profile": "https://github.com/LEQADA",
"contributions": [
"bug",
"code"
]
},
{
"login": "ErnestoR",
"name": "Ernesto RamΓrez",
"avatar_url": "https://avatars3.githubusercontent.com/u/1232725?v=4",
"profile": "http://twitter.com/_ErnestoR",
"contributions": [
"bug",
"code"
]
},
{
"login": "gengjiawen",
"name": "Jiawen Geng",
"avatar_url": "https://avatars1.githubusercontent.com/u/3759816?v=4",
"profile": "https://www.gengjiawen.com",
"contributions": [
"bug",
"code",
"ideas",
"test"
]
},
{
"login": "zacanger",
"name": "Zac Anger",
"avatar_url": "https://avatars3.githubusercontent.com/u/12520493?v=4",
"profile": "https://zacanger.com",
"contributions": [
"code",
"bug"
]
},
{
"login": "fson",
"name": "Ville Immonen",
"avatar_url": "https://avatars3.githubusercontent.com/u/497214?v=4",
"profile": "https://twitter.com/VilleImmonen",
"contributions": [
"bug",
"code"
]
},
{
"login": "ibolmo",
"name": "Olmo Maldonado",
"avatar_url": "https://avatars2.githubusercontent.com/u/27246?v=4",
"profile": "http://ibolmo.com",
"contributions": [
"bug",
"code"
]
},
{
"login": "rishabh3112",
"name": "Rishabh Chawla",
"avatar_url": "https://avatars.githubusercontent.com/u/15812317?v=4",
"profile": "https://rishabhchawla.co",
"contributions": [
"bug",
"code"
]
}
]
}
envinfo-7.11.0/.circleci/ 0000775 0000000 0000000 00000000000 14520340062 0015073 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/.circleci/config.yml 0000664 0000000 0000000 00000004275 14520340062 0017073 0 ustar 00root root 0000000 0000000 version: 2
aliases:
- &install-essential
name: Install curl
command: |
apt update && apt install curl build-essential -y
- &setup-nodejs
name: setup nodejs
command: |
curl -sL https://deb.nodesource.com/setup_12.x | bash -
apt-get install -y nodejs
- &link-and-execute
name: Run envinfo
command: |
npm run build
npm link
envinfo
jobs:
node10-test:
working_directory: ~/repo
docker:
- image: node:10
steps:
- checkout
- run: npm install
- run: npm run test
- run: *link-and-execute
alpine-test:
working_directory: ~/repo
docker:
- image: node:alpine
steps:
- checkout
- run: npm install
- run: npm run test
- run: *link-and-execute
ubuntu-test:
working_directory: ~/repo
docker:
- image: ubuntu
steps:
- checkout
- run: *install-essential
- run: *setup-nodejs
- run: npm install
- run: npm run test
- run: *link-and-execute
debian-test:
working_directory: ~/repo
docker:
- image: node:lts
steps:
- checkout
- run: npm install
- run: npm run test
- run: *link-and-execute
centos-test:
working_directory: ~/repo
docker:
- image: centos
steps:
- checkout
- run: yum install curl -y && curl -sL https://rpm.nodesource.com/setup_12.x | bash - && yum install nodejs -y
- run: npm install
- run: npm run test
- run: *link-and-execute
react-native-test:
working_directory: ~/repo
docker:
- image: reactnativecommunity/react-native-android
steps:
- checkout
- run: npm install
- run: npm run test
- run: *link-and-execute
general-test:
working_directory: ~/repo
docker:
- image: gengjiawen/node-build
steps:
- checkout
- run: npm install
- run: npm run test
- run: *link-and-execute
workflows:
version: 2
build_and_test:
jobs:
- node10-test
- ubuntu-test
- alpine-test
- debian-test
- centos-test
- react-native-test
# Workaround for https://github.com/tabrindle/envinfo/issues/104
- general-test
envinfo-7.11.0/.editorconfig 0000664 0000000 0000000 00000000406 14520340062 0015715 0 ustar 00root root 0000000 0000000 # http://editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[Makefile]
indent_style = tab
[*.md]
trim_trailing_whitespace = false
indent_size = 4
envinfo-7.11.0/.eslintrc.js 0000664 0000000 0000000 00000000515 14520340062 0015500 0 ustar 00root root 0000000 0000000 module.exports = {
parser: 'babel-eslint',
env: {
node: true,
es6: true,
jest: true,
},
extends: ['airbnb-base/legacy', 'prettier'],
parserOptions: {
sourceType: 'module',
},
plugins: ['prettier'],
rules: {
'vars-on-top': 0,
'no-param-reassign': 0,
'prettier/prettier': ['error'],
},
};
envinfo-7.11.0/.gitattributes 0000664 0000000 0000000 00000000016 14520340062 0016130 0 ustar 00root root 0000000 0000000 * text eol=lf envinfo-7.11.0/.github/ 0000775 0000000 0000000 00000000000 14520340062 0014600 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/.github/workflows/ 0000775 0000000 0000000 00000000000 14520340062 0016635 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/.github/workflows/node.js.yml 0000664 0000000 0000000 00000002117 14520340062 0020721 0 ustar 00root root 0000000 0000000 # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: yarn
- run: node --unhandled-rejections=strict src/cli.js
build-ubuntu:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: yarn
- run: node --unhandled-rejections=strict src/cli.js
envinfo-7.11.0/.github/workflows/release-please.yml 0000664 0000000 0000000 00000001424 14520340062 0022250 0 ustar 00root root 0000000 0000000 on:
push:
branches:
- main
name: release-please
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: GoogleCloudPlatform/release-please-action@v2
id: release
with:
release-type: node
package-name: envinfo
- uses: actions/checkout@v2
if: ${{ steps.release.outputs.release_created }}
- uses: actions/setup-node@v1
with:
node-version: 16
registry-url: 'https://registry.npmjs.org'
if: ${{ steps.release.outputs.release_created }}
- run: yarn && yarn build
if: ${{ steps.release.outputs.release_created }}
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
if: ${{ steps.release.outputs.release_created }} envinfo-7.11.0/.gitignore 0000664 0000000 0000000 00000000102 14520340062 0015221 0 ustar 00root root 0000000 0000000 node_modules
!__tests__/packages/**/node_modules
.DS_Store
.idea/
envinfo-7.11.0/.prettierrc 0000664 0000000 0000000 00000000111 14520340062 0015415 0 ustar 00root root 0000000 0000000 {
"singleQuote": true,
"printWidth": 100,
"trailingComma": "es5"
}
envinfo-7.11.0/.travis.yml 0000664 0000000 0000000 00000000220 14520340062 0015343 0 ustar 00root root 0000000 0000000 install: yarn install --frozen-lockfile --ignore-engines
language: node_js
node_js:
- "6"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
envinfo-7.11.0/CHANGELOG.md 0000664 0000000 0000000 00000002255 14520340062 0015055 0 ustar 00root root 0000000 0000000 # Changelog
## [7.11.0](https://www.github.com/tabrindle/envinfo/compare/v7.10.0...v7.11.0) (2023-11-01)
### Features
* add bun in binaries ([#240](https://www.github.com/tabrindle/envinfo/issues/240)) ([d7db2a3](https://www.github.com/tabrindle/envinfo/commit/d7db2a3504d4e0fa66c9fda028e895c088cb864b))
### Bug Fixes
* Windows 11 information ([#242](https://www.github.com/tabrindle/envinfo/issues/242)) ([5330fb2](https://www.github.com/tabrindle/envinfo/commit/5330fb2b970e52de8875824fcd739da1be5e2b11))
## [7.10.0](https://www.github.com/tabrindle/envinfo/compare/v7.9.0...v7.10.0) (2023-06-27)
### Features
* add auto release ([#207](https://www.github.com/tabrindle/envinfo/issues/207)) ([fc7585c](https://www.github.com/tabrindle/envinfo/commit/fc7585cf8c7046a03efc056c931ca13561801544))
* add pnpm function in binaries ([#224](https://www.github.com/tabrindle/envinfo/issues/224)) ([60c8db7](https://www.github.com/tabrindle/envinfo/commit/60c8db76804226a057ba3541d31d275c9ac35474))
* add podman to virtualization ([#236](https://www.github.com/tabrindle/envinfo/issues/236)) ([b744694](https://www.github.com/tabrindle/envinfo/commit/b74469472883451dd466a892d92842f3ade5528c))
envinfo-7.11.0/LICENSE 0000664 0000000 0000000 00000002057 14520340062 0014251 0 ustar 00root root 0000000 0000000 MIT License
Copyright (c) 2018 Trevor Brindle
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
envinfo-7.11.0/README.md 0000664 0000000 0000000 00000033350 14520340062 0014523 0 ustar 00root root 0000000 0000000
envinfo generates a report of the common details needed when troubleshooting software issues, such as your operating system, binary versions, browsers, installed languages, and more
[](https://circleci.com/gh/tabrindle/envinfo/tree/master) [](https://travis-ci.org/tabrindle/envinfo) [](https://badge.fury.io/js/envinfo) [](https://www.npmjs.com/package/envinfo) [](https://opensource.org/licenses/MIT)
[](#contributors)
## The problem
- It works on my computer
- "command not found"
- what version of "command" are you running?
- what version of "different command" are you running?
- do you have "insert obscure android sdk version"?
- every github issue reporting template ever:
**Please mention other relevant information such as the browser version, Node.js version, Operating System and programming language.**
## This solution
- Gather all of this information in one spot, quickly, and painlessly.
## Installation
To use as a CLI tool, install this package globally:
```sh
npm install -g envinfo || yarn global add envinfo
```
Or, use without installing with npx:
`npx envinfo`
To use as a library in another project:
```sh
npm install envinfo || yarn add envinfo
```
## CLI Usage
`envinfo` || `npx envinfo`
```bash
System:
OS: macOS Mojave 10.14.5
CPU: (8) x64 Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
Memory: 2.97 GB / 16.00 GB
Shell: 5.3 - /bin/zsh
Binaries:
Node: 8.16.0 - ~/.nvm/versions/node/v8.16.0/bin/node
Yarn: 1.15.2 - ~/.yarn/bin/yarn
npm: 6.9.0 - ~/.nvm/versions/node/v8.16.0/bin/npm
pnpm: 8.7.6 - /usr/local/bin/pnpm
bun: 1.0.2 - /usr/local/bin/bun
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
Cargo: 1.31.0 - ~/.cargo/bin/cargo
CocoaPods: 1.7.3 - /usr/local/bin/pod
Composer: 1.8.6 - /usr/local/bin/composer
Gradle: 5.5 - /usr/local/bin/gradle
Homebrew: 2.1.7 - /usr/local/bin/brew
Maven: 3.6.1 - /usr/local/bin/mvn
pip2: 19.0.3 - /usr/local/bin/pip2
pip3: 19.0.2 - /usr/local/bin/pip3
RubyGems: 2.5.2.3 - /usr/bin/gem
Utilities:
CMake: 3.13.3 - /usr/local/bin/cmake
Make: 3.81 - /usr/bin/make
GCC: 10.14. - /usr/bin/gcc
Git: 2.20.0 - /usr/local/bin/git
Mercurial: 4.5.3 - /usr/bin/hg
Clang: 1001.0.46.4 - /usr/bin/clang
Subversion: 1.10.3 - /usr/bin/svn
Servers:
Apache: 2.4.34 - /usr/sbin/apachectl
Nginx: 1.13.12 - /usr/local/bin/nginx
Virtualization:
Docker: 18.09.1 - /usr/local/bin/docker
Parallels: 13.3.0 - /usr/local/bin/prlctl
VirtualBox: 5.2.20 - /usr/local/bin/vboxmanage
SDKs:
iOS SDK:
Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
Android SDK:
API Levels: 28
Build Tools: 28.0.3
System Images: android-28 | Google Play Intel x86 Atom
IDEs:
Android Studio: 3.2 AI-181.5540.7.32.5056338
Atom: 1.23.3
Emacs: 22.1.1 - /usr/bin/emacs
Nano: 2.0.6 - /usr/bin/nano
VSCode: 1.36.0 - /usr/local/bin/code
Vim: 8.0 - /usr/bin/vim
Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
Languages:
Bash: 4.4.23 - /usr/local/bin/bash
Elixir: 1.6.2 - /usr/local/bin/elixir
Go: 1.11.1 - /usr/local/bin/go
Java: 1.8.0_192 - /usr/bin/javac
Perl: 5.18.4 - /usr/bin/perl
PHP: 7.1.23 - /usr/bin/php
Python: 2.7.16 - /usr/local/bin/python
Python3: 3.7.2 - /usr/local/bin/python3
R: 3.6.0 - /usr/local/bin/R
Ruby: 2.3.7 - /usr/bin/ruby
Rust: 1.16.0 - /Users/tabrindle/.cargo/bin/rustup
Databases:
MongoDB: 3.6.4 - /usr/local/bin/mongo
MySQL: 10.3.10 (MariaDB) - /usr/local/bin/mysql
PostgreSQL: 10.3 - /usr/local/bin/postgres
SQLite: 3.24.0 - /usr/bin/sqlite3
Browsers:
Chrome: 75.0.3770.100
Chrome Canary: 77.0.3847.0
Firefox: 68.0
Firefox Developer Edition: 69.0
Firefox Nightly: 69.0a1
Safari: 12.1.1
Safari Technology Preview: 13.0
npmPackages:
apollo-client: ^2.3.1 => 2.3.1
jest: ^22.2.1 => 22.2.1
...
react: ^16.3.2 => 16.3.2
react-apollo: ^2.1.4 => 2.1.4
run4staged: ^1.1.1 => 1.1.1
solidarity: 2.0.5 => 2.0.5
styled-components: ^3.1.6 => 3.1.6
npmGlobalPackages:
create-react-app: 1.5.2
create-react-native-app: 1.0.0
envinfo: 5.10.0
exp: 49.2.2
gatsby-cli: 1.1.52
npm: 5.6.0
react-native-cli: 2.0.1
solidarity: 2.1.0
typescript: 2.8.1
```
## Programmatic Usage
Envinfo takes a configuration object and returns a Promise that resolves a string (optionally yaml, json or markdown)
```javascript
import envinfo from 'envinfo';
envinfo.run(
{
System: ['OS', 'CPU'],
Binaries: ['Node', 'Yarn', 'npm'],
Browsers: ['Chrome', 'Firefox', 'Safari'],
npmPackages: ['styled-components', 'babel-plugin-styled-components'],
},
{ json: true, showNotFound: true }
).then(env => console.log(env));
```
logs:
```json
{
"System": {
"OS": "macOS High Sierra 10.13",
"CPU": "x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz"
},
"Binaries": {
"Node": {
"version": "8.11.0",
"path": "~/.nvm/versions/node/v8.11.0/bin/node"
},
"Yarn": {
"version": "1.5.1",
"path": "~/.yarn/bin/yarn"
},
"npm": {
"version": "5.6.0",
"path": "~/.nvm/versions/node/v8.11.0/bin/npm"
}
},
"Browsers": {
"Chrome": {
"version": "67.0.3396.62"
},
"Firefox": {
"version": "59.0.2"
},
"Safari": {
"version": "11.0"
}
},
"npmPackages": {
"styled-components": {
"wanted": "^3.2.1",
"installed": "3.2.1"
},
"babel-plugin-styled-components": "Not Found"
}
}
```
All of envinfo's helpers are also exported for use. You can use envinfo as a whole, or just the parts that you need, like this:
```javascript
const envinfo = require('envinfo');
// each helper returns a promise
const node = await envinfo.helpers.getNodeInfo();
// The promises resolve to an array of values: ["Name", "Version", "Path"]
// e.g. ["Node", "10.9.0", "/usr/local/bin/node"]
console.log(`Node: ${node[1]} - ${node[2]}`); // "Node: 10.9.0 - ~/.nvm/versions/node/v8.14.0/bin/node"
```
## CLI Options
```
--system Print general system info such as OS, CPU, Memory and Shell
--browsers Get version numbers of installed web browsers
--SDKs Get platforms, build tools and SDKs of iOS and Android
--IDEs Get version numbers of installed IDEs
--languages Get version numbers of installed languages such as Java, Python, PHP, etc
--binaries Get version numbers of node, npm, watchman, etc
--npmPackages Get version numbers of locally installed npm packages - glob, string, or comma delimited list
--npmGlobalPackages Get version numbers of globally installed npm packages
--duplicates Mark duplicate npm packages inside parentheses eg. (2.1.4)
--fullTree Traverse entire node_modules dependency tree, not just top level
--markdown Print output in markdown format
--json Print output in JSON format
--console Print to console (defaults to on for CLI usage, off for programmatic usage)
```
## Integration
envinfo is live in:
- [React Native](https://github.com/facebook/react-native) (`react-native info`)
- [Create React App](https://github.com/facebook/create-react-app) (`create-react-app --info`)
- [Expo Environment Info](https://github.com/expo/expo-cli/tree/main/packages/expo-env-info) (`npx expo-env-info`)
- [Webpack](https://github.com/webpack/webpack-cli) (`webpack-cli info`)
- [Solidarity](https://github.com/infinitered/solidarity) (`solidarity report`)
- [Gatsby](https://github.com/gatsbyjs/gatsby) (`gatsby info`)
envinfo is used in the ISSUE_TEMPLATE of:
- [styled-components](https://github.com/styled-components/styled-components)
- [Jest](https://github.com/facebook/jest)
- [Apollo Client](https://github.com/apollographql/apollo-client)
## Alternatives
- type `command -v` until you smash your computer
- [screenfetch](https://github.com/KittyKatt/screenFetch) - fetch system and terminal information, and display a pretty ascii logo
- [Solidarity](https://github.com/infinitered/solidarity) - a project based environment checker
- write your own
## License
MIT
## Contributing
PRs for additional features are welcome! Run `npm run lint && npm run format` before committing.
This project came out of a [PR](https://github.com/facebook/react-native/pull/14428) to the React Native CLI tool - issues are reported frequently without important environment information, like Node/npm versions.
## Contributors
Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
| [
Trevor Brindle](http://trevorbrindle.com)
[π¬](#question-tabrindle "Answering Questions") [π](#blog-tabrindle "Blogposts") [π](https://github.com/tabrindle/envinfo/issues?q=author%3Atabrindle "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=tabrindle "Code") [π](https://github.com/tabrindle/envinfo/commits?author=tabrindle "Documentation") [π‘](#example-tabrindle "Examples") [π€](#ideas-tabrindle "Ideas, Planning, & Feedback") [π](#review-tabrindle "Reviewed Pull Requests") [π’](#talk-tabrindle "Talks") [β οΈ](https://github.com/tabrindle/envinfo/commits?author=tabrindle "Tests") | [
Gant Laborde](http://gantlaborde.com/)
[π](#blog-GantMan "Blogposts") [π](https://github.com/tabrindle/envinfo/issues?q=author%3AGantMan "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=GantMan "Code") [π€](#ideas-GantMan "Ideas, Planning, & Feedback") | [
Anton Fisher](http://antonfisher.com)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Aantonfisher "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=antonfisher "Code") | [
Ahmad Awais β‘οΈ](https://AhmadAwais.com/)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Aahmadawais "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=ahmadawais "Code") | [
Hasan](https://github.com/LEQADA)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3ALEQADA "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=LEQADA "Code") | [
Ernesto RamΓrez](http://twitter.com/_ErnestoR)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3AErnestoR "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=ErnestoR "Code") | [
Jiawen Geng](https://www.gengjiawen.com)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Agengjiawen "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=gengjiawen "Code") [π€](#ideas-gengjiawen "Ideas, Planning, & Feedback") [β οΈ](https://github.com/tabrindle/envinfo/commits?author=gengjiawen "Tests") |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [
Zac Anger](https://zacanger.com)
[π»](https://github.com/tabrindle/envinfo/commits?author=zacanger "Code") [π](https://github.com/tabrindle/envinfo/issues?q=author%3Azacanger "Bug reports") | [
Ville Immonen](https://twitter.com/VilleImmonen)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Afson "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=fson "Code") | [
Olmo Maldonado](http://ibolmo.com)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Aibolmo "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=ibolmo "Code") | [
Rishabh Chawla](https://rishabhchawla.co)
[π](https://github.com/tabrindle/envinfo/issues?q=author%3Arishabh3112 "Bug reports") [π»](https://github.com/tabrindle/envinfo/commits?author=rishabh3112 "Code") |
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
envinfo-7.11.0/__tests__/ 0000775 0000000 0000000 00000000000 14520340062 0015176 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/__snapshots__/ 0000775 0000000 0000000 00000000000 14520340062 0020014 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/__snapshots__/duplicates.test.js.snap 0000664 0000000 0000000 00000000700 14520340062 0024422 0 ustar 00root root 0000000 0000000 // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Running the programmatic interface return expected duplicates in json 1`] = `
Object {
"npmPackages": Object {
"b": Object {
"duplicates": Array [
"1.0.2",
],
"installed": "1.0.0",
"wanted": "1.0.0",
},
},
}
`;
exports[`Running the programmatic interface return expected duplicates in yaml 1`] = `
"
npmPackages:
b: 1.0.0 => 1.0.0 (1.0.2)
"
`;
envinfo-7.11.0/__tests__/__snapshots__/envinfo.test.js.snap 0000664 0000000 0000000 00000005147 14520340062 0023743 0 ustar 00root root 0000000 0000000 // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Running the cli interface returns expected formatted yaml value 1`] = `
"
[4mBinaries:[0m
Node: 10.0.0 - /usr/local/bin/node
Yarn: 10.0.0 - /usr/local/bin/yarn
npm: 10.0.0 - /usr/local/bin/npm
pnpm: 10.0.0 - /usr/local/bin/pnpm
bun: 10.0.0 - /usr/local/bin/bun
Watchman: 10.0.0 - /usr/local/bin/watchman
"
`;
exports[`Running the cli interface returns expected unformatted yaml value 1`] = `
"
Binaries:
Node: 10.0.0 - /usr/local/bin/node
Yarn: 10.0.0 - /usr/local/bin/yarn
npm: 10.0.0 - /usr/local/bin/npm
pnpm: 10.0.0 - /usr/local/bin/pnpm
bun: 10.0.0 - /usr/local/bin/bun
Watchman: 10.0.0 - /usr/local/bin/watchman
"
`;
exports[`Running the programmatic interface filters out returned values with N/A 1`] = `
Object {
"Browsers": Object {
"Firefox": Object {
"path": "/usr/local/bin/firefox",
"version": "10.0.0",
},
},
}
`;
exports[`Running the programmatic interface returns expected json value 1`] = `
Object {
"Binaries": Object {
"Node": Object {
"path": "/usr/local/bin/node",
"version": "10.0.0",
},
},
}
`;
exports[`Running the programmatic interface returns expected json value with multiple categories 1`] = `
Object {
"Binaries": Object {
"Node": Object {
"path": "/usr/local/bin/node",
"version": "10.0.0",
},
},
"Languages": Object {
"Bash": Object {
"path": "/usr/local/bin/bash",
"version": "10.0.0",
},
},
}
`;
exports[`Running the programmatic interface returns expected json value with multiple values 1`] = `
Object {
"Binaries": Object {
"Node": Object {
"path": "/usr/local/bin/node",
"version": "10.0.0",
},
"Yarn": Object {
"path": "/usr/local/bin/yarn",
"version": "10.0.0",
},
"npm": Object {
"path": "/usr/local/bin/npm",
"version": "10.0.0",
},
},
}
`;
exports[`Running the programmatic interface returns expected markdown value 1`] = `
"
## Binaries:
- npm: 10.0.0 - /usr/local/bin/npm
"
`;
exports[`Running the programmatic interface returns expected title in json 1`] = `
Object {
"envinfo rocks!": Object {
"Binaries": Object {
"Node": Object {
"path": "/usr/local/bin/node",
"version": "10.0.0",
},
},
},
}
`;
exports[`Running the programmatic interface returns expected title in yaml 1`] = `
"
envinfo rocks!:
Binaries:
Node: 10.0.0 - /usr/local/bin/node
"
`;
exports[`Running the programmatic interface returns expected yaml value 1`] = `
"
Binaries:
Node: 10.0.0 - /usr/local/bin/node
"
`;
envinfo-7.11.0/__tests__/__snapshots__/scopedPackages.test.js.snap 0000664 0000000 0000000 00000000736 14520340062 0025212 0 ustar 00root root 0000000 0000000 // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`envinfo will report on scoped npm packages return expected packages 1`] = `
Object {
"npmPackages": Object {
"@scoped-name/test": Object {
"installed": "1.0.0",
"wanted": "1.0.0",
},
"a": Object {
"installed": "1.0.0",
"wanted": "1.0.0",
},
"b": Object {
"duplicates": Array [
"1.0.2",
],
"installed": "1.0.0",
"wanted": "1.0.0",
},
},
}
`;
envinfo-7.11.0/__tests__/duplicates.test.js 0000664 0000000 0000000 00000001552 14520340062 0020652 0 ustar 00root root 0000000 0000000 const envinfo = require('../src/envinfo');
const path = require('path');
describe('Running the programmatic interface', () => {
test('return expected duplicates in json', async () => {
const cwd = process.cwd();
process.chdir(path.join(__dirname, 'packages', path.sep, 'test-duplicates'));
try {
const data = await envinfo.run({ npmPackages: ['b'] }, { duplicates: true, json: true });
expect(JSON.parse(data)).toMatchSnapshot();
} finally {
process.chdir(cwd);
}
});
test('return expected duplicates in yaml', async () => {
const cwd = process.cwd();
process.chdir(path.join(__dirname, 'packages', path.sep, 'test-duplicates'));
try {
const data = await envinfo.run({ npmPackages: ['b'] }, { duplicates: true });
expect(data).toMatchSnapshot();
} finally {
process.chdir(cwd);
}
});
});
envinfo-7.11.0/__tests__/envinfo.test.js 0000664 0000000 0000000 00000007426 14520340062 0020167 0 ustar 00root root 0000000 0000000 const envinfo = require('../src/envinfo');
const helpers = require('../src/helpers');
jest.mock('../src/helpers');
// cycle through the helperFns and mock them according to their name
Object.keys(helpers).forEach(helperFn => {
const match = helperFn.match(/get(.*)Info/);
if (match) {
const name = match[1];
helpers[helperFn].mockImplementation(() =>
Promise.resolve([name, '10.0.0', `/usr/local/bin/${name.toLowerCase()}`])
);
}
});
describe('Running the programmatic interface', () => {
test('returns expected json value', () => {
return envinfo.run({ Binaries: ['Node'] }, { json: true }).then(data => {
expect(JSON.parse(data)).toMatchSnapshot();
});
});
test('returns expected yaml value', () => {
return envinfo.run({ Binaries: ['Node'] }).then(data => {
expect(data).toMatchSnapshot();
});
});
test('returns expected markdown value', () => {
return envinfo.run({ Binaries: ['npm'] }, { markdown: true }).then(data => {
expect(data).toMatchSnapshot();
});
});
test('returns expected json value with multiple values', () => {
return envinfo
.run(
{
Binaries: ['Node', 'Yarn', 'npm'],
},
{ json: true }
)
.then(data => {
expect(JSON.parse(data)).toMatchSnapshot();
});
});
test('returns expected json value with multiple categories', () => {
return envinfo
.run(
{
Binaries: ['Node'],
Languages: ['Bash'],
},
{ json: true }
)
.then(data => {
expect(JSON.parse(data)).toMatchSnapshot();
});
});
test('filters out returned values with N/A', () => {
helpers.getChromeInfo.mockImplementation(() => Promise.resolve(['Chrome', 'N/A', 'N/A']));
return envinfo.run({ Browsers: ['Chrome', 'Firefox'] }, { json: true }).then(data => {
expect(JSON.parse(data)).toMatchSnapshot();
});
});
test('filters out returned path values with N/A', () => {
helpers.getChromeInfo.mockImplementation(() =>
Promise.resolve(['Chrome', '65.0.3325.181', 'N/A'])
);
return envinfo.run({ Browsers: ['Chrome'] }, { json: true }).then(data => {
return expect(JSON.parse(data)).toEqual({
Browsers: {
Chrome: { version: '65.0.3325.181' },
},
});
});
});
test('returns expected title in json', () => {
return envinfo
.run({ Binaries: ['Node'] }, { title: 'envinfo rocks!', json: true })
.then(data => {
expect(JSON.parse(data)).toMatchSnapshot();
});
});
test('returns expected title in yaml', () => {
return envinfo.run({ Binaries: ['Node'] }, { title: 'envinfo rocks!' }).then(data => {
expect(data).toMatchSnapshot();
});
});
});
describe('Running the cli interface', () => {
test('returns expected formatted yaml value', () => {
const oldIsTTY = process.stdout.isTTY;
process.stdout.isTTY = true;
const consoleLogSpy = jest.spyOn(global.console, 'log');
consoleLogSpy.mockImplementation((data) => expect(data).toMatchSnapshot());
return envinfo.cli({ binaries: true, console: true }).then(() => {
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
}).finally(() => {
process.stdout.isTTY = oldIsTTY;
consoleLogSpy.mockClear();
});
});
test('returns expected unformatted yaml value', () => {
const oldIsTTY = process.stdout.isTTY;
process.stdout.isTTY = false;
const consoleLogSpy = jest.spyOn(global.console, 'log');
consoleLogSpy.mockImplementation((data) => expect(data).toMatchSnapshot());
return envinfo.cli({ binaries: true, console: true }).then(() => {
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
}).finally(() => {
process.stdout.isTTY = oldIsTTY;
consoleLogSpy.mockClear();
});
});
});
envinfo-7.11.0/__tests__/packages/ 0000775 0000000 0000000 00000000000 14520340062 0016754 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/ 0000775 0000000 0000000 00000000000 14520340062 0022066 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/ 0000775 0000000 0000000 00000000000 14520340062 0024543 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/@scoped-name/ 0000775 0000000 0000000 00000000000 14520340062 0027036 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/@scoped-name/test/ 0000775 0000000 0000000 00000000000 14520340062 0030015 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/@scoped-name/test/package.json 0000664 0000000 0000000 00000000067 14520340062 0032306 0 ustar 00root root 0000000 0000000 {
"name": "@scoped-name/test",
"version": "1.0.0"
} envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/a/ 0000775 0000000 0000000 00000000000 14520340062 0024763 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/a/node_modules/ 0000775 0000000 0000000 00000000000 14520340062 0027440 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/a/node_modules/b/ 0000775 0000000 0000000 00000000000 14520340062 0027661 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/a/node_modules/b/package.json 0000664 0000000 0000000 00000000050 14520340062 0032142 0 ustar 00root root 0000000 0000000 {
"name": "b",
"version": "1.0.2"
}
envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/a/package.json 0000664 0000000 0000000 00000000122 14520340062 0027244 0 ustar 00root root 0000000 0000000 {
"name": "a",
"version": "1.0.0",
"dependencies": {
"b": "1.0.2"
}
}
envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/b/ 0000775 0000000 0000000 00000000000 14520340062 0024764 5 ustar 00root root 0000000 0000000 envinfo-7.11.0/__tests__/packages/test-duplicates/node_modules/b/package.json 0000664 0000000 0000000 00000000050 14520340062 0027245 0 ustar 00root root 0000000 0000000 {
"name": "b",
"version": "1.0.0"
}
envinfo-7.11.0/__tests__/packages/test-duplicates/package.json 0000664 0000000 0000000 00000000225 14520340062 0024353 0 ustar 00root root 0000000 0000000 {
"name": "test-duplicates",
"version": "1.0.0",
"dependencies": {
"@scoped-name/test": "1.0.0",
"a": "1.0.0",
"b": "1.0.0"
}
}
envinfo-7.11.0/__tests__/scopedPackages.test.js 0000664 0000000 0000000 00000001000 14520340062 0021415 0 ustar 00root root 0000000 0000000 const envinfo = require('../src/envinfo');
const path = require('path');
describe('envinfo will report on scoped npm packages', () => {
test('return expected packages', async () => {
const cwd = process.cwd();
process.chdir(path.join(__dirname, 'packages', path.sep, 'test-duplicates'));
try {
const data = await envinfo.run({ npmPackages: true }, { duplicates: true, json: true });
expect(JSON.parse(data)).toMatchSnapshot();
} finally {
process.chdir(cwd);
}
});
});
envinfo-7.11.0/__tests__/utils.test.js 0000664 0000000 0000000 00000017326 14520340062 0017663 0 ustar 00root root 0000000 0000000 const utils = require('../src/utils');
const cases = {
apt: {
string: 'apt 1.4.9 (amd64)',
version: '1.4.9',
},
cargo: {
string: 'cargo 1.31.0 (339d9f9c8 2018-11-16)',
version: '1.31.0',
},
composer: {
string: '\u001b[32mComposer\u001b[39m version \u001b[33m1.8.6\u001b[39m 2019-06-11 15:03:05',
version: '1.8.6',
},
gradle: {
string: '---------------------\nGradle 5.5\n---------------------',
version: '5.5',
},
homebrew: {
string:
'Homebrew 2.1.7\nHomebrew/homebrew-core (git revision 3507d; last commit 2019-07-08)\nHomebrew/homebrew-cask (git revision 983c4; last commit 2019-07-08)',
version: '2.1.7',
},
maven: {
string:
'Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T15:00:29-04:00)',
version: '3.6.1',
},
pip: {
string: 'pip 19.0.3 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)',
version: '19.0.3',
},
yum: {
string: '3.4.3\n Installed: rpm-4.11.3-35.el7.x86_64 at 2019-03-05 17:35\n',
version: '3.4.3',
},
ash: {
string: `
BusyBox v1.31.1 () multi-call binary.
Usage: ash [-/+OPTIONS] [-/+o OPT]... [-c 'SCRIPT' [ARG0 [ARGS]] / FILE [ARGS] / -s [ARGS]]`,
version: '1.31.1',
},
bash: {
string: 'GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin17.0.0)',
version: '4.4.12',
},
php: {
string: 'PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )',
version: '7.1.7',
},
docker: {
string: 'Docker version 18.03.0-ce, build 0520e24',
version: '18.03.0',
},
edge: {
string: `
Name : Microsoft.MicrosoftEdge
Version : 20.10240.17146.0
PackageFullName : Microsoft.MicrosoftEdge_20.10240.17146.0_neutral__8wekyb3d8bbwe
InstallLocation : C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
PackageFamilyName : Microsoft.MicrosoftEdge_8wekyb3d8bbwe
PublisherId : 8wekyb3d8bbwe`,
version: '20.10240.17146.0',
},
elixir: {
regex: /[Elixir]+\s([\d+.[\d+|.]+)/,
index: 1,
string: `Erlang/OTP 20 [erts-9.2.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Elixir 1.6.2 (compiled with OTP 20)`,
version: '1.6.2',
},
explorer: {
string: `Version
11.0.10240.17443`,
version: '11.0.10240.17443',
},
ffmpeg: {
string: `ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807`,
version: '4.2',
},
go: {
string: 'go version go1.9.3 darwin/amd64',
version: '1.9.3',
},
java: {
regex: /\d+\.[\w+|.|_|-]+/,
string: 'javac 1.8.0_192-b12',
version: '1.8.0_192-b12',
},
R: {
string: `R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.
`,
version: '3.0.2',
},
mariadb: {
index: 1,
string: 'mysql Ver 15.1 Distrib 10.2.14-MariaDB, for osx10.13 (x86_64) using readline 5.1',
version: '10.2.14',
},
mongodb: {
string: `MongoDB shell version v3.6.4
git version: d0181a711f7e7f39e60b5aeb1dc7097bf6ae5856
OpenSSL version: OpenSSL 1.0.2o 27 Mar 2018`,
version: '3.6.4',
},
mysql: {
index: 1,
string: 'mysql Ver 14.14 Distrib 5.7.21, for osx10.13 (x86_64) using EditLine wrapper',
version: '5.7.21',
},
postgres: {
string: 'postgres (PostgreSQL) 10.3',
version: '10.3',
},
ruby: {
regex: /\d+\.[\d+|.|p]+/,
string: 'ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]',
version: '2.3.7p456',
},
rust: {
string: 'rustc 1.31.1 (b6c32da9b 2018-12-18)',
version: '1.31.1',
},
sqlite: {
string:
'3.19.4 2017-08-18 19:28:12 605907e73adb4533b12d22be8422f17a8dc125b5c37bb391756a11fc3a8c4d10',
version: '3.19.4',
},
clang: {
string: `clang version 7.0.0-3 (tags/RELEASE_700/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin`,
regex: /([0-9].*) /,
index: 1,
version: '7.0.0-3',
},
sublime: {
regex: /\d+/,
string: 'Sublime Text Build 3143',
version: '3143',
},
virtualbox: {
string: '5.2.8r121009',
version: '5.2.8',
},
xcodebuild: {
string: `Xcode 9.0
Build version 9A235`,
version: '9.0',
},
glibc: {
string: `ldd (Ubuntu GLIBC 2.30-0ubuntu2) 2.30`,
version: '2.30'
}
};
describe('findVersion - Matching version strings against real world cases', () => {
Object.keys(cases).map(c =>
test(`${c} returns expected version`, () =>
expect(utils.findVersion(cases[c].string, cases[c].regex, cases[c].index)).toEqual(
cases[c].version
))
);
});
describe('parseSDKManagerOutput - Extracting info from sdkmanager', () => {
const output = `
Path | Version | Description | Location
------- | ------- | ------- | -------
build-tools;28.0.3 | 28.0.3 | Android SDK Build-Tools 28.0.3 | build-tools/28.0.3/
platform-tools | 28.0.1 | Android SDK Platform-Tools | platform-tools/
platforms;android-28 | 6 | Android SDK Platform 28 | platforms/android-28/
sources;android-28 | 1 | Sources for Android 28 | sources/android-28/
system-images;android-28;google_apis_playstore;x86 | 5 | Google Play Intel x86 Atom System Image | system-images/android-28/google_apis_playstore/x86/
tools | 26.1.1 | Android SDK Tools | tools/
Available Packages:
`;
const sdkmanager = utils.parseSDKManagerOutput(output);
expect(sdkmanager.apiLevels).toEqual(['28']);
expect(sdkmanager.buildTools).toEqual(['28.0.3']);
expect(sdkmanager.systemImages).toEqual(['android-28 | Google Play Intel x86 Atom']);
});
describe('generatePlistBuddyCommand', () => {
test('default options array', () => {
expect(utils.generatePlistBuddyCommand('/Applications/Firefox.app')).toBe(
'/usr/libexec/PlistBuddy -c Print:CFBundleShortVersionString /Applications/Firefox.app'
);
});
test('options array argument', () => {
expect(
utils.generatePlistBuddyCommand('/Applications/Firefox.app', [
'CFBundleShortVersionString',
'CFBundleVersion',
])
).toBe(
'/usr/libexec/PlistBuddy -c Print:CFBundleShortVersionString -c Print:CFBundleVersion /Applications/Firefox.app'
);
});
});
describe('toReadableBytes', () => {
test('formats bytes correctly', () => {
expect(utils.toReadableBytes(1337)).toBe('1.31 KB');
});
test('handles falsy value for bytes', () => {
expect(utils.toReadableBytes()).toBe('0 Bytes');
});
});
describe('omit', () => {
test('emits properties from object', () => {
expect(utils.omit({ one: true, two: true }, ['two'])).toEqual({ one: true });
});
});
describe('pick', () => {
test('picks properties from object', () => {
expect(utils.pick({ one: true, two: true }, ['two'])).toEqual({ two: true });
});
});
envinfo-7.11.0/appveyor.yml 0000664 0000000 0000000 00000000706 14520340062 0015633 0 ustar 00root root 0000000 0000000 environment:
nodejs_version: '8'
install:
- ps: Install-Product node $env:nodejs_version x64
- npm install
test_script:
- node --version
- npm --version
- choco install ffmpeg
- choco install r.project -version 3.6.0
- set RPATH=C:\Program Files\R\R-3.6.0\bin\x64
- set PATH=%RPATH%;%PATH%
- SET ENVINFO_DEBUG=trace
- npm run build
- node -r esm src/cli.js
- node dist/cli.js
- SET ENVINFO_DEBUG=""
- npm test
build: off
envinfo-7.11.0/babel.config.js 0000664 0000000 0000000 00000000433 14520340062 0016107 0 ustar 00root root 0000000 0000000 'use strict';
module.exports = {
presets: [
[
'@babel/preset-env',
{
modules: 'commonjs',
targets: {
node: '4.9.1',
},
useBuiltIns: 'usage',
},
],
],
plugins: ['@babel/plugin-proposal-optional-chaining'],
};
envinfo-7.11.0/commitlint.config.js 0000664 0000000 0000000 00000000102 14520340062 0017212 0 ustar 00root root 0000000 0000000 module.exports = { extends: ['@commitlint/config-conventional'] }
envinfo-7.11.0/logo.png 0000664 0000000 0000000 00000036223 14520340062 0014714 0 ustar 00root root 0000000 0000000 PNG
IHDR J Mψλ φPLTEοϋψαΛDΖΊάΔΠςι*Ύ²κΪΑξβ7Β€ζΣάΔ_ΟRΚ¦ΰχπmΣΆzΨ½)ΎζωσΫφξrΥΈ »-Ώ½νΰΫΒIΘ‘ εΠγΞβχρNΚ€ΕογΊ1Ατύϊ[Ξ¬cΠ°%ΌΦτμ@ΕχώόόώvΧ»ΉμέιϊυήΗ»Λρζ<ΔβΜΰΙVΜ©}ΩΎμϊχ«θΦΪΑΑΫΤ’ΙΎΆ§VG|sΏ²οφτ°Θ(fnQF{ίνιΐΫΣ7rw\Πδήh³e₯‘Ι½v[UΝςηd€΅λΫoΤΆ<|‘R ;XIDATxμέ
vάJΖρj©άbάpΧϋήΙ.μΤΡωc|ΣPUrr &UΓ3# x±~Ε w| Λ₯ϊ[j ₯b½! ΚυB XͺΤJ ( % ’ @ @ G TD |³TUΣ(Y hiX% U€Ώ4rT²PUΓlQγ Τkκ₯Y%¦ΠB#= Jo¨εxϊKhΦEό« ήgΣίΠ¬κ΅\Ί ήdεX€zChό£ΔΣa (υ¦@D₯ΠψF ΥH
9ΊBγ%&Τι( uΙ°Ϊ(1‘% °πΣ{,G’νgΙς(1‘v ΈruΥr$j%ήPΞIZ: ₯Ί"9¦%ήΜHΆ vΕr$μ,Ή7$V: vΥrJYλoW νδ€²$ΣrΏ$ ΪwH-τE"%I ³ν«ε¨³€HON ΐ<φE樳dζ$ 0O‘}ΙQgI&3Δ$ ΜctH)G%Ήάd³οb+7ε$ ΜhΧwlζ?YίΪ0K(©"kEPυ£d:I ‘Κe+·οθ?ξήΫ2Kω!)΄§ε$Y¬K7Ou»,i廀ΤAi,ί΅$ ΜQλX6ρ@{ΈYςSθ¨’$ Μ`"QΚώΠkwΞ7ΚZώD:!O @ £*9Όσ;nϊAΩRΥζcΥ4ύ2ΖΌΥ
V cRUΛαύwΫ³~y`υΖ―ίyΗ WιΎ}Εϋv\lB΄Ο, %νΖχ/T©γ±Ω