版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 1 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. 'use strict';
  2. const providers = [
  3. ["APPVEYOR"],
  4. ["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
  5. ["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
  6. ["APPCIRCLE", "AC_APPCIRCLE"],
  7. ["BAMBOO", "bamboo_planKey"],
  8. ["BITBUCKET", "BITBUCKET_COMMIT"],
  9. ["BITRISE", "BITRISE_IO"],
  10. ["BUDDY", "BUDDY_WORKSPACE_ID"],
  11. ["BUILDKITE"],
  12. ["CIRCLE", "CIRCLECI"],
  13. ["CIRRUS", "CIRRUS_CI"],
  14. ["CLOUDFLARE_PAGES", "CF_PAGES", { ci: true }],
  15. ["CODEBUILD", "CODEBUILD_BUILD_ARN"],
  16. ["CODEFRESH", "CF_BUILD_ID"],
  17. ["DRONE"],
  18. ["DRONE", "DRONE_BUILD_EVENT"],
  19. ["DSARI"],
  20. ["GITHUB_ACTIONS"],
  21. ["GITLAB", "GITLAB_CI"],
  22. ["GITLAB", "CI_MERGE_REQUEST_ID"],
  23. ["GOCD", "GO_PIPELINE_LABEL"],
  24. ["LAYERCI"],
  25. ["HUDSON", "HUDSON_URL"],
  26. ["JENKINS", "JENKINS_URL"],
  27. ["MAGNUM"],
  28. ["NETLIFY"],
  29. ["NETLIFY", "NETLIFY_LOCAL", { ci: false }],
  30. ["NEVERCODE"],
  31. ["RENDER"],
  32. ["SAIL", "SAILCI"],
  33. ["SEMAPHORE"],
  34. ["SCREWDRIVER"],
  35. ["SHIPPABLE"],
  36. ["SOLANO", "TDDIUM"],
  37. ["STRIDER"],
  38. ["TEAMCITY", "TEAMCITY_VERSION"],
  39. ["TRAVIS"],
  40. ["VERCEL", "NOW_BUILDER"],
  41. ["APPCENTER", "APPCENTER_BUILD_ID"],
  42. ["CODESANDBOX", "CODESANDBOX_SSE", { ci: false }],
  43. ["STACKBLITZ"],
  44. ["STORMKIT"],
  45. ["CLEAVR"]
  46. ];
  47. function detectProvider(env) {
  48. for (const provider of providers) {
  49. const envName = provider[1] || provider[0];
  50. if (env[envName]) {
  51. return {
  52. name: provider[0].toLowerCase(),
  53. ...provider[2]
  54. };
  55. }
  56. }
  57. if (env.SHELL && env.SHELL === "/bin/jsh") {
  58. return {
  59. name: "stackblitz",
  60. ci: false
  61. };
  62. }
  63. return {
  64. name: "",
  65. ci: false
  66. };
  67. }
  68. const processShim = typeof process !== "undefined" ? process : {};
  69. const envShim = processShim.env || {};
  70. const providerInfo = detectProvider(envShim);
  71. const nodeENV = envShim.NODE_ENV || "";
  72. const platform = processShim.platform;
  73. const provider = providerInfo.name;
  74. const isCI = toBoolean(envShim.CI) || providerInfo.ci !== false;
  75. const hasTTY = toBoolean(processShim.stdout && processShim.stdout.isTTY);
  76. const hasWindow = typeof window !== "undefined";
  77. const isDebug = toBoolean(envShim.DEBUG);
  78. const isTest = nodeENV === "test" || toBoolean(envShim.TEST);
  79. const isProduction = nodeENV === "production";
  80. const isDevelopment = nodeENV === "dev" || nodeENV === "development";
  81. const isMinimal = toBoolean(envShim.MINIMAL) || isCI || isTest || !hasTTY;
  82. const isWindows = /^win/i.test(platform);
  83. const isLinux = /^linux/i.test(platform);
  84. const isMacOS = /^darwin/i.test(platform);
  85. function toBoolean(val) {
  86. return val ? val !== "false" : false;
  87. }
  88. exports.hasTTY = hasTTY;
  89. exports.hasWindow = hasWindow;
  90. exports.isCI = isCI;
  91. exports.isDebug = isDebug;
  92. exports.isDevelopment = isDevelopment;
  93. exports.isLinux = isLinux;
  94. exports.isMacOS = isMacOS;
  95. exports.isMinimal = isMinimal;
  96. exports.isProduction = isProduction;
  97. exports.isTest = isTest;
  98. exports.isWindows = isWindows;
  99. exports.platform = platform;
  100. exports.provider = provider;