diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/ci-info | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/ci-info')
| -rw-r--r-- | node_modules/ci-info/CHANGELOG.md | 122 | ||||
| -rw-r--r-- | node_modules/ci-info/LICENSE | 21 | ||||
| -rw-r--r-- | node_modules/ci-info/README.md | 118 | ||||
| -rw-r--r-- | node_modules/ci-info/index.d.ts | 62 | ||||
| -rw-r--r-- | node_modules/ci-info/index.js | 66 | ||||
| -rw-r--r-- | node_modules/ci-info/package.json | 36 | ||||
| -rw-r--r-- | node_modules/ci-info/vendors.json | 210 | 
7 files changed, 635 insertions, 0 deletions
diff --git a/node_modules/ci-info/CHANGELOG.md b/node_modules/ci-info/CHANGELOG.md new file mode 100644 index 0000000..fc293eb --- /dev/null +++ b/node_modules/ci-info/CHANGELOG.md @@ -0,0 +1,122 @@ +# Changelog + +## v3.3.0 + +- support Expo Application Services ([#70](https://github.com/watson/ci-info/pull/70)) + +## v3.2.0 + +- support LayerCI ([#68](https://github.com/watson/ci-info/pull/68)) +- support Appcircle ([#69](https://github.com/watson/ci-info/pull/69)) +- support Codefresh CI ([#65](https://github.com/watson/ci-info/pull/65)) +- Add support for nodejs v16 + +## v3.1.1 + +Bug Fixes: + +- remove duplicate declaration in typings + +## v3.1.0 + +Features: + +- add typings + +## v3.0.0 + +Features: + +- Add support nodejs versions: 14, 15 +- support Nevercode ([#30](https://github.com/watson/ci-info/pull/30)) +- support Render CI ([#36](https://github.com/watson/ci-info/pull/36)) +- support Now CI ([#37](https://github.com/watson/ci-info/pull/37)) +- support GitLab PR ([#59](https://github.com/watson/ci-info/pull/59)) +- support Screwdriver CD ([#60](https://github.com/watson/ci-info/pull/60)) +- support Visual Studio App Center ([#61](https://github.com/watson/ci-info/pull/61)) + +Bug Fixes: + +- update Netlify env constant ([#47](https://github.com/watson/ci-info/pull/47)) + +Breaking changes: + +- Drop support for Node.js end-of-life versions: 6, 13 +- replace `Zeit Now` with `Vercel` ([#55](https://github.com/watson/ci-info/pull/55)) + +## v2.0.0 + +Breaking changes: + +- Drop support for Node.js end-of-life versions: 0.10, 0.12, 4, 5, 7, +  and 9 +- Team Foundation Server will now be detected as Azure Pipelines. The +  constant `ci.TFS` no longer exists - use `ci.AZURE_PIPELINES` instead +- Remove deprecated `ci.TDDIUM` constant - use `ci.SOLANDO` instead + +New features: + +- feat: support Azure Pipelines ([#23](https://github.com/watson/ci-info/pull/23)) +- feat: support Netlify CI ([#26](https://github.com/watson/ci-info/pull/26)) +- feat: support Bitbucket pipelines PR detection ([#27](https://github.com/watson/ci-info/pull/27)) + +## v1.6.0 + +- feat: add Sail CI support +- feat: add Buddy support +- feat: add Bitrise support +- feat: detect Jenkins PRs +- feat: detect Drone PRs + +## v1.5.1 + +- fix: use full path to vendors.json + +## v1.5.0 + +- feat: add dsari detection ([#15](https://github.com/watson/ci-info/pull/15)) +- feat: add ci.isPR ([#16](https://github.com/watson/ci-info/pull/16)) + +## v1.4.0 + +- feat: add Cirrus CI detection ([#13](https://github.com/watson/ci-info/pull/13)) +- feat: add Shippable CI detection ([#14](https://github.com/watson/ci-info/pull/14)) + +## v1.3.1 + +- chore: reduce npm package size by not including `.github` folder content ([#11](https://github.com/watson/ci-info/pull/11)) + +## v1.3.0 + +- feat: add support for Strider CD +- chore: deprecate vendor constant `TDDIUM` in favor of `SOLANO` +- docs: add missing vendor constant to docs + +## v1.2.0 + +- feat: detect solano-ci ([#9](https://github.com/watson/ci-info/pull/9)) + +## v1.1.3 + +- fix: fix spelling of Hunson in `ci.name` + +## v1.1.2 + +- fix: no more false positive matches for Jenkins + +## v1.1.1 + +- docs: sort lists of CI servers in README.md +- docs: add missing AWS CodeBuild to the docs + +## v1.1.0 + +- feat: add AWS CodeBuild to CI detection ([#2](https://github.com/watson/ci-info/pull/2)) + +## v1.0.1 + +- chore: reduce npm package size by using an `.npmignore` file ([#3](https://github.com/watson/ci-info/pull/3)) + +## v1.0.0 + +- Initial release diff --git a/node_modules/ci-info/LICENSE b/node_modules/ci-info/LICENSE new file mode 100644 index 0000000..2cc7405 --- /dev/null +++ b/node_modules/ci-info/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016-2021 Thomas Watson Steen + +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. diff --git a/node_modules/ci-info/README.md b/node_modules/ci-info/README.md new file mode 100644 index 0000000..e7790b3 --- /dev/null +++ b/node_modules/ci-info/README.md @@ -0,0 +1,118 @@ +# ci-info + +Get details about the current Continuous Integration environment. + +Please [open an +issue](https://github.com/watson/ci-info/issues/new?template=ci-server-not-detected.md) +if your CI server isn't properly detected :) + +[](https://www.npmjs.com/package/ci-info) +[](https://github.com/watson/ci-info/actions) +[](https://github.com/feross/standard) + +## Installation + +```bash +npm install ci-info --save +``` + +## Usage + +```js +var ci = require('ci-info') + +if (ci.isCI) { +  console.log('The name of the CI server is:', ci.name) +} else { +  console.log('This program is not running on a CI server') +} +``` + +## Supported CI tools + +Officially supported CI servers: + +| Name                                                                            | Constant             | isPR | +| ------------------------------------------------------------------------------- | -------------------- | ---- | +| [AWS CodeBuild](https://aws.amazon.com/codebuild/)                              | `ci.CODEBUILD`       | 🚫   | +| [AppVeyor](http://www.appveyor.com)                                             | `ci.APPVEYOR`        | ✅   | +| [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) | `ci.AZURE_PIPELINES` | ✅   | +| [Appcircle](https://appcircle.io/)                                              | `ci.APPCIRCLE`       | 🚫   | +| [Bamboo](https://www.atlassian.com/software/bamboo) by Atlassian                | `ci.BAMBOO`          | 🚫   | +| [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines)         | `ci.BITBUCKET`       | ✅   | +| [Bitrise](https://www.bitrise.io/)                                              | `ci.BITRISE`         | ✅   | +| [Buddy](https://buddy.works/)                                                   | `ci.BUDDY`           | ✅   | +| [Buildkite](https://buildkite.com)                                              | `ci.BUILDKITE`       | ✅   | +| [CircleCI](http://circleci.com)                                                 | `ci.CIRCLE`          | ✅   | +| [Cirrus CI](https://cirrus-ci.org)                                              | `ci.CIRRUS`          | ✅   | +| [Codefresh](https://codefresh.io/)                                              | `ci.CODEFRESH`       | ✅   | +| [Codeship](https://codeship.com)                                                | `ci.CODESHIP`        | 🚫   | +| [Drone](https://drone.io)                                                       | `ci.DRONE`           | ✅   | +| [dsari](https://github.com/rfinnie/dsari)                                       | `ci.DSARI`           | 🚫   | +| [Expo Application Services](https://expo.dev/eas)                               | `ci.EAS_BUILD`       | 🚫   | +| [GitHub Actions](https://github.com/features/actions/)                          | `ci.GITHUB_ACTIONS`  | ✅   | +| [GitLab CI](https://about.gitlab.com/gitlab-ci/)                                | `ci.GITLAB`          | ✅   | +| [GoCD](https://www.go.cd/)                                                      | `ci.GOCD`            | 🚫   | +| [Hudson](http://hudson-ci.org)                                                  | `ci.HUDSON`          | 🚫   | +| [Jenkins CI](https://jenkins-ci.org)                                            | `ci.JENKINS`         | ✅   | +| [LayerCI](https://layerci.com/)                                                 | `ci.LAYERCI`         | ✅   | +| [Magnum CI](https://magnum-ci.com)                                              | `ci.MAGNUM`          | 🚫   | +| [Netlify CI](https://www.netlify.com/)                                          | `ci.NETLIFY`         | ✅   | +| [Nevercode](http://nevercode.io/)                                               | `ci.NEVERCODE`       | ✅   | +| [Render](https://render.com/)                                                   | `ci.RENDER`          | ✅   | +| [Sail CI](https://sail.ci/)                                                     | `ci.SAIL`            | ✅   | +| [Screwdriver](https://screwdriver.cd/)                                          | `ci.SCREWDRIVER`     | ✅   | +| [Semaphore](https://semaphoreci.com)                                            | `ci.SEMAPHORE`       | ✅   | +| [Shippable](https://www.shippable.com/)                                         | `ci.SHIPPABLE`       | ✅   | +| [Solano CI](https://www.solanolabs.com/)                                        | `ci.SOLANO`          | ✅   | +| [Strider CD](https://strider-cd.github.io/)                                     | `ci.STRIDER`         | 🚫   | +| [TaskCluster](http://docs.taskcluster.net)                                      | `ci.TASKCLUSTER`     | 🚫   | +| [TeamCity](https://www.jetbrains.com/teamcity/) by JetBrains                    | `ci.TEAMCITY`        | 🚫   | +| [Travis CI](http://travis-ci.org)                                               | `ci.TRAVIS`          | ✅   | +| [Vercel](https://vercel.com/)                                                   | `ci.VERCEL`          | 🚫   | +| [Visual Studio App Center](https://appcenter.ms/)                               | `ci.APPCENTER`       | 🚫   | + +## API + +### `ci.name` + +Returns a string containing name of the CI server the code is running on. +If CI server is not detected, it returns `null`. + +Don't depend on the value of this string not to change for a specific +vendor. If you find your self writing `ci.name === 'Travis CI'`, you +most likely want to use `ci.TRAVIS` instead. + +### `ci.isCI` + +Returns a boolean. Will be `true` if the code is running on a CI server, +otherwise `false`. + +Some CI servers not listed here might still trigger the `ci.isCI` +boolean to be set to `true` if they use certain vendor neutral +environment variables. In those cases `ci.name` will be `null` and no +vendor specific boolean will be set to `true`. + +### `ci.isPR` + +Returns a boolean if PR detection is supported for the current CI server. Will +be `true` if a PR is being tested, otherwise `false`. If PR detection is +not supported for the current CI server, the value will be `null`. + +### `ci.<VENDOR-CONSTANT>` + +A vendor specific boolean constant is exposed for each support CI +vendor. A constant will be `true` if the code is determined to run on +the given CI server, otherwise `false`. + +Examples of vendor constants are `ci.TRAVIS` or `ci.APPVEYOR`. For a +complete list, see the support table above. + +Deprecated vendor constants that will be removed in the next major +release: + +- `ci.TDDIUM` (Solano CI) This have been renamed `ci.SOLANO` + +## License + +[MIT](LICENSE) diff --git a/node_modules/ci-info/index.d.ts b/node_modules/ci-info/index.d.ts new file mode 100644 index 0000000..04f79c6 --- /dev/null +++ b/node_modules/ci-info/index.d.ts @@ -0,0 +1,62 @@ +/** + * Returns a boolean. Will be `true` if the code is running on a CI server, + * otherwise `false`. + * + * Some CI servers not listed here might still trigger the `ci.isCI` + * boolean to be set to `true` if they use certain vendor neutral environment + * variables. In those cases `ci.name` will be `null` and no vendor specific + * boolean will be set to `true`. + */ +export const isCI: boolean; +/** + * Returns a boolean if PR detection is supported for the current CI server. + * Will be `true` if a PR is being tested, otherwise `false`. If PR detection is + * not supported for the current CI server, the value will be `null`. + */ +export const isPR: boolean | null; +/** + * Returns a string containing name of the CI server the code is running on. If + * CI server is not detected, it returns `null`. + * + * Don't depend on the value of this string not to change for a specific vendor. + * If you find your self writing `ci.name === 'Travis CI'`, you most likely want + * to use `ci.TRAVIS` instead. + */ +export const name: string | null; + +export const APPVEYOR: boolean; +export const AZURE_PIPELINES: boolean; +export const APPCIRCLE: boolean; +export const BAMBOO: boolean; +export const BITBUCKET: boolean; +export const BITRISE: boolean; +export const BUDDY: boolean; +export const BUILDKITE: boolean; +export const CIRCLE: boolean; +export const CIRRUS: boolean; +export const CODEBUILD: boolean; +export const CODEFRESH: boolean; +export const CODESHIP: boolean; +export const DRONE: boolean; +export const DSARI: boolean; +export const GITHUB_ACTIONS: boolean; +export const GITLAB: boolean; +export const GOCD: boolean; +export const HUDSON: boolean; +export const JENKINS: boolean; +export const LAYERCI: boolean; +export const MAGNUM: boolean; +export const NETLIFY: boolean; +export const NEVERCODE: boolean; +export const RENDER: boolean; +export const SAIL: boolean; +export const SEMAPHORE: boolean; +export const SCREWDRIVER: boolean; +export const SHIPPABLE: boolean; +export const SOLANO: boolean; +export const STRIDER: boolean; +export const TASKCLUSTER: boolean; +export const TEAMCITY: boolean; +export const TRAVIS: boolean; +export const VERCEL: boolean; +export const APPCENTER: boolean; diff --git a/node_modules/ci-info/index.js b/node_modules/ci-info/index.js new file mode 100644 index 0000000..b747a89 --- /dev/null +++ b/node_modules/ci-info/index.js @@ -0,0 +1,66 @@ +'use strict' + +const vendors = require('./vendors.json') + +const env = process.env + +// Used for testing only +Object.defineProperty(exports, '_vendors', { +  value: vendors.map(function (v) { return v.constant }) +}) + +exports.name = null +exports.isPR = null + +vendors.forEach(function (vendor) { +  const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env] +  const isCI = envs.every(function (obj) { +    return checkEnv(obj) +  }) + +  exports[vendor.constant] = isCI + +  if (isCI) { +    exports.name = vendor.name + +    switch (typeof vendor.pr) { +      case 'string': +        // "pr": "CIRRUS_PR" +        exports.isPR = !!env[vendor.pr] +        break +      case 'object': +        if ('env' in vendor.pr) { +          // "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" } +          exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne +        } else if ('any' in vendor.pr) { +          // "pr": { "any": ["ghprbPullId", "CHANGE_ID"] } +          exports.isPR = vendor.pr.any.some(function (key) { +            return !!env[key] +          }) +        } else { +          // "pr": { "DRONE_BUILD_EVENT": "pull_request" } +          exports.isPR = checkEnv(vendor.pr) +        } +        break +      default: +        // PR detection not supported for this vendor +        exports.isPR = null +    } +  } +}) + +exports.isCI = !!( +  env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari +  env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI +  env.BUILD_NUMBER || // Jenkins, TeamCity +  env.RUN_ID || // TaskCluster, dsari +  exports.name || +  false +) + +function checkEnv (obj) { +  if (typeof obj === 'string') return !!env[obj] +  return Object.keys(obj).every(function (k) { +    return env[k] === obj[k] +  }) +} diff --git a/node_modules/ci-info/package.json b/node_modules/ci-info/package.json new file mode 100644 index 0000000..136015c --- /dev/null +++ b/node_modules/ci-info/package.json @@ -0,0 +1,36 @@ +{ +  "name": "ci-info", +  "version": "3.3.0", +  "description": "Get details about the current Continuous Integration environment", +  "main": "index.js", +  "typings": "index.d.ts", +  "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)", +  "license": "MIT", +  "repository": { +    "type": "git", +    "url": "https://github.com/watson/ci-info.git" +  }, +  "bugs": { +    "url": "https://github.com/watson/ci-info/issues" +  }, +  "homepage": "https://github.com/watson/ci-info", +  "keywords": [ +    "ci", +    "continuous", +    "integration", +    "test", +    "detect" +  ], +  "coordinates": [ +    55.778231, +    12.593179 +  ], +  "scripts": { +    "test": "standard && node test.js" +  }, +  "devDependencies": { +    "clear-module": "^4.1.2", +    "standard": "^16.0.4", +    "tape": "^5.3.2" +  } +} diff --git a/node_modules/ci-info/vendors.json b/node_modules/ci-info/vendors.json new file mode 100644 index 0000000..1c9e2ee --- /dev/null +++ b/node_modules/ci-info/vendors.json @@ -0,0 +1,210 @@ +[ +  { +    "name": "AppVeyor", +    "constant": "APPVEYOR", +    "env": "APPVEYOR", +    "pr": "APPVEYOR_PULL_REQUEST_NUMBER" +  }, +  { +    "name": "Azure Pipelines", +    "constant": "AZURE_PIPELINES", +    "env": "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI", +    "pr": "SYSTEM_PULLREQUEST_PULLREQUESTID" +  }, +  { +    "name": "Appcircle", +    "constant": "APPCIRCLE", +    "env": "AC_APPCIRCLE" +  }, +  { +    "name": "Bamboo", +    "constant": "BAMBOO", +    "env": "bamboo_planKey" +  }, +  { +    "name": "Bitbucket Pipelines", +    "constant": "BITBUCKET", +    "env": "BITBUCKET_COMMIT", +    "pr": "BITBUCKET_PR_ID" +  }, +  { +    "name": "Bitrise", +    "constant": "BITRISE", +    "env": "BITRISE_IO", +    "pr": "BITRISE_PULL_REQUEST" +  }, +  { +    "name": "Buddy", +    "constant": "BUDDY", +    "env": "BUDDY_WORKSPACE_ID", +    "pr": "BUDDY_EXECUTION_PULL_REQUEST_ID" +  }, +  { +    "name": "Buildkite", +    "constant": "BUILDKITE", +    "env": "BUILDKITE", +    "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" } +  }, +  { +    "name": "CircleCI", +    "constant": "CIRCLE", +    "env": "CIRCLECI", +    "pr": "CIRCLE_PULL_REQUEST" +  }, +  { +    "name": "Cirrus CI", +    "constant": "CIRRUS", +    "env": "CIRRUS_CI", +    "pr": "CIRRUS_PR" +  }, +  { +    "name": "AWS CodeBuild", +    "constant": "CODEBUILD", +    "env": "CODEBUILD_BUILD_ARN" +  }, +  { +    "name": "Codefresh", +    "constant": "CODEFRESH", +    "env": "CF_BUILD_ID", +    "pr": { "any": ["CF_PULL_REQUEST_NUMBER", "CF_PULL_REQUEST_ID"] } +  }, +  { +    "name": "Codeship", +    "constant": "CODESHIP", +    "env": { "CI_NAME": "codeship" } +  }, +  { +    "name": "Drone", +    "constant": "DRONE", +    "env": "DRONE", +    "pr": { "DRONE_BUILD_EVENT": "pull_request" } +  }, +  { +    "name": "dsari", +    "constant": "DSARI", +    "env": "DSARI" +  }, +  { +    "name": "Expo Application Services", +    "constant": "EAS", +    "env": "EAS_BUILD" +  }, +  { +    "name": "GitHub Actions", +    "constant": "GITHUB_ACTIONS", +    "env": "GITHUB_ACTIONS", +    "pr": { "GITHUB_EVENT_NAME": "pull_request" } +  }, +  { +    "name": "GitLab CI", +    "constant": "GITLAB", +    "env": "GITLAB_CI", +    "pr": "CI_MERGE_REQUEST_ID" +  }, +  { +    "name": "GoCD", +    "constant": "GOCD", +    "env": "GO_PIPELINE_LABEL" +  }, +  { +    "name": "LayerCI", +    "constant": "LAYERCI", +    "env": "LAYERCI", +    "pr": "LAYERCI_PULL_REQUEST" +  }, +  { +    "name": "Hudson", +    "constant": "HUDSON", +    "env": "HUDSON_URL" +  }, +  { +    "name": "Jenkins", +    "constant": "JENKINS", +    "env": ["JENKINS_URL", "BUILD_ID"], +    "pr": { "any": ["ghprbPullId", "CHANGE_ID"] } +  }, +  { +    "name": "Magnum CI", +    "constant": "MAGNUM", +    "env": "MAGNUM" +  }, +  { +    "name": "Netlify CI", +    "constant": "NETLIFY", +    "env": "NETLIFY", +    "pr": { "env": "PULL_REQUEST", "ne": "false" } +  }, +  { +    "name": "Nevercode", +    "constant": "NEVERCODE", +    "env": "NEVERCODE", +    "pr": { "env": "NEVERCODE_PULL_REQUEST", "ne": "false" } +  }, +  { +    "name": "Render", +    "constant": "RENDER", +    "env": "RENDER", +    "pr": { "IS_PULL_REQUEST": "true" } +  }, +  { +    "name": "Sail CI", +    "constant": "SAIL", +    "env": "SAILCI", +    "pr": "SAIL_PULL_REQUEST_NUMBER" +  }, +  { +    "name": "Semaphore", +    "constant": "SEMAPHORE", +    "env": "SEMAPHORE", +    "pr": "PULL_REQUEST_NUMBER" +  }, +  { +    "name": "Screwdriver", +    "constant": "SCREWDRIVER", +    "env": "SCREWDRIVER", +    "pr": { "env": "SD_PULL_REQUEST", "ne": "false" } +  }, +  { +    "name": "Shippable", +    "constant": "SHIPPABLE", +    "env": "SHIPPABLE", +    "pr": { "IS_PULL_REQUEST": "true" } +  }, +  { +    "name": "Solano CI", +    "constant": "SOLANO", +    "env": "TDDIUM", +    "pr": "TDDIUM_PR_ID" +  }, +  { +    "name": "Strider CD", +    "constant": "STRIDER", +    "env": "STRIDER" +  }, +  { +    "name": "TaskCluster", +    "constant": "TASKCLUSTER", +    "env": ["TASK_ID", "RUN_ID"] +  }, +  { +    "name": "TeamCity", +    "constant": "TEAMCITY", +    "env": "TEAMCITY_VERSION" +  }, +  { +    "name": "Travis CI", +    "constant": "TRAVIS", +    "env": "TRAVIS", +    "pr": { "env": "TRAVIS_PULL_REQUEST", "ne": "false" } +  }, +  { +    "name": "Vercel", +    "constant": "VERCEL", +    "env": "NOW_BUILDER" +  }, +  { +    "name": "Visual Studio App Center", +    "constant": "APPCENTER", +    "env": "APPCENTER_BUILD_ID" +  } +]  | 
