UNPKG

@shopify/create-app

Version:

A CLI tool to create a new Shopify app.

302 lines (294 loc) • 11.4 kB
import { isTruthy } from "./chunk-HNIAZN6U.js"; import { joinPath } from "./chunk-C3J4HVUN.js"; import { init_cjs_shims } from "./chunk-3XNI6LP4.js"; // ../cli-kit/dist/public/node/context/local.js init_cjs_shims(); // ../cli-kit/dist/private/node/context/utilities.js init_cjs_shims(); function isSet(variable) { return !(variable === void 0 || variable.trim() === ""); } function getCIMetadata(envName, envs) { switch (envName) { case "bitbucket": return { branch: envs.BITBUCKET_BRANCH, build: envs.BITBUCKET_BUILD_NUMBER, commitSha: envs.BITBUCKET_COMMIT, run: envs.BITBUCKET_BUILD_NUMBER, url: `https://bitbucket.org/${envs.BITBUCKET_WORKSPACE}/${envs.BITBUCKET_REPO_SLUG}/pipelines/results/${envs.BITBUCKET_BUILD_NUMBER}` }; case "circleci": return { actor: envs.CIRCLE_USERNAME, branch: envs.CIRCLE_BRANCH, build: envs.CIRCLE_BUILD_NUM, commitSha: envs.CIRCLE_SHA1, run: envs.CIRCLE_WORKFLOW_ID, url: envs.CIRCLE_BUILD_URL }; case "github": return { actor: envs.GITHUB_ACTOR, attempt: envs.GITHUB_RUN_ATTEMPT, branch: envs.GITHUB_REF_NAME, build: envs.GITHUB_RUN_ID, commitSha: envs.GITHUB_SHA, run: envs.GITHUB_RUN_ID, runNumber: envs.GITHUB_RUN_NUMBER, url: `${envs.GITHUB_SERVER_URL}/${envs.GITHUB_REPOSITORY}/actions/runs/${envs.GITHUB_RUN_ID}` }; case "gitlab": return { actor: envs.GITLAB_USER_LOGIN, branch: envs.CI_COMMIT_REF_NAME, build: envs.CI_PIPELINE_ID, commitSha: envs.CI_COMMIT_SHA, commitMessage: envs.CI_COMMIT_MESSAGE, run: envs.CI_RUNNER_ID, url: envs.CI_PIPELINE_URL }; case "buildkite": return { branch: envs.BUILDKITE_BRANCH, build: envs.BUILDKITE_BUILD_NUMBER, commitSha: envs.BUILDKITE_COMMIT, commitMessage: envs.BUILDKITE_MESSAGE, run: envs.BUILDKITE_BUILD_NUMBER, url: envs.BUILDKITE_BUILD_URL }; default: return {}; } } // ../cli-kit/dist/private/node/constants.js init_cjs_shims(); // ../../node_modules/.pnpm/env-paths@3.0.0/node_modules/env-paths/index.js init_cjs_shims(); import path from "node:path"; import os from "node:os"; import process2 from "node:process"; var homedir = os.homedir(), tmpdir = os.tmpdir(), { env } = process2, macos = (name) => { let library = path.join(homedir, "Library"); return { data: path.join(library, "Application Support", name), config: path.join(library, "Preferences", name), cache: path.join(library, "Caches", name), log: path.join(library, "Logs", name), temp: path.join(tmpdir, name) }; }, windows = (name) => { let appData = env.APPDATA || path.join(homedir, "AppData", "Roaming"), localAppData = env.LOCALAPPDATA || path.join(homedir, "AppData", "Local"); return { // Data/config/cache/log are invented by me as Windows isn't opinionated about this data: path.join(localAppData, name, "Data"), config: path.join(appData, name, "Config"), cache: path.join(localAppData, name, "Cache"), log: path.join(localAppData, name, "Log"), temp: path.join(tmpdir, name) }; }, linux = (name) => { let username = path.basename(homedir); return { data: path.join(env.XDG_DATA_HOME || path.join(homedir, ".local", "share"), name), config: path.join(env.XDG_CONFIG_HOME || path.join(homedir, ".config"), name), cache: path.join(env.XDG_CACHE_HOME || path.join(homedir, ".cache"), name), // https://wiki.debian.org/XDGBaseDirectorySpecification#state log: path.join(env.XDG_STATE_HOME || path.join(homedir, ".local", "state"), name), temp: path.join(tmpdir, username, name) }; }; function envPaths(name, { suffix = "nodejs" } = {}) { if (typeof name != "string") throw new TypeError(`Expected a string, got ${typeof name}`); return suffix && (name += `-${suffix}`), process2.platform === "darwin" ? macos(name) : process2.platform === "win32" ? windows(name) : linux(name); } // ../cli-kit/dist/private/node/constants.js var identifier = "shopify-cli", cacheFolder = () => process.env.XDG_CACHE_HOME ? process.env.XDG_CACHE_HOME : envPaths(identifier).cache; var environmentVariables = { alwaysLogAnalytics: "SHOPIFY_CLI_ALWAYS_LOG_ANALYTICS", alwaysLogMetrics: "SHOPIFY_CLI_ALWAYS_LOG_METRICS", deviceAuth: "SHOPIFY_CLI_DEVICE_AUTH", doctor: "SHOPIFY_CLI_DOCTOR", enableCliRedirect: "SHOPIFY_CLI_ENABLE_CLI_REDIRECT", env: "SHOPIFY_CLI_ENV", noAnalytics: "SHOPIFY_CLI_NO_ANALYTICS", optOutInstrumentation: "OPT_OUT_INSTRUMENTATION", appAutomationToken: "SHOPIFY_APP_AUTOMATION_TOKEN", partnersToken: "SHOPIFY_CLI_PARTNERS_TOKEN", runAsUser: "SHOPIFY_RUN_AS_USER", serviceEnv: "SHOPIFY_SERVICE_ENV", skipCliRedirect: "SHOPIFY_CLI_SKIP_CLI_REDIRECT", spinInstance: "SPIN_INSTANCE", themeToken: "SHOPIFY_CLI_THEME_TOKEN", unitTest: "SHOPIFY_UNIT_TEST", verbose: "SHOPIFY_FLAG_VERBOSE", // Variables to detect if the CLI is running in a cloud environment codespaces: "CODESPACES", codespaceName: "CODESPACE_NAME", codespacePortForwardingDomain: "GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN", gitpod: "GITPOD_WORKSPACE_URL", cloudShell: "CLOUD_SHELL", spinAppPort: "SERVER_PORT", spinAppHost: "SPIN_APP_HOST", organization: "SHOPIFY_CLI_ORGANIZATION", identityToken: "SHOPIFY_CLI_IDENTITY_TOKEN", refreshToken: "SHOPIFY_CLI_REFRESH_TOKEN", otelURL: "SHOPIFY_CLI_OTEL_EXPORTER_OTLP_ENDPOINT", themeKitAccessDomain: "SHOPIFY_CLI_THEME_KIT_ACCESS_DOMAIN", json: "SHOPIFY_FLAG_JSON", skipNetworkLevelRetry: "SHOPIFY_CLI_SKIP_NETWORK_LEVEL_RETRY", maxRequestTimeForNetworkCalls: "SHOPIFY_CLI_MAX_REQUEST_TIME_FOR_NETWORK_CALLS", disableImportScanning: "SHOPIFY_CLI_DISABLE_IMPORT_SCANNING" }, defaultThemeKitAccessDomain = "theme-kit-access.shopifyapps.com", systemEnvironmentVariables = { backendPort: "BACKEND_PORT" }, pathConstants = { executables: { dev: "/opt/dev/bin/dev" }, directories: { cache: { path: () => cacheFolder(), vendor: { path: () => joinPath(cacheFolder(), "vendor"), binaries: () => joinPath(cacheFolder(), "vendor", "binaries") } } } }, sessionConstants = { expirationTimeMarginInMinutes: 4 }, bugsnagApiKey = "9e1e6889176fd0c795d5c659225e0fae", reportingRateLimit = { limit: 300, timeout: { days: 1 } }, themeKitAccessDomain = process.env[environmentVariables.themeKitAccessDomain] ?? defaultThemeKitAccessDomain; // ../cli-kit/dist/public/node/context/local.js import { randomUUID } from "crypto"; import { homedir as homedir2, networkInterfaces } from "os"; async function lazyFileExists(path2) { let { fileExists } = await import("./fs-ZG73KWF7.js"); return fileExists(path2); } async function lazyExec(command, args) { let { exec } = await import("./system-KQM7CSD6.js"); await exec(command, args); } function isTerminalInteractive() { return !!(process.stdout.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)); } function homeDirectory() { return homedir2(); } var memoizedIsVerbose, memoizedIsUnitTest; function isDevelopment(env2 = process.env) { return env2[environmentVariables.env] === "development"; } function isVerbose(env2 = process.env) { return env2 === process.env ? memoizedIsVerbose ??= isTruthy(env2[environmentVariables.verbose]) || process.argv.includes("--verbose") : isTruthy(env2[environmentVariables.verbose]) || process.argv.includes("--verbose"); } async function isShopify(env2 = process.env) { return Object.prototype.hasOwnProperty.call(env2, environmentVariables.runAsUser) ? !isTruthy(env2[environmentVariables.runAsUser]) : await lazyFileExists(pathConstants.executables.dev); } function isUnitTest(env2 = process.env) { return env2 === process.env ? memoizedIsUnitTest ??= isTruthy(env2[environmentVariables.unitTest]) : isTruthy(env2[environmentVariables.unitTest]); } function analyticsDisabled(env2 = process.env) { return isTruthy(env2[environmentVariables.noAnalytics]) || isTruthy(env2[environmentVariables.optOutInstrumentation]) || isDevelopment(env2); } function alwaysLogAnalytics(env2 = process.env) { return isTruthy(env2[environmentVariables.alwaysLogAnalytics]); } function alwaysLogMetrics(env2 = process.env) { return isTruthy(env2[environmentVariables.alwaysLogMetrics]); } function canRunDoctorRelease(env2 = process.env) { return isTruthy(env2[environmentVariables.doctor]); } function gitpodURL(env2 = process.env) { return env2[environmentVariables.gitpod]; } function codespaceURL(env2 = process.env) { return env2[environmentVariables.codespaceName]; } function codespacePortForwardingDomain(env2 = process.env) { return env2[environmentVariables.codespacePortForwardingDomain]; } function isCloudEnvironment(env2 = process.env) { return cloudEnvironment(env2).platform !== "localhost"; } function themeToken(env2 = process.env) { return env2[environmentVariables.themeToken]; } function cloudEnvironment(env2 = process.env) { return isSet(env2[environmentVariables.codespaces]) ? { platform: "codespaces", editor: !0 } : isSet(env2[environmentVariables.gitpod]) ? { platform: "gitpod", editor: !0 } : isSet(env2[environmentVariables.cloudShell]) ? { platform: "cloudShell", editor: !0 } : { platform: "localhost", editor: !1 }; } async function hasGit() { try { return await lazyExec("git", ["--version"]), !0; } catch { return !1; } } function ciPlatform(env2 = process.env) { if (isTruthy(env2.CI)) { let name = "unknown"; return isSet(env2.BITBUCKET_BUILD_NUMBER) ? name = "bitbucket" : isTruthy(env2.CIRCLECI) ? name = "circleci" : isSet(env2.GITHUB_ACTION) ? name = "github" : isTruthy(env2.GITLAB_CI) ? name = "gitlab" : isSet(env2.BUILDKITE) && (name = "buildkite"), { isCI: !0, name, metadata: getCIMetadata(name, env2) }; } else if (isTruthy(env2.TF_BUILD)) return { isCI: !0, name: "azure", metadata: getCIMetadata("azure", env2) }; return { isCI: !1 }; } async function macAddress() { let emptyMac = "00:00:00:00:00:00", interfacesWithMac = Object.values(networkInterfaces()).flat().filter((iface) => !!(iface && iface.mac !== emptyMac)); return (interfacesWithMac.find((iface) => !iface.internal) ?? interfacesWithMac[0])?.mac ?? randomUUID(); } function getThemeKitAccessDomain(env2 = process.env) { let domain = env2[environmentVariables.themeKitAccessDomain]; return isSet(domain) ? domain : defaultThemeKitAccessDomain; } function opentelemetryDomain(env2 = process.env) { let domain = env2[environmentVariables.otelURL]; return isSet(domain) ? domain : "https://otlp-http-production-cli.shopifysvc.com"; } export { envPaths, environmentVariables, systemEnvironmentVariables, sessionConstants, bugsnagApiKey, reportingRateLimit, themeKitAccessDomain, isTerminalInteractive, homeDirectory, isDevelopment, isVerbose, isShopify, isUnitTest, analyticsDisabled, alwaysLogAnalytics, alwaysLogMetrics, canRunDoctorRelease, gitpodURL, codespaceURL, codespacePortForwardingDomain, isCloudEnvironment, themeToken, cloudEnvironment, hasGit, ciPlatform, macAddress, getThemeKitAccessDomain, opentelemetryDomain }; //# sourceMappingURL=chunk-X2X377NR.js.map