@todesktop/cli 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/utilities/checkIfReactIsUsable.js","../lib/components/TextInput.js","../lib/utilities/getCliVersion.js","../lib/utilities/logger.js","../lib/utilities/getEnvironmentVariables.js","../lib/utilities/firestore.js","../lib/utilities/configStore.js","../lib/utilities/analytics.js","../lib/utilities/useExit.js","../lib/components/ErrorDisplay.js","../lib/utilities/postToFirebaseFunction.js","../lib/components/Login.js","../lib/components/LoginHOC.js","../lib/components/ErrorBoundary.js","../lib/utilities/logForCI.js","../lib/components/BuildCompleteMessage.js","../lib/components/PlatformProgress.js","../lib/utilities/buildStatus.js","../lib/components/BuildProgress.js","../lib/utilities/getCallableFirebaseFunction.js","../lib/components/CancelBuild.js","../lib/components/Footer.js","../lib/components/Header.js","../lib/utilities/useInput.js","../lib/components/MainLayout.js","../lib/utilities/getLatestBuildId.js","../lib/utilities/projectConfig/loadConfig.js","../lib/utilities/projectConfig/resolveConfigPaths.js","../lib/utilities/projectConfig/schema/packageJSON.js","../lib/utilities/projectConfig/validatePackageJSON.js","../lib/utilities/projectConfig/addCustomKeywords.js","../lib/utilities/projectConfig/schema/full.js","../lib/utilities/projectConfig/validateConfig.js","../lib/utilities/projectConfig/getProjectConfig.js","../lib/utilities/shouldExitOnBuildFailure.js","../lib/utilities/subscribeToFirebaseDoc.js","../lib/utilities/subscribeToBuild.js","../lib/components/ViewBuild.js","../lib/components/TableEnd.js","../lib/components/TableHead.js","../lib/components/TableRow.js","../lib/components/TableBody.js","../lib/utilities/getKeyDetails.js","../lib/components/Table.js","../lib/utilities/capitalize.js","../lib/utilities/getBuilds.js","../lib/utilities/getRelativeDateFromDateString.js","../lib/components/ViewBuilds.js","../lib/utilities/exitIfCLIOutOfDate.js","../package.json","../lib/utilities/initSentry.js","../lib/utilities/onCommand.js","../lib/utilities/useAnalytics.js","builds.js"],"names":["cons","console","proc","process","e","error","exit","TextInput","onBlur","onFocus","props","useEffect","propTypes","PropTypes","func","cliVersion","require","pkgUp","sync","cwd","__dirname","version","logger","name","parentDirectory","homePath","os","homedir","platform","path","join","env","APPDATA","XDG_CONFIG_HOME","fs","mkdirSync","recursive","bunyan","createLogger","src","streams","level","noOp","debug","fatal","info","trace","warn","Sentry","captureException","err","hasInitialized","init","config","resolve","environmentVariables","firebaseDB","firebase","initializeApp","apiKey","TODESKTOP_CLI_FIREBASE_API_KEY","authDomain","TODESKTOP_CLI_FIREBASE_AUTH_DOMAIN","databaseURL","TODESKTOP_CLI_FIREBASE_DATABASE_URL","projectId","TODESKTOP_CLI_FIREBASE_PROJECT_ID","storageBucket","TODESKTOP_CLI_FIREBASE_STORAGE_BUCKET","messagingSenderId","TODESKTOP_CLI_FIREBASE_MESSAGING_SENDER_ID","appId","TODESKTOP_CLI_FIREBASE_ID","currentUser","auth","signInWithCustomToken","token","onUserAuth","handler","onAuthStateChanged","user","firestore","Conf","configName","accessTokenConfigKey","emailConfigKey","jwtTokenConfigKey","setConfig","key","value","set","getConfig","get","setAuthConfig","email","accessToken","jwtToken","getAuthConfig","deleteAuthConfig","delete","oldConfigPath","xdgBasedir","existsSync","force","analytics","Analytics","SEGMENT_WRITE_KEY","flushAt","flushInterval","ANALYTICS_EVENT","CLI_COMMAND","getAnalyticsBaseProperties","baseProps","client","release","app","runtime","anonymousId","track","event","properties","callback","userId","uid","undefined","identify","id","traits","flush","timeoutId","terminate","catch","Promise","race","setTimeout","finally","clearTimeout","ErrorDisplay","commandUsed","message","stack","toString","string","object","isRequired","TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE","functionName","body","response","axios","post","responseData","data","Login","loginFields","label","placeholder","Input","validate","mask","setIsLoggedIn","activeField","setActiveField","setError","failureMessage","setFailureMessage","isSubmittingForm","setIsSubmittingForm","onFailure","code","handleSubmit","validating","form","map","index","input","meta","valid","length","replace","invalid","touched","Error","errorMessage","marginTop","bool","LoginHOC","children","isInteractive","isLoggedIn","isEffectDone","setEffectDone","isRawModeSupported","isAccessTokenValid","userCreds","TODESKTOP_ACCESS_TOKEN","TODESKTOP_EMAIL","newJwtToken","isCi","ErrorBoundary","React","Component","constructor","state","eventId","getDerivedStateFromError","componentDidCatch","errorInfo","withScope","scope","setExtras","setState","render","args","log","BuildCompleteMessage","build","url","standardUniversalDownloadUrl","PlatformProgress","preLabelMaxWidth","getProgressPercentageLabel","percentage","activityType","backgroundColor","color","Math","round","padStart","activityName","downloadUrl","percent","shouldShowReadyPrefix","progressIndicator","activityNameToDisplay","substr","includes","toUpperCase","number","hasBuildKickedOff","status","isBuildCancellable","isBuildRunning","some","isPlatformBuildRunning","platformBuild","shouldSkip","numberOfAttemptedBuilds","BuildProgress","logForCIThrottled","logForCI","trailing","onBuildFailure","hasKickedOff","platformsNotSkipped","filter","previousState","ciPlatformProgress","charAt","slice","progressActivityName","progressPercentage","progressActivityType","standardDownloadUrl","TODESKTOP_CLI_ENV","functions","useFunctionsEmulator","httpsCallable","CancelBuild","cancelBuild","postCancelContents","buildId","arbitraryMessageComponent","hasCompleted","hasStarted","then","result","stateUpdates","prevState","Footer","hasBuildFailed","shouldShowCancelBuildInstructions","uiUrl","buildFailedMessage","Header","getText","suffix","hasSubscribed","ctrlCSubscriptions","onStdin","String","wasCtrlPressed","fromCharCode","charCodeAt","forEach","subscription","stdin","useInputOptions","stdInOptions","onStdinData","onCtrlCPressed","push","on","cleanUpInputHook","off","MainLayout","appName","appVersion","onInput","canCancelBuild","isCancellingBuild","wasCtrlCPressed","escape","oneOfType","array","appRef","doc","exists","buildsResult","collection","orderBy","limit","empty","docs","configPath","projectRoot","appRoot","appPath","isAbsolute","transformIfExists","transformer","resolvePath","filePath","icon","extraContentFiles","extraContentFile","from","extraResources","extraResource","linux","mac","entitlements","dmg","background","windows","context","type","required","author","npmAuthor","dependencies","excludedDependencies","dependencyKey","blacklist","devDependencies","electron","semanticVersion","packageName","mustBeExact","minLength","scripts","file","mustBeFile","pkg","pkgPath","ajv","Ajv","allErrors","jsonPointers","schema","compile","output","errors","indent","isValidationError","addKeyword","matchingPackages","keyword","dataPath","exact","test","mustBeDirectory","mustBeElectronApp","trim","isOptional","relative","startsWith","extensions","extname","stats","statSync","isFile","isDirectory","mainFilePath","main","resolvedMainFilePath","dataType","parsedAuthor","semver","validRange","getItemOrArrayOfItemsSchema","itemSchema","oneOf","items","getIconSchema","additionalAllowedExtensions","appFiles","minItems","appProtocolScheme","asarUnpack","copyright","electronMirror","format","electronVersion","to","fileAssociations","ext","description","mimeType","role","isPackage","rank","filesForDistribution","category","additionalBinariesToSign","extendInfo","artifactName","iconSize","iconTextSize","title","contents","x","y","window","width","height","schemaVersion","minimum","maximum","snap","after","appPartStage","assumes","autoStart","buildPackages","confinement","enum","environment","grade","layout","plugs","anyOf","stagePackages","summary","maxLength","useTemplateApp","uploadSizeLimit","productName","findUp","unprocessedConfig","every","receiver","reject","onSnapshot","snapshot","onDataReceived","ViewBuild","isLoading","onError","firebaseUnsubscribe","subscribe","firebaseUnsubscribeResult","latestBuildId","propName","componentName","shouldViewLatest","Boolean","TableEnd","keyDetails","content","Object","values","repeat","TableHead","topLine","contentLineElements","bottomLinePrefix","TableRow","getCellTextProps","textProps","entries","rowData","TableBody","Array","isArray","keys","max","item","sort","a","b","Table","addWhereClauses","query","startAfter","dateFns","formatDistance","Date","ViewBuilds","builds","hasMoreToLoad","isInitialLoadComplete","projectConfig","downArrow","pageDown","return","createdAt","pageSize","ID","Version","Status","releasedAt","toLowerCase","dimColor","AVA_PATH","latest","gt","commandToUpdate","chalk","greenBright","isInstalledGlobally","satisfies","module","exports","private","publishConfig","access","license","homepage","bugs","bin","todesktop","engines","node","dev","lint","files","archiver","conf","decamelize","del","dotenv","du","ink","react","superagent","uuid","yargs","ava","eslint","execa","husky","pastel","prettier","proxyquire","sinon","timeout","hooks","overrides","deasync","resolutions","TODESKTOP_CLI_SENTRY_DSN","dsn","configureScope","setUser","setContext","app_name","pkgJson","app_version","configResult","setExtra","defaultOptions","sentry","exitIfOutOfDate","options","useAnalyticsCommand","command","flags","hasAttemptedTracking","setTrackingAttempt","projectPath","authUnsubscribe","displayName","BuildsCommand","getContents","positionalArgs"],"mappings":"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","file":"builds.js","sourceRoot":"../../commands","sourcesContent":["import { useState } from \"react\";\n\n/*\n This should be called at the top of all commands to test if React\n is OK and if not, to exit cleanly.\n\n If React throws an error (e.g. when there are multiple versions of\n React in the customer's dependency tree), then we need to exit with\n a non-zero error code and not with an uncaught exception somewhere.\n\n These parameters exist only to make things more testable\n*/\nexport default ({ cons = console, proc = process } = {}) => {\n try {\n useState(null);\n } catch (e) {\n cons.error(e);\n proc.exit(1);\n }\n};\n","import InkTextInput from \"ink-text-input\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst TextInput = ({ onBlur, onFocus, ...props }) => {\n React.useEffect(() => {\n onFocus();\n return onBlur;\n }, [onFocus, onBlur]);\n return <InkTextInput {...props} showCursor />;\n};\n\nTextInput.propTypes = {\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n};\n\nexport default TextInput;\n","import pkgUp from \"pkg-up\";\n\nconst cliVersion = require(pkgUp.sync({\n cwd: __dirname,\n})).version;\n\nexport default () => cliVersion;\n","import bunyan from \"bunyan\";\nimport * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport * as Sentry from \"@sentry/node\";\n\nlet logger;\n\ntry {\n const name = \"todesktop-cli\";\n\n let parentDirectory;\n const homePath = os.homedir();\n if (process.platform === \"darwin\") {\n parentDirectory = path.join(homePath, \"Library\", \"Logs\", name);\n } else if (process.platform === \"win32\") {\n parentDirectory = path.join(\n process.env.APPDATA || path.join(homePath, \"AppData\", \"Roaming\"),\n name,\n \"logs\"\n );\n } else {\n parentDirectory = path.join(\n process.env.XDG_CONFIG_HOME || path.join(homePath, \".config\"),\n name,\n \"logs\"\n );\n }\n\n fs.mkdirSync(parentDirectory, { recursive: true });\n\n logger = bunyan.createLogger({\n name,\n src: true,\n streams: [\n {\n level: \"debug\",\n path: path.join(parentDirectory, \"main.log\"),\n },\n ],\n });\n} catch (e) {\n // Ignore\n\n const noOp = () => {};\n logger = {\n debug: noOp,\n error: noOp,\n fatal: noOp,\n info: noOp,\n trace: noOp,\n warn: noOp,\n };\n\n try {\n Sentry.captureException(e);\n } catch (err) {\n // Ignore\n }\n}\n\nexport default logger;\n","import dotenv from \"dotenv\";\nimport * as path from \"path\";\n\nlet hasInitialized = false;\n\nconst init = () => {\n if (hasInitialized) {\n return;\n }\n\n dotenv.config({\n path: path.resolve(__dirname, \"..\", \"..\", \".env\"),\n });\n hasInitialized = true;\n};\n\nexport default () => {\n init();\n return process.env;\n};\n","import * as firebase from \"firebase/app\";\nimport \"firebase/firestore\";\nimport \"firebase/auth\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nconst environmentVariables = getEnvironmentVariables();\n\n// if (environmentVariables.NODE_ENV === \"development\") {\n// if (true) {\n// firebase.firestore.setLogLevel(\"debug\");\n// }\n\nconst firebaseDB = firebase.initializeApp({\n apiKey: environmentVariables.TODESKTOP_CLI_FIREBASE_API_KEY,\n authDomain: environmentVariables.TODESKTOP_CLI_FIREBASE_AUTH_DOMAIN,\n databaseURL: environmentVariables.TODESKTOP_CLI_FIREBASE_DATABASE_URL,\n projectId: environmentVariables.TODESKTOP_CLI_FIREBASE_PROJECT_ID,\n storageBucket: environmentVariables.TODESKTOP_CLI_FIREBASE_STORAGE_BUCKET,\n messagingSenderId:\n environmentVariables.TODESKTOP_CLI_FIREBASE_MESSAGING_SENDER_ID,\n appId: environmentVariables.TODESKTOP_CLI_FIREBASE_ID,\n});\n\nexport const currentUser = () => firebase.auth().currentUser;\nexport const signInWithCustomToken = async (token) => {\n return firebase.auth().signInWithCustomToken(token);\n};\n\n/**\n * onUserAuth is only triggered on sign-in. This\n * happens once signInWithCustomToken is successful.\n *\n * It technically also triggers on sign-out but there's\n * no concept of signing out of firebase with the CLI app.\n * (See logout command which just deletes a local file)\n */\nexport const onUserAuth = (handler) =>\n firebase.auth().onAuthStateChanged((user) => {\n handler(user || {});\n });\n\nexport default firebaseDB.firestore();\n","import * as fs from \"fs\";\nimport del from \"del\";\nimport Conf from \"conf\";\nimport xdgBasedir from \"xdg-basedir\";\n\nconst config = new Conf({ configName: \"todesktop-cli\" });\n\nexport const accessTokenConfigKey = \"accessToken\";\nexport const emailConfigKey = \"email\";\nexport const jwtTokenConfigKey = \"jwtToken\";\n\nexport const setConfig = (key, value) => config.set(key, value);\nexport const getConfig = (key) => config.get(key);\n\nexport const setAuthConfig = (email, accessToken, jwtToken) => {\n setConfig(emailConfigKey, email);\n setConfig(accessTokenConfigKey, accessToken);\n setConfig(jwtTokenConfigKey, jwtToken);\n};\n\nexport const getAuthConfig = () => {\n const accessToken = getConfig(accessTokenConfigKey);\n const jwtToken = getConfig(jwtTokenConfigKey);\n const email = getConfig(emailConfigKey);\n\n return { accessToken, jwtToken, email };\n};\n\nexport const deleteAuthConfig = () => {\n config.delete(emailConfigKey);\n config.delete(accessTokenConfigKey);\n config.delete(jwtTokenConfigKey);\n};\n\n// TODO - Delete by end of April: backwards compatibility for old configstore\nconst oldConfigPath = `${xdgBasedir.config}/configstore/config.json.json`;\nif (fs.existsSync(oldConfigPath)) {\n try {\n // copy config from old json file to new json file, delete old file\n const { email, accessToken, jwtToken } = require(oldConfigPath);\n setAuthConfig(email, accessToken, jwtToken);\n del(oldConfigPath, { force: true });\n } catch (err) {\n // if invalid json, delete file to prompt new login\n del(oldConfigPath, { force: true });\n }\n}\n","import os from \"os\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport Analytics from \"analytics-node\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\nimport { currentUser } from \"./firestore\";\nimport { getAuthConfig } from \"./configStore\";\nimport getCliVersion from \"./getCliVersion\";\n\nconst environmentVariables = getEnvironmentVariables();\n\nconst analytics = new Analytics(environmentVariables.SEGMENT_WRITE_KEY, {\n flushAt: 1,\n flushInterval: 1,\n});\n\nexport const ANALYTICS_EVENT = {\n CLI_COMMAND: \"CLI Command\",\n};\n\nfunction getAnalyticsBaseProperties() {\n let baseProps = {\n client: \"cli\",\n };\n\n try {\n baseProps.os = {\n name: os.platform(),\n version: os.release(),\n };\n } catch (err) {}\n\n try {\n baseProps.user = {\n email: getAuthConfig().email,\n };\n } catch (err) {}\n\n try {\n baseProps.app = {\n cliVersion: getCliVersion(),\n };\n } catch (err) {}\n\n try {\n baseProps.runtime = {\n name: \"Node.js\",\n version: process.version,\n };\n } catch (err) {}\n\n return baseProps;\n}\n\nconst anonymousId = uuidv4();\nexport const track = (event, properties = {}, callback = () => {}) => {\n try {\n const user = currentUser();\n\n analytics.track(\n {\n event,\n userId: user ? user.uid : undefined,\n anonymousId,\n properties: {\n ...properties,\n ...getAnalyticsBaseProperties(),\n },\n },\n callback\n );\n } catch (err) {}\n};\n\nexport const identify = (id, traits = {}, callback = () => {}) => {\n try {\n analytics.identify({ userId: id, anonymousId, traits }, callback);\n } catch (err) {}\n};\n\nexport const flush = (callback = () => {}) => analytics.flush(callback);\n","import { useApp } from \"ink\";\nimport { flush } from \"./analytics\";\nimport firestore from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default () => {\n const { exit } = useApp();\n\n return (error) => {\n logger.debug({ error }, \"Exit called\");\n\n /*\n First, destroy connections.\n Why do we need to do this if we're going to call process.exit\n below anyway? Just to be safe in case a Firestore subscription\n triggers a state update after the React app is exited.\n */\n firestore.terminate().catch((e) =>\n // Ignore\n logger.error(e)\n );\n\n let timeoutId;\n Promise.race([\n // flush the analytics to make sure all outstanding events are pushed to segment\n new Promise((resolve) => flush(() => resolve())),\n // If it takes longer than 1 second, resolve early to proceed with program exit\n new Promise((resolve) => (timeoutId = setTimeout(() => resolve(), 1000))),\n ])\n .catch(() => {})\n .finally(() => {\n clearTimeout(timeoutId);\n /*\n Then, exit the React app. We don't pass the error because:\n 1. We don't want it displayed. We could give it a dummy error but\n that will output an empty line.\n 2. It doesn't exit with the correct code anyway, see\n https://github.com/vadimdemedes/pastel/issues/39.\n\n Side note: your component must not perform state updates after\n calling this, it will error.\n\n The try-catch shouldn't be needed here, but let's be safe\n */\n try {\n exit();\n } catch (e) {\n logger.error(e);\n // Ignore\n }\n\n /*\n Then exit the process.\n It should happen if all connections, etc. are destroyed. We manually\n exit with a code because:\n 1. We might not clean up properly, it could fail or take a long time.\n 2. The exit function above doesn't exit the CLI with the correct\n code anyway.\n\n If we had a way to detect when the app exits, we would use that\n and then call process.exit / destroy connections appropriately\n (https://github.com/vadimdemedes/pastel/issues/38).\n */\n setTimeout(() => process.exit(error ? 1 : 0), 10);\n });\n };\n};\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect } from \"react\";\nimport getCliVersion from \"../utilities/getCliVersion\";\nimport logger from \"../utilities/logger\";\nimport useExit from \"../utilities/useExit\";\n\nconst ErrorDisplay = ({ commandUsed, error }) => {\n const exit = useExit();\n logger.error({ error });\n\n // After an error is set, exit\n useEffect(() => {\n if (!error) {\n return;\n }\n // Just to avoid updating state after exiting the React app\n setTimeout(() => exit(error), 10);\n }, [exit, error]);\n\n return (\n <Fragment>\n <Text backgroundColor=\"red\" color=\"white\">\n {\" \"}\n ERROR{\" \"}\n </Text>\n <Text>{error.message || error.stack || error.toString()}</Text>\n\n <Box flexDirection=\"column\" marginTop={1}>\n {commandUsed ? (\n <Text dimColor color=\"gray\">\n Command: {commandUsed}\n </Text>\n ) : null}\n <Text dimColor color=\"gray\">\n @todesktop/cli: {getCliVersion()}\n </Text>\n <Text dimColor color=\"gray\">\n Node: {process.version}\n </Text>\n <Text dimColor color=\"gray\">\n cwd: {process.cwd()}\n </Text>\n </Box>\n </Fragment>\n );\n};\n\nErrorDisplay.propTypes = {\n commandUsed: PropTypes.string,\n error: PropTypes.object.isRequired,\n};\n\nexport default ErrorDisplay;\n","import axios from \"axios\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\nimport logger from \"./logger\";\n\nconst { TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE } = getEnvironmentVariables();\n\nexport default async function (functionName, body = {}, config = {}) {\n logger.debug({ functionName, body, config }, \"postToFirebaseFunction\");\n\n try {\n const response = await axios.post(\n `${TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE}${functionName}`,\n body,\n config\n );\n\n logger.debug(\n { responseData: response.data },\n \"postToFirebaseFunction: success\"\n );\n return response.data;\n } catch (e) {\n logger.error({ error: e }, \"postToFirebaseFunction: error\");\n throw e;\n }\n}\n","// modules\nimport { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useState } from \"react\";\nimport { Form, Field } from \"react-final-form\";\n\n// components\nimport TextInput from \"../components/TextInput\";\nimport ErrorDisplay from \"./ErrorDisplay\";\n\n// logic\nimport postToFirebaseFunction from \"../utilities/postToFirebaseFunction\";\nimport { signInWithCustomToken } from \"../utilities/firestore\";\nimport { setAuthConfig } from \"../utilities/configStore\";\n\nconst loginFields = [\n {\n name: \"email\",\n label: \"Your email\",\n placeholder: \"name@email.com\",\n Input: TextInput,\n validate: (value) => {\n if (!value) return \"Required\";\n },\n },\n {\n name: \"accessToken\",\n label: \"Your access token\",\n placeholder: \"********\",\n Input: TextInput,\n validate: (value) => {\n if (!value) return \"Required\";\n },\n mask: \"*\",\n },\n];\n\nconst Login = ({ setIsLoggedIn }) => {\n const [activeField, setActiveField] = useState(0);\n const [error, setError] = useState(null);\n const [failureMessage, setFailureMessage] = useState(null);\n const [isSubmittingForm, setIsSubmittingForm] = useState(false);\n\n const onFailure = (message) => {\n setIsSubmittingForm(false);\n setFailureMessage(message);\n setActiveField(0);\n };\n\n // login handler that verifies accessToken and email with that in firebase\n const onSubmitLogin = async ({ email, accessToken }) => {\n setFailureMessage(null);\n setIsSubmittingForm(true);\n\n try {\n const jwtToken = await postToFirebaseFunction(\"loginWithAccessToken\", {\n email,\n accessToken,\n });\n\n if (jwtToken) {\n await signInWithCustomToken(jwtToken);\n setAuthConfig(email, accessToken, jwtToken);\n setIsLoggedIn(true);\n } else {\n onFailure(\"Incorrrect credentials. Try again\");\n }\n } catch (err) {\n if (err.code === 500) {\n setError(err);\n } else {\n onFailure(`Login unsuccessful: ${err.message}`);\n }\n }\n };\n\n if (error) return <ErrorDisplay error={error} />;\n\n return (\n <Fragment>\n <Text>You are not currently logged in.</Text>\n <Text>Log in below:</Text>\n <Box marginBottom={1} />\n <Form onSubmit={onSubmitLogin}>\n {({ handleSubmit, validating, form }) => (\n <Box flexDirection=\"column\">\n {loginFields.map(\n ({ name, label, placeholder, validate, Input, mask }, index) => (\n <Field name={name} key={name} validate={validate}>\n {({ input, meta }) => (\n <Box flexDirection=\"column\">\n {activeField >= index ? (\n <Box>\n <Text bold={activeField === index}>{label}: </Text>\n {activeField === index ? (\n <Input\n {...input}\n mask={mask}\n placeholder={placeholder}\n onSubmit={() => {\n if (meta.valid && !validating) {\n setActiveField((value) => value + 1); // go to next field\n if (activeField === loginFields.length - 1) {\n // last field, so submit\n handleSubmit();\n }\n } else {\n input.onBlur(); // mark as touched to show error\n }\n }}\n />\n ) : (\n (input.value && (\n <Text>\n {name === \"accessToken\"\n ? input.value.replace(/./gi, \"*\")\n : input.value}\n </Text>\n )) ||\n (placeholder && (\n <Text color=\"gray\">{placeholder}</Text>\n ))\n )}\n {meta.invalid && meta.touched && (\n <Box marginLeft={2} marginRight={1}>\n <Text color=\"red\">✖</Text>\n </Box>\n )}\n {meta.error && meta.touched && (\n <Error errorMessage={meta.error} />\n )}\n </Box>\n ) : null}\n </Box>\n )}\n </Field>\n )\n )}\n </Box>\n )}\n </Form>\n\n {isSubmittingForm && (\n <Box marginTop={1}>\n <Text>Logging in...</Text>\n </Box>\n )}\n\n {failureMessage && <Error errorMessage={failureMessage} marginTop />}\n </Fragment>\n );\n};\n\nconst Error = ({ errorMessage, marginTop }) => (\n <Box marginTop={marginTop ? 1 : 0}>\n <Text color=\"red\">{errorMessage}</Text>\n </Box>\n);\n\nError.propTypes = {\n errorMessage: PropTypes.string.isRequired,\n marginTop: PropTypes.bool,\n};\n\nLogin.propTypes = {\n setIsLoggedIn: PropTypes.func.isRequired,\n};\n\nexport default Login;\n","import { Text, useStdin } from \"ink\";\nimport React, { Fragment, useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isCi from \"is-ci\";\n\n// components\nimport Login from \"./Login\";\n\n// logic\nimport { signInWithCustomToken } from \"../utilities/firestore\";\nimport { getAuthConfig, setAuthConfig } from \"../utilities/configStore\";\nimport postToFirebaseFunction from \"../utilities/postToFirebaseFunction\";\nimport getEnvironmentVariables from \"../utilities/getEnvironmentVariables\";\nimport ErrorDisplay from \"./ErrorDisplay\";\n\nconst LoginHOC = ({ children, isInteractive = true }) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isEffectDone, setEffectDone] = useState(false);\n const [error, setError] = useState(null);\n const { isRawModeSupported } = useStdin();\n\n const onFailure = (message, err = {}) => {\n setError({\n ...err,\n message,\n });\n };\n\n // use effect for determining if tokens exist and are valid\n useEffect(() => {\n async function isAccessTokenValid() {\n const { accessToken, email, jwtToken } = getAuthConfig();\n let userCreds = null;\n\n const { TODESKTOP_ACCESS_TOKEN, TODESKTOP_EMAIL } =\n getEnvironmentVariables();\n\n // 1. attempt log in with environment variables if present\n try {\n if (TODESKTOP_ACCESS_TOKEN && TODESKTOP_EMAIL) {\n const newJwtToken = await postToFirebaseFunction(\n \"loginWithAccessToken\",\n {\n email: TODESKTOP_EMAIL,\n accessToken: TODESKTOP_ACCESS_TOKEN,\n }\n );\n\n if (newJwtToken) {\n userCreds = await signInWithCustomToken(newJwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n // if no environment variables set and is in a CI, set alert message and exit\n } else if (!isRawModeSupported || isCi) {\n onFailure(\n \"ToDesktop environment variables not found. When automating builds with your CI provider, you need to specify environment variables for TODESKTOP_EMAIL and TODESKTOP_ACCESS_TOKEN.\"\n );\n }\n } catch (err) {\n // print error and stop the app execution if env variables attempted\n onFailure(\"Log in with environment variables failed.\", err);\n }\n\n // 2. attempt log in with jwtToken if present\n try {\n if (!userCreds && jwtToken) {\n userCreds = await signInWithCustomToken(jwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n } catch (err) {\n // do nothing, attempt login with accessToken and email\n }\n\n // 3. attempt log in with accessToken and email on disk\n try {\n if (!userCreds && accessToken && email) {\n const newJwtToken = await postToFirebaseFunction(\n \"loginWithAccessToken\",\n { email, accessToken }\n );\n\n if (newJwtToken) {\n userCreds = await signInWithCustomToken(newJwtToken);\n setAuthConfig(email, accessToken, newJwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n }\n } catch (err) {\n // do nothing: no error state and not logged in state means render login\n }\n\n setEffectDone(true);\n }\n\n isAccessTokenValid();\n }, []);\n\n if (error && isInteractive) {\n return <ErrorDisplay error={error} />;\n }\n\n if (!isEffectDone) {\n return <Text>...</Text>;\n }\n\n if (!isLoggedIn && isInteractive) {\n return <Login setIsLoggedIn={setIsLoggedIn} />;\n }\n\n return <Fragment>{children}</Fragment>;\n};\n\nLoginHOC.propTypes = {\n children: PropTypes.object,\n isInteractive: PropTypes.bool,\n};\n\nexport default LoginHOC;\n","import React from \"react\";\nimport * as Sentry from \"@sentry/node\";\nimport PropTypes from \"prop-types\";\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { eventId: null, error: null };\n }\n\n static getDerivedStateFromError(error) {\n return { error };\n }\n\n componentDidCatch(error, errorInfo) {\n Sentry.withScope((scope) => {\n scope.setExtras(errorInfo);\n const eventId = Sentry.captureException(error);\n this.setState({ eventId });\n });\n }\n\n render() {\n if (this.state.error) {\n throw this.state.error;\n }\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.object,\n};\n\nexport default ErrorBoundary;\n","import isCi from \"is-ci\";\nimport logger from \"./logger\";\n\nexport default (...args) => {\n logger.info({ args }, \"logForCI\");\n\n if (!isCi) {\n return;\n }\n console.log(...args);\n};\n","import { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect } from \"react\";\nimport logForCI from \"../utilities/logForCI\";\nimport useExit from \"../utilities/useExit\";\n\nconst BuildCompleteMessage = ({ build }) => {\n const exit = useExit();\n const url = build.standardUniversalDownloadUrl;\n\n logForCI(`Build complete! ${url}`);\n\n // On build completion, exit with non-error code\n useEffect(() => {\n if (url) {\n // Just to avoid updating state after exiting the React app\n setTimeout(exit, 10);\n }\n }, [exit, url]);\n\n return (\n <Box marginBottom={1}>\n <Text>\n <Text bold>Build complete!</Text>{\" \"}\n <Link fallback={false} url={url}>\n {url || \"\"}\n </Link>\n </Text>\n </Box>\n );\n};\n\nBuildCompleteMessage.propTypes = {\n build: PropTypes.object.isRequired,\n};\n\nexport default BuildCompleteMessage;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nconst preLabelMaxWidth = \"More info: \".length;\n\nconst getProgressPercentageLabel = (percentage, activityType) => {\n let backgroundColor = \"white\";\n let color = \"black\";\n\n if (activityType === \"error\") {\n backgroundColor = \"red\";\n } else if (percentage === 100) {\n backgroundColor = \"green\";\n color = \"black\";\n }\n\n return (\n <Fragment>\n <Text backgroundColor={backgroundColor} color={color}>\n {\" \"}\n {Math.round(percentage).toString().padStart(2, \"0\")}%{\" \"}\n </Text>\n <Text> </Text>\n </Fragment>\n );\n};\n\nconst PlatformProgress = ({\n activityName,\n activityType,\n downloadUrl,\n percent,\n platform,\n shouldShowReadyPrefix,\n}) => {\n let progressIndicator;\n if (activityType === \"done\") {\n progressIndicator = (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text>\n {getProgressPercentageLabel(100)}\n {shouldShowReadyPrefix ? \"Ready!\" : \"\"}\n </Text>\n <Link fallback={false} url={downloadUrl}>\n {downloadUrl}\n </Link>\n </Box>\n );\n } else {\n let activityNameToDisplay = activityName.replace(\n /(?:\\r\\n|\\r|\\n)\\s*/g,\n \"↵ \"\n );\n if (activityNameToDisplay.length > 64) {\n activityNameToDisplay = `${activityNameToDisplay.substr(0, 61)}...`;\n }\n\n progressIndicator = (\n <Fragment>\n <Box flexDirection={\"column\"} marginBottom={1}>\n <Text>\n {[\"preparation\", \"queue\"].includes(activityType)\n ? undefined\n : getProgressPercentageLabel(percent, activityType)}\n {activityNameToDisplay}\n {activityType === \"error\" ? \"\" : <Text>...</Text>}\n </Text>\n </Box>\n </Fragment>\n );\n }\n return (\n <Box>\n <Box width={preLabelMaxWidth}>\n <Text>{platform[0].toUpperCase() + platform.substr(1)}: </Text>\n </Box>\n {progressIndicator}\n </Box>\n );\n};\n\nPlatformProgress.propTypes = {\n activityName: PropTypes.string.isRequired,\n activityType: PropTypes.string.isRequired,\n downloadUrl: PropTypes.string,\n percent: PropTypes.number.isRequired,\n platform: PropTypes.string.isRequired,\n shouldShowReadyPrefix: PropTypes.bool,\n};\n\nexport default PlatformProgress;\n","export const hasBuildKickedOff = (build) => {\n if (!build) {\n return false;\n }\n return build.status && build.status !== \"preparation\";\n};\n\n// NOTE: this relies on Firestore solely\nexport const isBuildCancellable = (build) =>\n hasBuildKickedOff(build) && isBuildRunning(build);\n\nexport const isBuildRunning = (build) => {\n if (!build) {\n return false;\n }\n return (\n ![\"cancelled\", \"succeeded\"].includes(build.status) &&\n [\"linux\", \"mac\", \"windows\"].some((platform) =>\n isPlatformBuildRunning(build[platform])\n )\n );\n};\n\nexport const isPlatformBuildRunning = (platformBuild) => {\n if (!platformBuild) {\n return false;\n }\n return (\n !platformBuild.shouldSkip && // <-- Noteworthy\n ![\"cancelled\", \"succeeded\"].includes(platformBuild.status) &&\n (\"failed\" !== platformBuild.status ||\n platformBuild.numberOfAttemptedBuilds < 2)\n );\n};\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport throttle from \"lodash.throttle\";\nimport BuildCompleteMessage from \"./BuildCompleteMessage\";\nimport PlatformProgress from \"./PlatformProgress\";\nimport { hasBuildKickedOff } from \"../utilities/buildStatus\";\nimport logger from \"../utilities/logger\";\nimport logForCI from \"../utilities/logForCI\";\nimport useExit from \"../utilities/useExit\";\n\nconst logForCIThrottled = throttle(logForCI, 60 * 1000, { trailing: true });\n\nconst BuildProgress = ({ build, onBuildFailure }) => {\n logger.debug(\"BuildProgress component: render\");\n const exit = useExit();\n\n const [{ hasKickedOff }, setState] = useState({\n hasKickedOff: false,\n });\n const platformsNotSkipped = [\"windows\", \"mac\", \"linux\"].filter(\n (platform) => !build[platform].shouldSkip\n );\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n hasKickedOff: hasBuildKickedOff(build),\n }));\n }, [build]);\n\n useEffect(() => {\n if (build.status === \"failed\") {\n onBuildFailure(build.errorMessage);\n } else if (build.status === \"cancelled\") {\n setTimeout(exit, 10);\n } else {\n const ciPlatformProgress = platformsNotSkipped.map(\n (platform) =>\n `${platform.charAt(0).toUpperCase() + platform.slice(1)}: ${\n build[platform].progressActivityName\n } (${build[platform].progressPercentage}%)`\n );\n logForCIThrottled(ciPlatformProgress.join(\", \"));\n }\n }, [build, exit, onBuildFailure, platformsNotSkipped]);\n\n if (build.status === \"succeeded\") {\n return <BuildCompleteMessage build={build} />;\n }\n\n if (build.status === \"cancelled\") {\n return (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text>Build cancelled</Text>\n </Box>\n );\n }\n\n if (!hasKickedOff) {\n return null;\n }\n\n return (\n <Fragment>\n <Box flexDirection=\"column\">\n {platformsNotSkipped.map((platform) => (\n <Box flexDirection=\"column\" key={platform}>\n <PlatformProgress\n activityName={\n build[platform].status === \"failed\"\n ? build[platform].errorMessage\n : build[platform].progressActivityName\n }\n activityType={\n build[platform].status === \"failed\"\n ? \"error\"\n : build[platform].progressActivityType\n }\n downloadUrl={build[platform].standardDownloadUrl}\n percent={build[platform].progressPercentage}\n platform={platform}\n shouldShowReadyPrefix={\n !(build && [\"failed\", \"succeeded\"].includes(build.status))\n }\n />\n </Box>\n ))}\n </Box>\n </Fragment>\n );\n};\n\nBuildProgress.propTypes = {\n build: PropTypes.object.isRequired,\n onBuildFailure: PropTypes.func.isRequired,\n};\n\nexport default BuildProgress;\n","import * as firebase from \"firebase/app\";\nimport \"firebase/functions\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nif (getEnvironmentVariables().TODESKTOP_CLI_ENV === \"development\") {\n firebase.functions().useFunctionsEmulator(\"http://localhost:5000\");\n}\n\nexport default (functionName) =>\n firebase.functions().httpsCallable(functionName);\n","// libs\nimport { Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\n\n// components\nimport ErrorDisplay from \"./ErrorDisplay\";\n\n// utils\nimport getCallableFirebaseFunction from \"../utilities/getCallableFirebaseFunction\";\nimport logForCI from \"../utilities/logForCI\";\nimport logger from \"../utilities/logger\";\nimport useExit from \"../utilities/useExit\";\n\nconst cancelBuild = getCallableFirebaseFunction(\"cancelBuild\");\n\nconst CancelBuild = ({\n appId,\n children: postCancelContents,\n commandUsed,\n id,\n}) => {\n logger.debug({ appId, buildId: id }, \"CancelBuild component: render\");\n\n const exit = useExit();\n const [\n { arbitraryMessageComponent, error, hasCompleted, hasStarted },\n setState,\n ] = useState({\n arbitraryMessageComponent: null,\n error: null,\n hasCompleted: false,\n hasStarted: false,\n });\n\n useEffect(() => {\n if (hasCompleted || hasStarted) {\n return;\n }\n\n setState((previousState) => ({ ...previousState, hasStarted: true }));\n logForCI(\"Cancelling build...\");\n cancelBuild({ appId, buildId: id })\n .then((result) => {\n logger.debug(\n { appId, buildId: id, result },\n \"CancelBuild component: cancellation request complete\"\n );\n setState((previousState) => ({ ...previousState, hasCompleted: true }));\n })\n .catch((e) => {\n logger.debug(\n { appId, buildId: id, code: e.code },\n \"CancelBuild component: cancellation request failed\"\n );\n logger.error(e);\n let stateUpdates = {\n hasCompleted: true,\n };\n\n if (e.code === \"internal\") {\n stateUpdates.error = e;\n } else {\n stateUpdates.arbitraryMessageComponent = (\n <Text>\n <Text color=\"red\">Cannot cancel build ({id}).</Text> {e.message}\n </Text>\n );\n }\n\n setState((prevState) => ({\n ...prevState,\n ...stateUpdates,\n }));\n });\n }, [appId, id, hasStarted, hasCompleted]);\n\n // Exit when done, unless there are custom contents to display\n useEffect(() => {\n if (hasCompleted && !postCancelContents) {\n logger.debug(\n \"CancelBuild component: exiting now that build is cancelled\"\n );\n exit();\n }\n }, [postCancelContents, exit, hasCompleted]);\n\n if (error) {\n error.message = `Failed to cancel build (${id}). ${error.message}`;\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (arbitraryMessageComponent) {\n return arbitraryMessageComponent;\n }\n\n if (hasCompleted) {\n return postCancelContents ? (\n <Fragment>{postCancelContents}</Fragment>\n ) : (\n <Text>Build cancelled</Text>\n );\n }\n\n return <Text>Cancelling build ({id})...</Text>;\n};\n\nCancelBuild.propTypes = {\n appId: PropTypes.string.isRequired,\n // What's shown on succes, defaults to a simple success message\n children: PropTypes.object,\n commandUsed: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n};\n\nexport default CancelBuild;\n","import { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nconst Footer = ({\n hasBuildFailed,\n shouldShowCancelBuildInstructions,\n uiUrl,\n}) => {\n if (!uiUrl) {\n return null;\n }\n\n let buildFailedMessage;\n if (hasBuildFailed) {\n buildFailedMessage = <Text color=\"red\">An error has occurred. </Text>;\n }\n\n return (\n <Box flexDirection=\"column\">\n <Box flexDirection=\"column\">\n <Text bold>{buildFailedMessage}See web UI for more information: </Text>\n <Text>\n <Link fallback={false} url={uiUrl}>\n {uiUrl}\n </Link>\n </Text>\n </Box>\n {shouldShowCancelBuildInstructions ? (\n <Text color=\"gray\">\n <Text bold>[esc]:</Text> cancel build\n </Text>\n ) : null}\n </Box>\n );\n};\n\nFooter.propTypes = {\n hasBuildFailed: PropTypes.bool,\n shouldShowCancelBuildInstructions: PropTypes.bool,\n uiUrl: PropTypes.string,\n};\n\nexport default Footer;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nconst getText = (build, name, version) => {\n const suffix = name + (version ? ` v${version}` : \"\");\n\n if (build && [\"cancelled\", \"succeeded\", \"failed\"].includes(build.status)) {\n if (build.status === \"succeeded\") {\n return <Text>✅ {suffix}</Text>;\n } else if (build.status === \"failed\") {\n return <Text>❌ {suffix}</Text>;\n } else if (build.status === \"cancelled\") {\n return (\n <Text>\n <Text bold color=\"gray\">\n X\n </Text>{\" \"}\n {suffix}\n </Text>\n );\n }\n } else {\n return <Text>{suffix}</Text>;\n }\n};\n\nconst Header = ({ build, name, version }) => (\n <Box marginBottom={1}>{getText(build, name, version)}</Box>\n);\n\nHeader.propTypes = {\n build: PropTypes.object,\n name: PropTypes.string.isRequired,\n version: PropTypes.string,\n};\n\nexport default Header;\n","import isCi from \"is-ci\";\nimport { useInput, useStdin } from \"ink\";\nimport useExit from \"./useExit\";\n\nlet hasSubscribed = false;\nlet ctrlCSubscriptions = [];\n\nconst onStdin = (data, exit) => {\n let input = String(data);\n let wasCtrlPressed = false;\n if (input <= \"\\u001A\" && input !== \"\\r\") {\n input = String.fromCharCode(input.charCodeAt(0) + \"a\".charCodeAt(0) - 1);\n wasCtrlPressed = true;\n }\n if (wasCtrlPressed && input === \"c\") {\n ctrlCSubscriptions.forEach((subscription) => subscription());\n setTimeout(exit, 10);\n }\n};\n\n/*\n See https://github.com/vadimdemedes/pastel/issues/38\n*/\nexport default () => {\n if (isCi) {\n return () => () => {};\n }\n\n const exit = useExit();\n const { stdin } = useStdin();\n\n return (callback, useInputOptions, stdInOptions = {}) => {\n const onStdinData = (data) => onStdin(data, exit);\n\n if (stdInOptions.onCtrlCPressed) {\n ctrlCSubscriptions.push(stdInOptions.onCtrlCPressed);\n }\n\n if (!hasSubscribed) {\n hasSubscribed = true;\n\n // This is based on the Ink (useInput) source\n stdin.on(\"data\", onStdinData);\n }\n\n let cleanUpInputHook = useInput(callback, useInputOptions);\n\n return () => {\n if (hasSubscribed) {\n stdin.off(\"data\", onStdinData);\n }\n if (cleanUpInputHook) {\n cleanUpInputHook();\n }\n };\n };\n};\n","// libs\nimport { Box, Text } from \"ink\";\nimport isCi from \"is-ci\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\n\n// components\nimport CancelBuild from \"./CancelBuild\";\nimport Footer from \"./Footer\";\nimport Header from \"./Header\";\n\n// utilities\nimport {\n hasBuildKickedOff,\n isBuildCancellable,\n} from \"../utilities/buildStatus\";\nimport logger from \"../utilities/logger\";\nimport useInput from \"../utilities/useInput\";\n\nconst MainLayout = ({\n appId,\n appName,\n appVersion,\n build,\n children,\n commandUsed,\n hasBuildFailed,\n}) => {\n logger.debug(\"MainLayout component: render\");\n const onInput = useInput();\n\n const [\n { canCancelBuild, hasKickedOff, isCancellingBuild, wasCtrlCPressed },\n setState,\n ] = useState({\n canCancelBuild: null,\n hasKickedOff: false,\n isCancellingBuild: false,\n wasCtrlCPressed: false,\n });\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n hasKickedOff: hasBuildKickedOff(build),\n }));\n }, [build]);\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n canCancelBuild: !isCi && !isCancellingBuild && isBuildCancellable(build),\n }));\n }, [build, isCancellingBuild]);\n\n onInput(\n async (input, key) => {\n if (key.escape && canCancelBuild) {\n logger.debug(\"MainLayout component: esc pressed, cancelling build\");\n\n setState((previousState) => ({\n ...previousState,\n isCancellingBuild: true,\n }));\n }\n },\n {},\n {\n onCtrlCPressed: () => {\n setState((previousState) => ({\n ...previousState,\n wasCtrlCPressed: true,\n }));\n },\n }\n );\n\n return (\n <Fragment>\n <Header build={build} name={appName} version={appVersion} />\n\n {isCancellingBuild ? (\n <Box flexDirection=\"column\" marginBottom={1}>\n <CancelBuild appId={appId} commandUsed={commandUsed} id={build.id} />\n </Box>\n ) : (\n children\n )}\n\n <Footer\n hasBuildFailed={hasBuildFailed}\n shouldShowCancelBuildInstructions={canCancelBuild && !wasCtrlCPressed}\n uiUrl={build ? build.url : null}\n />\n\n {wasCtrlCPressed && hasKickedOff ? (\n <Fragment>\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color=\"gray\">\n The build will continue in the background. To view it, run:\n </Text>\n </Box>\n <Box>\n <Text bold color=\"gray\">\n todesktop builds {build.id}\n </Text>\n </Box>\n </Fragment>\n ) : null}\n </Fragment>\n );\n};\n\nMainLayout.propTypes = {\n appId: PropTypes.string,\n appName: PropTypes.string.isRequired,\n appVersion: PropTypes.string,\n build: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n commandUsed: PropTypes.string.isRequired,\n hasBuildFailed: PropTypes.bool,\n};\n\nexport default MainLayout;\n","import firestore, { currentUser } from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async ({ appId }) => {\n logger.debug({ appId }, \"getLatestBuildId\");\n const appRef = firestore.doc(\n `users/${currentUser().uid}/applications/${appId}`\n );\n const appSnapshot = await appRef.get();\n\n if (!appSnapshot.exists) {\n throw new Error(`Application with ID of ${appId} doesn't exist.`);\n }\n\n const buildsResult = await appRef\n .collection(\"builds\")\n .orderBy(\"createdAt\", \"desc\")\n .limit(1)\n .get();\n\n if (buildsResult.empty) {\n return null;\n } else {\n return buildsResult.docs[0].id;\n }\n};\n","// This is its own file just so we can mock it more easily\nexport default (configPath) => require(configPath);\n","import * as path from \"path\";\n\nexport default ({ config, projectRoot }) => {\n const appRoot = config.appPath\n ? path.isAbsolute(config.appPath)\n ? config.appPath\n : path.join(projectRoot, config.appPath)\n : projectRoot;\n\n const transformIfExists = (value, transformer) =>\n value ? transformer(value) : undefined;\n const resolvePath = (filePath) =>\n path.isAbsolute(filePath) ? filePath : path.join(projectRoot, filePath);\n\n const result = {\n ...config,\n appPath: appRoot,\n icon: resolvePath(config.icon),\n };\n\n if (config.extraContentFiles) {\n result.extraContentFiles = transformIfExists(\n config.extraContentFiles,\n (extraContentFiles) =>\n extraContentFiles.map((extraContentFile) => ({\n ...extraContentFile,\n from: resolvePath(extraContentFile.from),\n }))\n );\n }\n\n if (config.extraResources) {\n result.extraResources = transformIfExists(\n config.extraResources,\n (extraResources) =>\n extraResources.map((extraResource) => ({\n ...extraResource,\n from: resolvePath(extraResource.from),\n }))\n );\n }\n\n if (config.linux) {\n result.linux = { ...config.linux };\n\n if (config.linux.icon) {\n result.linux.icon = resolvePath(config.linux.icon);\n }\n }\n\n if (config.mac) {\n result.mac = { ...config.mac };\n\n if (config.mac.entitlements) {\n result.mac.entitlements = resolvePath(config.mac.entitlements);\n }\n\n if (config.mac.icon) {\n result.mac.icon = resolvePath(config.mac.icon);\n }\n }\n\n if (config.dmg) {\n if (config.dmg.background) {\n result.dmg.background = resolvePath(config.dmg.background);\n }\n }\n\n if (config.windows) {\n result.windows = { ...config.windows };\n\n if (config.windows.icon) {\n result.windows.icon = resolvePath(config.windows.icon);\n }\n }\n\n return result;\n};\n","export default (context) => {\n return {\n type: \"object\",\n required: [\n \"author\",\n \"dependencies\",\n \"devDependencies\",\n \"homepage\",\n \"name\",\n \"version\",\n ],\n properties: {\n author: {\n npmAuthor: {},\n },\n dependencies: {\n type: \"object\",\n required: [\"@todesktop/runtime\"],\n // custom keyword that checks package names aren't included in dependencies\n excludedDependencies: {\n dependencyKey: \"dependencies\",\n blacklist: [\"@todesktop/cli\"],\n },\n properties: {\n \"@todesktop/runtime\": {\n type: \"string\",\n },\n },\n },\n devDependencies: {\n type: \"object\",\n required: [\"electron\"],\n properties: {\n electron: {\n type: \"string\",\n semanticVersion: {\n packageName: \"electron\",\n mustBeExact: true,\n },\n },\n },\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n scripts: {\n type: \"object\",\n properties: {\n \"todesktop:beforeInstall\": {\n type: \"string\",\n file: {\n from: context.projectRoot,\n mustBeFile: true,\n },\n },\n \"todesktop:afterPack\": {\n type: \"string\",\n file: {\n from: context.projectRoot,\n mustBeFile: true,\n },\n },\n },\n },\n version: {\n type: \"string\",\n semanticVersion: {},\n },\n },\n };\n};\n","import Ajv from \"ajv\";\nimport betterAjvErrors from \"better-ajv-errors\";\nimport addCustomKeywords from \"./addCustomKeywords\";\nimport getPackageJsonSchema from \"./schema/packageJSON\";\n\nexport default (pkg, pkgPath, context) => {\n const ajv = new Ajv({ allErrors: true, jsonPointers: true });\n addCustomKeywords(ajv, context);\n const schema = getPackageJsonSchema(context);\n const validate = ajv.compile(schema);\n if (!validate(pkg)) {\n const output = betterAjvErrors(schema, pkg, validate.errors, {\n indent: 2,\n });\n\n const error = new Error(`package.json invalid (${pkgPath}); \\n${output}`);\n error.isValidationError = true;\n // This throws and bubbles all the way up to the user\n throw error;\n }\n};\n","/*\n See https://ajv.js.org/custom.html\n*/\nimport emailRegex from \"email-regex\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport parseAuthor from \"parse-author\";\nimport * as semver from \"semver\";\nimport validatePackageJSON from \"./validatePackageJSON\";\n\nexport default (ajv, context) => {\n // validate that dependencies object doesn't contain packageNames in the blacklist\n ajv.addKeyword(\"excludedDependencies\", {\n validate: function validate(schema, data) {\n let matchingPackages = schema.blacklist.filter(\n (packageName) => data[packageName]\n );\n\n if (matchingPackages.length) {\n validate.errors = [\n {\n keyword: \"Dependency\",\n message: `${matchingPackages.join(\", \")} should not be in ${\n schema.dependencyKey\n }`,\n dataPath: `/${schema.dependencyKey}`,\n },\n ];\n return false;\n }\n\n return true;\n },\n });\n\n ajv.addKeyword(\"email\", {\n type: \"string\",\n minLength: 5,\n validate: function validate(schema, data) {\n if (!emailRegex({ exact: true }).test(data)) {\n validate.errors = [\n {\n keyword: \"email\",\n message: \"invalid\",\n },\n ];\n return false;\n }\n return true;\n },\n });\n\n ajv.addKeyword(\"file\", {\n type: \"string\",\n validate: function validate(schema, data) {\n const mustBeDirectory =\n schema.mustBeDirectory || schema.mustBeElectronApp;\n\n // Value is empty\n if (!data.trim().length) {\n if (schema.isOptional) {\n return true;\n }\n\n validate.errors = [\n {\n keyword: schema.mustBeDirectory ? \"Directory\" : \"File\",\n message: \"is empty\",\n },\n ];\n return false;\n }\n\n const filePath = path.isAbsolute(data)\n ? data\n : path.join(schema.from, data);\n\n // Isn't in project\n if (path.relative(schema.from, filePath).startsWith(\"..\")) {\n validate.errors = [\n {\n keyword: mustBeDirectory ? \"Directory\" : \"File\",\n message: `is not in project (${filePath})`,\n },\n ];\n return false;\n }\n\n // Extension isn't allowed\n if (\n schema.extensions &&\n !schema.extensions.includes(path.extname(filePath).substr(1))\n ) {\n validate.errors = [\n {\n keyword: \"File extension\",\n message: `invalid. ${path.extname(data)} Must be${\n schema.extensions > 1 ? \"one of the following:\" : \"\"\n } \"${schema.extensions.join('\", \"')}\"`,\n },\n ];\n return false;\n }\n\n // Doesn't exist\n if (!fs.existsSync(filePath)) {\n validate.errors = [\n {\n keyword: mustBeDirectory ? \"Directory\" : \"File\",\n message: `does not exist (${filePath})`,\n },\n ];\n return false;\n }\n\n const stats = fs.statSync(filePath);\n\n if (mustBeDirectory && stats.isFile()) {\n validate.errors = [\n {\n keyword: \"Directory\",\n message: `must be a directory, not a file (${filePath})`,\n },\n ];\n return false;\n } else if (schema.mustBeFile && stats.isDirectory()) {\n validate.errors = [\n {\n keyword: \"File\",\n message: `must be a file, not a directory (${filePath})`,\n },\n ];\n return false;\n }\n\n if (schema.mustBeElectronApp) {\n const appRoot = path.resolve(filePath);\n const pkgPath = path.join(appRoot, \"package.json\");\n\n if (!fs.existsSync(pkgPath)) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. There is no package.json at ${pkgPath}`,\n },\n ];\n return false;\n }\n\n let pkg;\n try {\n pkg = require(pkgPath);\n } catch (e) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. Invalid JSON in package.json (${pkgPath})`,\n },\n ];\n return false;\n }\n\n context.projectRoot = appRoot;\n // This throws and bubbles all the way up to the user\n validatePackageJSON(pkg, pkgPath, context);\n\n // Validate that either an index.js or valid \"main\" property exists\n const mainFilePath = pkg.main;\n if (mainFilePath) {\n const resolvedMainFilePath = path.join(appRoot, mainFilePath);\n if (!fs.existsSync(resolvedMainFilePath)) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. The \"main\" file specified in your package.json (${mainFilePath}) does not exist (${resolvedMainFilePath})`,\n },\n ];\n return false;\n }\n } else {\n if (!fs.existsSync(path.join(appRoot, \"index.js\"))) {\n validate.errors = [\n {\n keyword: \"App\",\n message:\n 'invalid. There is neither a \"main\" property in your package.json nor an index.js at the root of your app',\n },\n ];\n return false;\n }\n }\n }\n\n return true;\n },\n errors: true,\n });\n\n ajv.addKeyword(\"npmAuthor\", {\n validate: function validate(schema, data) {\n const dataType = typeof data;\n if (dataType === \"undefined\") {\n return true;\n } else if (dataType === \"string\") {\n const parsedAuthor = parseAuthor(data);\n if (!parsedAuthor || !parsedAuthor.email) {\n validate.errors = [\n {\n keyword: \"author\",\n message:\n 'invalid. If you\\'re using a string, it must look something like \"Barney Rubble <b@rubble.com>\", see https://docs.npmjs.com/files/package.json#people-fields-author-contributors',\n },\n ];\n return false;\n }\n } else if (dataType === \"object\") {\n if (typeof data.name === \"undefined\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `invalid. \"name\" property is missing.`,\n },\n ];\n return false;\n } else {\n if (typeof data.name !== \"string\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.name invalid. It must be a string`,\n },\n ];\n return false;\n }\n\n if (typeof data.email === \"undefined\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `invalid. \"email\" property is missing.`,\n },\n ];\n return false;\n } else {\n if (typeof data.email === \"string\") {\n if (!emailRegex({ exact: true }).test(data.email)) {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.email invalid. It does not look like an email.`,\n },\n ];\n return false;\n }\n } else {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.email invalid. It must be a string.`,\n },\n ];\n return false;\n }\n }\n }\n } else {\n // Neither object nor string\n validate.errors = [\n {\n keyword: \"author\",\n message:\n \"invalid. It must either be an object or string. See https://docs.npmjs.com/files/package.json#people-fields-author-contributors\",\n },\n ];\n return false;\n }\n\n return true;\n },\n errors: true,\n });\n\n ajv.addKeyword(\"semanticVersion\", {\n type: \"string\",\n minLength: 5,\n validate: function validate(schema, data) {\n const keyword =\n (schema.packageName ? `${schema.packageName} ` : \"\") + \"version\";\n\n if (!(semver.valid(data) || semver.validRange(data))) {\n validate.errors = [\n {\n keyword,\n message:\n \"invalid. It must be a semantic version (see https://semver.org/)\",\n },\n ];\n return false;\n }\n\n if (\n schema.mustBeExact &&\n (data.startsWith(\"~\") || data.startsWith(\"^\"))\n ) {\n validate.errors = [\n {\n keyword,\n message:\n \"invalid. It must be an exact version. Good: 9.0.0. Bad: ^9.0.0\",\n },\n ];\n return false;\n }\n return true;\n },\n });\n};\n","const getItemOrArrayOfItemsSchema = (itemSchema) => {\n return {\n oneOf: [\n itemSchema,\n {\n type: \"array\",\n items: itemSchema,\n },\n ],\n };\n};\n\nexport default (context) => {\n const getIconSchema = (additionalAllowedExtensions = []) => {\n return {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"icns\", \"png\", ...additionalAllowedExtensions],\n mustBeFile: true,\n },\n minLength: 3,\n };\n };\n\n return {\n type: \"object\",\n required: [\"id\", \"icon\", \"schemaVersion\"],\n properties: {\n appId: { type: \"string\", minLength: 1 },\n appFiles: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n appProtocolScheme: { type: \"string\", minLength: 1 },\n appPath: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n isOptional: true,\n mustBeElectronApp: true,\n },\n },\n asarUnpack: {\n oneOf: [\n { type: \"boolean\" },\n {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n ],\n },\n copyright: { type: \"string\", minLength: 1 },\n electronMirror: {\n type: \"string\",\n format: \"uri\",\n },\n electronVersion: {\n type: \"string\",\n minLength: 1,\n },\n extraContentFiles: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"from\"],\n properties: {\n from: {\n type: \"string\",\n file: { from: context.projectRoot },\n },\n to: { type: \"string\" },\n },\n },\n },\n extraResources: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"from\"],\n properties: {\n from: {\n type: \"string\",\n file: { from: context.projectRoot },\n },\n to: { type: \"string\" },\n },\n },\n },\n fileAssociations: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"ext\"],\n properties: {\n ext: getItemOrArrayOfItemsSchema({\n type: \"string\",\n minLength: 1,\n }),\n description: {\n type: \"string\",\n minLength: 1,\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n mimeType: {\n type: \"string\",\n minLength: 1,\n },\n icon: {\n type: \"string\",\n minLength: 1,\n },\n role: {\n type: \"string\",\n minLength: 1,\n },\n isPackage: {\n type: \"boolean\",\n },\n rank: {\n type: \"string\",\n minLength: 1,\n },\n },\n },\n minItems: 1,\n },\n filesForDistribution: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n icon: getIconSchema(),\n linux: {\n properties: {\n category: { type: \"string\", minLength: 1 },\n icon: getIconSchema(),\n },\n },\n id: { type: \"string\", minLength: 1 },\n mac: {\n properties: {\n category: { type: \"string\", minLength: 1 },\n additionalBinariesToSign: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n entitlements: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"plist\"],\n mustBeFile: true,\n },\n minLength: 1,\n },\n extendInfo: {\n type: \"object\",\n },\n icon: getIconSchema(),\n },\n },\n dmg: {\n properties: {\n background: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"tiff\"],\n mustBeFile: true,\n },\n minLength: 1,\n },\n artifactName: { type: \"string\", minLength: 1 },\n backgroundColor: { type: \"string\", minLength: 1 },\n iconSize: { type: \"number\" },\n iconTextSize: { type: \"number\" },\n title: { type: \"string\", minLength: 1 },\n contents: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n x: { type: \"number\" },\n y: { type: \"number\" },\n },\n },\n },\n window: {\n type: \"object\",\n properties: {\n x: { type: \"number\" },\n y: { type: \"number\" },\n width: { type: \"number\" },\n height: { type: \"number\" },\n },\n },\n },\n },\n schemaVersion: { type: \"number\", minimum: 1, maximum: 1 },\n snap: {\n properties: {\n after: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n appPartStage: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n assumes: getItemOrArrayOfItemsSchema({\n type: \"string\",\n minLength: 1,\n }),\n autoStart: {\n type: \"boolean\",\n },\n buildPackages: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n confinement: {\n type: \"string\",\n enum: [\"classic\", \"devmode\", \"strict\"],\n },\n environment: {\n type: \"object\",\n },\n grade: {\n type: \"string\",\n enum: [\"devel\", \"stable\"],\n },\n layout: {\n type: \"object\",\n },\n plugs: {\n type: \"array\",\n items: {\n anyOf: [\n {\n type: \"string\",\n minLength: 1,\n },\n {\n type: \"object\",\n },\n ],\n },\n },\n stagePackages: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n summary: {\n type: \"string\",\n maxLength: 78,\n },\n useTemplateApp: {\n type: \"boolean\",\n },\n },\n },\n uploadSizeLimit: {\n type: \"number\",\n },\n windows: {\n properties: {\n icon: getIconSchema([\"ico\"]),\n },\n },\n },\n };\n};\n","import Ajv from \"ajv\";\nimport betterAjvErrors from \"better-ajv-errors\";\nimport addCustomKeywords from \"./addCustomKeywords\";\nimport getFullSchema from \"./schema/full\";\n\nexport default ({ config, projectRoot }) => {\n const context = { projectRoot };\n const schema = getFullSchema(context);\n\n const ajv = new Ajv({ allErrors: true, jsonPointers: true });\n addCustomKeywords(ajv, context);\n const validate = ajv.compile(schema);\n\n if (!validate(config)) {\n const output = betterAjvErrors(schema, config, validate.errors, {\n indent: 2,\n });\n\n throw new Error(\n `todesktop.json invalid. \\nLearn more here: https://www.npmjs.com/package/@todesktop/cli#project-configuration-todesktopjson \\n\\n${output}`\n );\n }\n\n if (config.productName) {\n throw new Error(\n `todesktop.json invalid.\n\nThe \"productName\" property is no longer supported in todesktop.json. Please remove it and add it to your app's package.json instead.\n\nWe made this change because Electron also uses the \"productName\" if it exists in your app's package.json. If you do not add it to your package.json, your app name will default to the value of the \"name\" property in your package.json.`\n );\n }\n};\n","import { dirname } from \"path\";\nimport findUp from \"find-up\";\nimport loadConfig from \"./loadConfig\";\nimport resolveConfigPaths from \"./resolveConfigPaths\";\nimport validateConfig from \"./validateConfig\";\n\nexport default () => {\n const configPath = findUp.sync(\"todesktop.json\");\n if (!configPath) {\n throw new Error(\n \"Can not find todesktop.json in this folder or any parent folders\"\n );\n }\n const projectRoot = dirname(configPath);\n\n // This will throw if it's not valid JSON\n const config = loadConfig(configPath);\n config.appPath = config.appPath || \".\";\n\n // This will throw if invalid\n validateConfig({ config, projectRoot });\n\n const result = resolveConfigPaths({ config, projectRoot });\n return { config: result, unprocessedConfig: config, projectRoot };\n};\n","// X build has failed, should we exit? I.e. is it settled?\nexport default (build) =>\n [\"linux\", \"mac\", \"windows\"].every(\n (platform) =>\n build[platform].shouldSkip ||\n \"succeeded\" === build[platform].status ||\n (\"failed\" === build[platform].status &&\n build[platform].numberOfAttemptedBuilds === 2)\n );\n","import firestore from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async (key, receiver) => {\n const hasResolved = false;\n\n return new Promise((resolve, reject) => {\n logger.debug({ key }, \"subscribeToFirebaseDoc\");\n firestore.doc(key).onSnapshot(\n (snapshot) => {\n receiver({\n snapshot,\n data: snapshot.exists ? snapshot.data() : undefined,\n });\n if (!hasResolved) {\n resolve();\n }\n },\n (err) => {\n reject(err);\n }\n );\n });\n};\n","import subscribeToFirebaseDoc from \"./subscribeToFirebaseDoc\";\n\nexport default async ({ appId, buildId, onDataReceived, userId }) => {\n try {\n return await subscribeToFirebaseDoc(\n `users/${userId}/applications/${appId}/builds/${buildId}`,\n async ({ data }) => {\n onDataReceived(data);\n }\n );\n } catch (e) {\n e.message = `Failed while subscribing to build; ${e.message}`;\n throw e;\n }\n};\n","// libs\nimport { Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\n\n// components\nimport BuildProgress from \"./BuildProgress\";\nimport ErrorDisplay from \"./ErrorDisplay\";\nimport MainLayout from \"./MainLayout\";\n\n// utils\nimport { currentUser } from \"../utilities/firestore\";\nimport getLatestBuildId from \"../utilities/getLatestBuildId\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport logForCI from \"../utilities/logForCI\";\nimport shouldExitOnBuildFailure from \"../utilities/shouldExitOnBuildFailure\";\nimport subscribeToBuild from \"../utilities/subscribeToBuild\";\nimport useExit from \"../utilities/useExit\";\n\nconst ViewBuild = ({ commandUsed, id }) => {\n const exit = useExit();\n const [\n {\n appId,\n arbitraryMessageComponent,\n build,\n error,\n hasBuildFailed,\n isLoading,\n },\n setState,\n ] = useState({\n appId: null,\n arbitraryMessageComponent: null,\n build: null,\n error: null,\n hasBuildFailed: false,\n isLoading: true,\n });\n\n const onError = (e) => {\n const error = e.response ? e.response.data : e;\n logForCI(error);\n setState((prevState) => ({\n ...prevState,\n error,\n }));\n };\n\n useEffect(() => {\n let config;\n try {\n // This will throw if validation fails:\n config = getProjectConfig().config;\n } catch (e) {\n setState((previousState) => ({ ...previousState, error: e }));\n return;\n }\n\n let firebaseUnsubscribe;\n\n const subscribe = (buildId) => {\n subscribeToBuild({\n appId: config.id,\n buildId,\n onDataReceived: (data) => {\n if (!data) {\n onError(\n new Error(\n `No such build exists (${buildId}). Please contact us if this is an error`\n )\n );\n }\n setState((prevState) => ({\n ...prevState,\n appId: config.id,\n build: data,\n isLoading: false,\n }));\n },\n userId: currentUser().uid,\n })\n .then((firebaseUnsubscribeResult) => {\n firebaseUnsubscribe = firebaseUnsubscribeResult;\n })\n .catch(onError);\n };\n\n if (id) {\n subscribe(id);\n } else {\n getLatestBuildId({ appId: config.id })\n .catch(onError)\n .then((latestBuildId) => {\n if (!latestBuildId) {\n setState((previousState) => ({\n ...previousState,\n arbitraryMessageComponent: <Text>There are no builds yet</Text>,\n }));\n return;\n }\n return subscribe(latestBuildId);\n });\n }\n\n return () => {\n if (firebaseUnsubscribe) {\n firebaseUnsubscribe();\n }\n };\n }, [id]);\n\n // Exit if the build has errored and settled\n useEffect(() => {\n if (hasBuildFailed && shouldExitOnBuildFailure(build)) {\n setTimeout(() => exit(new Error(\"Build has failed\")), 10);\n }\n }, [build, exit, hasBuildFailed]);\n\n // Exit once an arbitrary message exists\n useEffect(() => {\n if (arbitraryMessageComponent) {\n setTimeout(() => exit(new Error(\"Validation failed\")), 10);\n }\n }, [arbitraryMessageComponent, exit]);\n\n if (error) {\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (arbitraryMessageComponent) {\n return arbitraryMessageComponent;\n }\n\n if (isLoading) {\n return <Text>Loading...</Text>;\n }\n\n const onBuildFailure = () => {\n if (hasBuildFailed) {\n return;\n }\n setState((prevState) => ({\n ...prevState,\n hasBuildFailed: true,\n }));\n };\n\n return (\n <MainLayout\n appId={appId}\n appName={build.appName}\n appVersion={build.appVersion}\n build={build}\n commandUsed={commandUsed}\n hasBuildFailed={hasBuildFailed}\n >\n <BuildProgress build={build} onBuildFailure={onBuildFailure} />\n </MainLayout>\n );\n};\n\nViewBuild.propTypes = {\n id: (props, propName, componentName) => {\n if ([props.id, props.shouldViewLatest].filter(Boolean).length !== 1) {\n return new Error(\n `Exactly one of 'id' and 'shouldViewLatest' must be specified in '${componentName}'`\n );\n }\n\n const type = typeof props.id;\n if (![\"string\", \"undefined\"].includes(type)) {\n return new Error(\n `'id' is a '${type}', not a string, in '${componentName}'.`\n );\n }\n },\n commandUsed: PropTypes.string.isRequired,\n shouldViewLatest: (props, propName, componentName) => {\n if ([props.id, props.shouldViewLatest].filter(Boolean).length !== 1) {\n return new Error(\n `Exactly one of 'id' and 'shouldViewLatest' must be specified in '${componentName}'`\n );\n }\n\n const type = typeof props.shouldViewLatest;\n if (![\"boolean\", \"undefined\"].includes(type)) {\n return new Error(\n `'shouldViewLatest' is a '${type}', not a boolean, in '${componentName}'.`\n );\n }\n },\n};\n\nexport default ViewBuild;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\n/*\n See Table component\n*/\nconst TableEnd = ({ keyDetails, ...props }) => {\n let content = \"└\";\n content += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┴\");\n content += \"┘\";\n\n return (\n <Box {...props}>\n <Text>{content}</Text>\n </Box>\n );\n};\n\nTableEnd.propTypes = {\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableEnd;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\n\n/*\n See Table component\n*/\nconst TableHead = ({ keyDetails, ...props }) => {\n let topLine = \"┌\";\n topLine += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┬\");\n topLine += \"┐\";\n\n const contentLineElements = Object.values(keyDetails).map(\n ({ key, width }, index) => {\n return (\n <Fragment key={key}>\n {index > 0 ? <Text> │ </Text> : null}\n <Box width={width}>\n <Text bold>{key}</Text>\n </Box>\n </Fragment>\n );\n }\n );\n\n return (\n <Box flexDirection=\"column\" {...props}>\n <Box>\n <Text>{topLine}</Text>\n </Box>\n <Box>\n <Box>\n <Text>│ </Text>\n {contentLineElements}\n <Text> │</Text>\n </Box>\n </Box>\n </Box>\n );\n};\n\nTableHead.propTypes = {\n bottomLinePrefix: PropTypes.string,\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableHead;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\n\n/*\n See Table component\n*/\nconst TableRow = ({\n data,\n getCellTextProps = ({ props }) => props,\n keyDetails,\n textProps = {},\n}) => {\n let topLine = \"├\";\n topLine += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┼\");\n topLine += \"┤\";\n\n const content = (\n <Fragment>\n <Text>│ </Text>\n {Object.entries(data).map(([key, value], index) => {\n return (\n <Box key={key}>\n {index > 0 ? <Text> │ </Text> : null}\n <Box width={keyDetails[key].width}>\n <Text\n {...getCellTextProps({\n key,\n props: textProps,\n rowData: data,\n value,\n })}\n >\n {value}\n </Text>\n </Box>\n </Box>\n );\n })}\n <Text> │</Text>\n </Fragment>\n );\n\n return (\n <Fragment>\n <Box flexDirection=\"column\">\n <Text>{topLine}</Text>\n <Box>{content}</Box>\n </Box>\n </Fragment>\n );\n};\n\nTableRow.propTypes = {\n data: PropTypes.object.isRequired,\n getCellTextProps: PropTypes.func,\n keyDetails: PropTypes.object.isRequired,\n textProps: PropTypes.object,\n};\n\nexport default TableRow;\n","import PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\nimport TableRow from \"./TableRow\";\n\n/*\n See Table component\n*/\nconst TableBody = ({ data, getCellTextProps, keyDetails }) => {\n return (\n <Fragment>\n {data.map((rowData, index) => (\n <TableRow\n data={rowData}\n getCellTextProps={getCellTextProps}\n key={index}\n keyDetails={keyDetails}\n />\n ))}\n </Fragment>\n );\n};\n\nTableBody.propTypes = {\n data: (props, propName, componentName) => {\n const type = typeof props.data;\n if (Array.isArray(\"array\")) {\n return new Error(\n `'data' prop must be an array ('${type}' given) in ${componentName} component`\n );\n }\n\n if (props.data.length === 0) {\n return new Error(\n `'data' prop must not be empty, in ${componentName} component`\n );\n }\n },\n getCellTextProps: PropTypes.func,\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableBody;\n","// This is used to get the column widths for tables\nexport default (data) => {\n const result = {};\n Object.keys(data[0]).forEach((key) => {\n result[key] = {\n key,\n width: Math.max(\n key.length,\n data.map((item) => item[key].toString().length).sort((a, b) => b - a)[0]\n ),\n };\n });\n return result;\n};\n","import { Box } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport TableEnd from \"./TableEnd\";\nimport TableHead from \"./TableHead\";\nimport TableBody from \"./TableBody\";\nimport getKeyDetails from \"../utilities/getKeyDetails\";\n\n/*\n This component prints (the array of objects given) in a table.\n The array must not be empty.\n The keys are used as headers.\n Column widths are based on the longest value (object key or value).\n It is assumed that the same keys exist in all items.\n*/\nconst Table = ({ data, getCellTextProps }) => {\n const keyDetails = getKeyDetails(data);\n\n return (\n <Box flexDirection=\"column\">\n <TableHead keyDetails={keyDetails} />\n <TableBody\n data={data}\n getCellTextProps={getCellTextProps}\n keyDetails={keyDetails}\n />\n <TableEnd keyDetails={keyDetails} />\n </Box>\n );\n};\n\nTable.propTypes = {\n data: (props, propName, componentName) => {\n const type = typeof props.data;\n if (Array.isArray(\"array\")) {\n return new Error(\n `'data' prop must be an array ('${type}' given) in ${componentName} component`\n );\n }\n\n if (props.data.length === 0) {\n return new Error(\n `'data' prop must not be empty, in ${componentName} component`\n );\n }\n },\n getCellTextProps: PropTypes.func,\n};\n\nexport default Table;\n","export default (input) => {\n if (typeof input !== \"string\") {\n return \"\";\n }\n return input.charAt(0).toUpperCase() + input.slice(1);\n};\n","import firestore, { currentUser } from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async ({\n addWhereClauses = (query) => query,\n appId,\n limit = 5,\n startAfter,\n}) => {\n logger.debug({ appId, limit, startAfter }, \"getBuilds\");\n const appRef = firestore.doc(\n `users/${currentUser().uid}/applications/${appId}`\n );\n const appSnapshot = await appRef.get();\n\n if (!appSnapshot.exists) {\n throw new Error(`Application with ID of ${appId} doesn't exist.`);\n }\n\n let query = addWhereClauses(appRef.collection(\"builds\")).orderBy(\n \"createdAt\",\n \"desc\"\n );\n\n if (startAfter) {\n query = query.startAfter(startAfter);\n }\n\n const buildsResult = await query.limit(limit).get();\n\n if (buildsResult.empty) {\n return [];\n }\n\n return buildsResult.docs.map((doc) => doc.data());\n};\n","import * as dateFns from \"date-fns\";\n\nexport default (input) =>\n dateFns.formatDistance(new Date(input), new Date()) + \" ago\";\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ErrorDisplay from \"./ErrorDisplay\";\nimport Table from \"./Table\";\nimport capitalize from \"../utilities/capitalize\";\nimport getBuilds from \"../utilities/getBuilds\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport getRelativeDateFromDateString from \"../utilities/getRelativeDateFromDateString\";\nimport logForCI from \"../utilities/logForCI\";\nimport useInput from \"../utilities/useInput\";\nimport useExit from \"../utilities/useExit\";\n\nconst ViewBuilds = ({ commandUsed }) => {\n const exit = useExit();\n const [\n {\n builds,\n error,\n hasMoreToLoad,\n isInitialLoadComplete,\n isLoading,\n projectConfig,\n startAfter,\n },\n setState,\n ] = useState({\n builds: [],\n error: null,\n hasMoreToLoad: true,\n isInitialLoadComplete: false,\n isLoading: false,\n projectConfig: null,\n startAfter: null,\n });\n\n const onInput = useInput();\n\n onInput((input, key) => {\n if (key.escape) {\n exit();\n }\n\n if (input === \" \" || key.downArrow || key.pageDown || key.return) {\n if (!isInitialLoadComplete || !hasMoreToLoad) {\n return;\n }\n\n setState((previousState) => ({\n ...previousState,\n startAfter: builds[builds.length - 1].createdAt,\n }));\n }\n });\n\n useEffect(() => {\n if (\n error ||\n isLoading ||\n (isInitialLoadComplete && (!hasMoreToLoad || !startAfter))\n ) {\n return;\n }\n\n setState((previousState) => ({\n ...previousState,\n isLoading: true,\n }));\n\n let config;\n try {\n // This will throw if validation fails:\n config = projectConfig || getProjectConfig().config;\n } catch (e) {\n setState((previousState) => ({ ...previousState, error: e }));\n return;\n }\n\n const pageSize = 5;\n\n getBuilds({ appId: config.id, limit: pageSize + 1, startAfter })\n .then((buildsResult) => {\n setState((previousState) => {\n const stateUpdates = {\n hasMoreToLoad: buildsResult.length > pageSize,\n isInitialLoadComplete: true,\n isLoading: false,\n projectConfig: config,\n startAfter: null,\n };\n\n if (buildsResult.length) {\n stateUpdates.builds = [\n ...previousState.builds,\n ...buildsResult.slice(0, pageSize),\n ];\n }\n return {\n ...previousState,\n ...stateUpdates,\n };\n });\n })\n .catch((e) => {\n logForCI(e);\n setState((previousState) => ({\n ...previousState,\n error: e,\n isLoading: false,\n }));\n });\n }, [\n error,\n hasMoreToLoad,\n isInitialLoadComplete,\n isLoading,\n projectConfig,\n startAfter,\n ]);\n\n // Exit once all are loaded\n useEffect(() => {\n if (!hasMoreToLoad) {\n setTimeout(exit, 10);\n }\n }, [exit, hasMoreToLoad]);\n\n if (error) {\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (!isInitialLoadComplete) {\n return <Text>Loading...</Text>;\n }\n\n if (builds.length) {\n const data = builds.map((build) => ({\n ID: build.id,\n Version: build.appVersion || \"unknown\",\n \"Creation date\": getRelativeDateFromDateString(build.createdAt),\n Status: capitalize(build.status),\n \"Release date\": build.releasedAt\n ? getRelativeDateFromDateString(build.releasedAt)\n : \"Unreleased\",\n }));\n\n const getCellTextProps = ({ key, props, value }) => {\n const result = { ...props };\n\n if (key === \"Status\") {\n const status = value.toLowerCase();\n if (status === \"succeeded\") {\n result.color = \"green\";\n } else if (status === \"failed\") {\n result.color = \"red\";\n } else if (status === \"cancelled\") {\n result.dimColor = true;\n }\n } else if (\n key === \"Release date\" &&\n value.toLowerCase() === \"unreleased\"\n ) {\n result.dimColor = true;\n }\n\n return result;\n };\n\n return (\n <Fragment>\n <Table getCellTextProps={getCellTextProps} data={data} />\n {builds.length > 0 ? (\n <Box>\n <Text color=\"gray\" dimColor>\n {isLoading\n ? \"Loading more...\"\n : hasMoreToLoad\n ? `Showing the latest ${builds.length} builds. Press space/down to load more.`\n : `Showing all (${builds.length}) builds`}\n </Text>\n </Box>\n ) : null}\n </Fragment>\n );\n } else {\n return <Text>There are no builds yet</Text>;\n }\n};\n\nViewBuilds.propTypes = {\n commandUsed: PropTypes.string.isRequired,\n};\n\nexport default ViewBuilds;\n","import chalk from \"chalk\";\nimport isInstalledGlobally from \"is-installed-globally\";\nimport latestVersion from \"latest-version\";\nimport pkgUp from \"pkg-up\";\nimport semver from \"semver\";\n\nexport default () => {\n // Ignore during tests\n if (process.env.AVA_PATH) {\n return;\n }\n const pkg = require(pkgUp.sync({\n cwd: __dirname,\n }));\n latestVersion(pkg.name).then((latest) => {\n if (semver.gt(latest, pkg.version)) {\n const commandToUpdate = chalk.greenBright(\n `npm install ${\n isInstalledGlobally ? \"-g\" : \"--save-dev\"\n } @todesktop/cli`\n );\n console.log(\n `Your version of @todesktop/cli is out of date.\\nRun ${commandToUpdate} to update to v${latest}.`\n );\n if (!semver.satisfies(latest, `^${pkg.version}`)) {\n console.log(`CLI is exiting because it is out out of date.`);\n process.exit(1);\n }\n }\n });\n};\n","module.exports={private:!1,publishConfig:{access:\"public\"},name:\"@todesktop/cli\",version:\"1.1.1\",license:\"MIT\",author:\"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)\",homepage:\"https://todesktop.com/cli\",bugs:{email:\"dave@todesktop.com\"},bin:{todesktop:\"./build/cli.js\"},engines:{node:\">=12\"},scripts:{dev:\"cp-cli dev.env .env && pastel dev\",\"dev:prod\":\"cp-cli prod.env .env && pastel dev\",build:\"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\\\/boot@.\\\\/boot@g' build/cli.js\",lint:\"eslint .\",\"lint--fix\":\"eslint . --fix\",release:\"npm run build && npx np --tag=latest\",\"release-beta\":\"npm run build && npx np --any-branch --no-tests --tag=beta\",test:\"npm run build && ava\",\"test--watch\":\"npm test -- --watch\"},files:[\"build\",\"docs\",\".env\",\"LICENSE\",\"README.md\"],dependencies:{\"@sentry/node\":\"^5.27.2\",ajv:\"^6.12.6\",\"analytics-node\":\"^4.0.1\",archiver:\"^5.2.0\",axios:\"^0.21.1\",\"better-ajv-errors\":\"^1.2.0\",bunyan:\"^1.8.14\",\"camelcase-keys\":\"^5.2.0\",chalk:\"^4.1.0\",conf:\"^7.1.2\",\"date-fns\":\"^2.28.0\",decamelize:\"^1.2.0\",del:\"^6.0.0\",dotenv:\"^8.2.0\",du:\"^1.0.0\",\"email-regex\":\"^4.0.0\",\"fast-glob\":\"^3.2.4\",\"final-form\":\"^4.20.1\",\"find-up\":\"^5.0.0\",firebase:\"^7.24.0\",\"git-rev-sync\":\"^3.0.2\",ink:\"^3.2.0\",\"ink-gradient\":\"^2.0.0\",\"ink-link\":\"^2.0.0\",\"ink-progress-bar\":\"^3.0.0\",\"ink-select-input\":\"^4.2.1\",\"ink-text-input\":\"^4.0.1\",\"is-installed-globally\":\"^0.3.2\",\"latest-version\":\"^5.1.0\",\"lodash.throttle\":\"^4.1.1\",\"parse-author\":\"^2.0.0\",\"pkg-up\":\"^3.1.0\",\"pretty-bytes\":\"^5.4.1\",\"prop-types\":\"^15.7.2\",react:\"^17.0.2\",\"react-final-form\":\"^6.5.1\",semver:\"^7.3.2\",\"stream-to-array\":\"^2.3.0\",superagent:\"^7.1.3\",uuid:\"^8.3.1\",\"xdg-basedir\":\"^4.0.0\",yargs:\"^15.4.1\"},devDependencies:{\"@ava/babel\":\"^1.0.1\",\"@babel/core\":\"^7.12.3\",\"@babel/plugin-transform-runtime\":\"^7.12.1\",\"@babel/preset-env\":\"^7.11.5\",\"@babel/register\":\"^7.12.1\",\"@types/bunyan\":\"^1.8.6\",ava:\"^4.3.1\",\"babel-preset-es2015\":\"^6.24.1\",\"cp-cli\":\"^2.0.0\",\"cross-env\":\"^7.0.2\",eslint:\"^7.6.0\",\"eslint-config-prettier\":\"^6.11.0\",\"eslint-config-standard\":\"^14.1.1\",\"eslint-plugin-import\":\"^2.22.1\",\"eslint-plugin-node\":\"^11.1.0\",\"eslint-plugin-prettier\":\"^3.1.4\",\"eslint-plugin-promise\":\"^4.2.1\",\"eslint-plugin-react\":\"^7.21.4\",\"eslint-plugin-react-hooks\":\"^4.2.0\",\"eslint-plugin-standard\":\"^4.0.1\",execa:\"^4.0.3\",\"extract-zip\":\"^2.0.1\",\"fs-extra\":\"^9.0.1\",husky:\"^4.3.0\",\"is-ci\":\"^2.0.0\",\"lint-staged\":\"^10.2.11\",pastel:\"^1.1.1\",prettier:\"^2.1.2\",proxyquire:\"^2.1.3\",sinon:\"^9.0.3\"},ava:{files:[\"test/**/*.js\",\"!test/fixtures/**/*\",\"!test/utilities/**/*\"],require:[\"@babel/register\"],timeout:\"10m\"},\"lint-staged\":{\"**/*.js\":[\"eslint . --fix\",\"git add\"]},husky:{hooks:{\"pre-commit\":\"lint-staged\"}},overrides:{pastel:{\"parcel-bundler\":{deasync:\"0.1.24\"}}},resolutions:{\"pastel/parcel-bundler/deasync\":\"0.1.24\",ink:\"3.2.0\",react:\"17.0.2\"}};","import * as Sentry from \"@sentry/node\";\nimport os from \"os\";\nimport pkgJson from \"../../package.json\";\nimport { getAuthConfig } from \"../utilities/configStore\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport path from \"path\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nexport default () => {\n const { TODESKTOP_CLI_SENTRY_DSN } = getEnvironmentVariables();\n if (!TODESKTOP_CLI_SENTRY_DSN) {\n // Don't initialise Sentry\n return;\n }\n Sentry.init({\n dsn: TODESKTOP_CLI_SENTRY_DSN,\n });\n Sentry.configureScope((scope) => {\n try {\n scope.setUser({ email: getAuthConfig().email });\n } catch (err) {}\n try {\n scope.setContext(\"os\", {\n name: os.platform(),\n version: os.release(),\n });\n } catch (err) {}\n try {\n scope.setContext(\"runtime\", {\n name: \"Node.js\",\n version: process.version,\n });\n } catch (err) {}\n try {\n scope.setContext(\"app\", {\n app_name: pkgJson.name,\n app_version: pkgJson.version,\n });\n } catch (err) {}\n try {\n const configResult = getProjectConfig();\n scope.setExtra(\"config\", configResult);\n } catch (err) {}\n });\n};\n","import exitIfCLIOutOfDate from \"./exitIfCLIOutOfDate\";\nimport initSentry from \"./initSentry\";\n\nconst defaultOptions = {\n sentry: true,\n exitIfOutOfDate: true,\n};\n\nexport default (options) => {\n const { sentry, exitIfOutOfDate } = { ...defaultOptions, ...options };\n if (sentry) {\n initSentry();\n }\n if (exitIfOutOfDate) {\n exitIfCLIOutOfDate();\n }\n};\n","import { useEffect, useState } from \"react\";\n\nimport { onUserAuth } from \"./firestore\";\nimport { identify, track, ANALYTICS_EVENT } from \"./analytics\";\nimport logger from \"../utilities/logger\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\n\nexport const useAnalyticsCommand = (command, flags = {}, properties = {}) => {\n const [hasAttemptedTracking, setTrackingAttempt] = useState(false);\n\n logger.info({ command, flags, properties }, \"useAnalyticsCommand\");\n\n try {\n if (flags.projectPath) {\n properties = {\n ...properties,\n ...getProjectConfig(),\n };\n }\n } catch (err) {}\n\n useEffect(() => {\n const authUnsubscribe = onUserAuth(async (user) => {\n /**\n * Only identify if there's a user id (stops use of anon id).\n * Subsequent track callback will thus always be tied to a user.\n */\n if (user.uid) {\n identify(\n user.uid,\n {\n email: user.email,\n displayName: user.displayName,\n },\n () => {\n track(\n ANALYTICS_EVENT.CLI_COMMAND,\n {\n ...properties,\n flags,\n command,\n },\n () => setTrackingAttempt(true)\n );\n authUnsubscribe && authUnsubscribe();\n }\n );\n }\n });\n\n // if it takes longer than 5 secs to identify a user, just set the\n // tracking attempt to true so that other commands aren't waiting\n // forever to terminate (see whoami component)\n setTimeout(() => setTrackingAttempt(true), 5000);\n }, []); // leave empty - this should only ever execute once (on mount)\n\n return { hasAttemptedTracking };\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport checkIfReactIsUsable from \"../lib/utilities/checkIfReactIsUsable\";\nimport LoginHOC from \"../lib/components/LoginHOC\";\nimport ErrorBoundary from \"../lib/components/ErrorBoundary\";\nimport ViewBuild from \"../lib/components/ViewBuild\";\nimport ViewBuilds from \"../lib/components/ViewBuilds\";\nimport onCommand from \"../lib/utilities/onCommand\";\nimport { useAnalyticsCommand } from \"../lib/utilities/useAnalytics\";\n\nonCommand();\n\n/// View your builds\nconst BuildsCommand = ({ id, latest: shouldViewLatest }) => {\n checkIfReactIsUsable();\n useAnalyticsCommand(\"builds\", { id, shouldViewLatest });\n\n const getContents = () => {\n let commandUsed = \"todesktop builds\";\n if (id) {\n commandUsed += \" <id>\";\n return <ViewBuild commandUsed={commandUsed} id={id} />;\n } else if (shouldViewLatest) {\n commandUsed += \" --latest\";\n return <ViewBuild commandUsed={commandUsed} shouldViewLatest={true} />;\n } else {\n return <ViewBuilds commandUsed={commandUsed} />;\n }\n };\n\n return (\n <ErrorBoundary>\n <LoginHOC>{getContents()}</LoginHOC>\n </ErrorBoundary>\n );\n};\n\nBuildsCommand.propTypes = {\n /// View a specific build by ID\n id: PropTypes.string,\n /// View the latest build\n latest: PropTypes.bool,\n};\nBuildsCommand.positionalArgs = [\"id\"];\nexport default BuildsCommand;\n"]}
1
+ {"version":3,"sources":["../lib/utilities/checkIfReactIsUsable.js","../lib/components/TextInput.js","../lib/utilities/getCliVersion.js","../lib/utilities/logger.js","../lib/utilities/getEnvironmentVariables.js","../lib/utilities/firestore.js","../lib/utilities/configStore.js","../lib/utilities/analytics.js","../lib/utilities/useExit.js","../lib/components/ErrorDisplay.js","../lib/utilities/postToFirebaseFunction.js","../lib/components/Login.js","../lib/components/LoginHOC.js","../lib/components/ErrorBoundary.js","../lib/utilities/logForCI.js","../lib/components/BuildCompleteMessage.js","../lib/components/PlatformProgress.js","../lib/utilities/buildStatus.js","../lib/components/BuildProgress.js","../lib/utilities/getCallableFirebaseFunction.js","../lib/components/CancelBuild.js","../lib/components/Footer.js","../lib/components/Header.js","../lib/utilities/useInput.js","../lib/components/MainLayout.js","../lib/utilities/getLatestBuildId.js","../lib/utilities/projectConfig/loadConfig.js","../lib/utilities/projectConfig/resolveConfigPaths.js","../lib/utilities/projectConfig/schema/packageJSON.js","../lib/utilities/projectConfig/validatePackageJSON.js","../lib/utilities/projectConfig/addCustomKeywords.js","../lib/utilities/projectConfig/schema/full.js","../lib/utilities/projectConfig/validateConfig.js","../lib/utilities/projectConfig/getProjectConfig.js","../lib/utilities/shouldExitOnBuildFailure.js","../lib/utilities/subscribeToFirebaseDoc.js","../lib/utilities/subscribeToBuild.js","../lib/components/ViewBuild.js","../lib/components/TableEnd.js","../lib/components/TableHead.js","../lib/components/TableRow.js","../lib/components/TableBody.js","../lib/utilities/getKeyDetails.js","../lib/components/Table.js","../lib/utilities/capitalize.js","../lib/utilities/getBuilds.js","../lib/utilities/getRelativeDateFromDateString.js","../lib/components/ViewBuilds.js","../lib/utilities/exitIfCLIOutOfDate.js","../package.json","../lib/utilities/initSentry.js","../lib/utilities/onCommand.js","../lib/utilities/useAnalytics.js","builds.js"],"names":["cons","console","proc","process","e","error","exit","TextInput","onBlur","onFocus","props","useEffect","propTypes","PropTypes","func","cliVersion","require","pkgUp","sync","cwd","__dirname","version","logger","name","parentDirectory","homePath","os","homedir","platform","path","join","env","APPDATA","XDG_CONFIG_HOME","fs","mkdirSync","recursive","bunyan","createLogger","src","streams","level","noOp","debug","fatal","info","trace","warn","Sentry","captureException","err","hasInitialized","init","config","resolve","environmentVariables","firebaseDB","firebase","initializeApp","apiKey","TODESKTOP_CLI_FIREBASE_API_KEY","authDomain","TODESKTOP_CLI_FIREBASE_AUTH_DOMAIN","databaseURL","TODESKTOP_CLI_FIREBASE_DATABASE_URL","projectId","TODESKTOP_CLI_FIREBASE_PROJECT_ID","storageBucket","TODESKTOP_CLI_FIREBASE_STORAGE_BUCKET","messagingSenderId","TODESKTOP_CLI_FIREBASE_MESSAGING_SENDER_ID","appId","TODESKTOP_CLI_FIREBASE_ID","currentUser","auth","signInWithCustomToken","token","onUserAuth","handler","onAuthStateChanged","user","firestore","Conf","configName","accessTokenConfigKey","emailConfigKey","jwtTokenConfigKey","setConfig","key","value","set","getConfig","get","setAuthConfig","email","accessToken","jwtToken","getAuthConfig","deleteAuthConfig","delete","oldConfigPath","xdgBasedir","existsSync","force","analytics","Analytics","SEGMENT_WRITE_KEY","flushAt","flushInterval","ANALYTICS_EVENT","CLI_COMMAND","getAnalyticsBaseProperties","baseProps","client","release","app","runtime","anonymousId","track","event","properties","callback","userId","uid","undefined","identify","id","traits","flush","timeoutId","terminate","catch","Promise","race","setTimeout","finally","clearTimeout","ErrorDisplay","commandUsed","message","stack","toString","string","object","isRequired","TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE","functionName","body","response","axios","post","responseData","data","Login","loginFields","label","placeholder","Input","validate","mask","setIsLoggedIn","activeField","setActiveField","setError","failureMessage","setFailureMessage","isSubmittingForm","setIsSubmittingForm","onFailure","code","handleSubmit","validating","form","map","index","input","meta","valid","length","replace","invalid","touched","Error","errorMessage","marginTop","bool","LoginHOC","children","isInteractive","isLoggedIn","isEffectDone","setEffectDone","isRawModeSupported","isAccessTokenValid","userCreds","TODESKTOP_ACCESS_TOKEN","TODESKTOP_EMAIL","newJwtToken","isCi","ErrorBoundary","React","Component","constructor","state","eventId","getDerivedStateFromError","componentDidCatch","errorInfo","withScope","scope","setExtras","setState","render","args","log","BuildCompleteMessage","build","url","standardUniversalDownloadUrl","PlatformProgress","preLabelMaxWidth","getProgressPercentageLabel","percentage","activityType","backgroundColor","color","Math","round","padStart","activityName","downloadUrl","percent","shouldShowReadyPrefix","progressIndicator","activityNameToDisplay","substr","includes","toUpperCase","number","hasBuildKickedOff","status","isBuildCancellable","isBuildRunning","some","isPlatformBuildRunning","platformBuild","shouldSkip","numberOfAttemptedBuilds","BuildProgress","logForCIThrottled","logForCI","trailing","onBuildFailure","hasKickedOff","platformsNotSkipped","filter","previousState","ciPlatformProgress","charAt","slice","progressActivityName","progressPercentage","progressActivityType","standardDownloadUrl","TODESKTOP_CLI_ENV","functions","useFunctionsEmulator","httpsCallable","CancelBuild","cancelBuild","postCancelContents","buildId","arbitraryMessageComponent","hasCompleted","hasStarted","then","result","stateUpdates","prevState","Footer","hasBuildFailed","shouldShowCancelBuildInstructions","uiUrl","buildFailedMessage","Header","getText","suffix","hasSubscribed","ctrlCSubscriptions","onStdin","String","wasCtrlPressed","fromCharCode","charCodeAt","forEach","subscription","stdin","useInputOptions","stdInOptions","onStdinData","onCtrlCPressed","push","on","cleanUpInputHook","off","MainLayout","appName","appVersion","onInput","canCancelBuild","isCancellingBuild","wasCtrlCPressed","escape","oneOfType","array","appRef","doc","exists","buildsResult","collection","orderBy","limit","empty","docs","configPath","projectRoot","appRoot","appPath","isAbsolute","transformIfExists","transformer","resolvePath","filePath","icon","extraContentFiles","extraContentFile","from","extraResources","extraResource","linux","mac","entitlements","dmg","background","windows","context","type","required","author","npmAuthor","dependencies","excludedDependencies","dependencyKey","blacklist","devDependencies","electron","semanticVersion","packageName","mustBeExact","minLength","scripts","file","mustBeFile","pkg","pkgPath","ajv","Ajv","allErrors","jsonPointers","schema","compile","output","errors","indent","isValidationError","addKeyword","matchingPackages","keyword","dataPath","exact","test","mustBeDirectory","mustBeElectronApp","trim","isOptional","relative","startsWith","extensions","extname","stats","statSync","isFile","isDirectory","mainFilePath","main","resolvedMainFilePath","dataType","parsedAuthor","semver","validRange","getItemOrArrayOfItemsSchema","itemSchema","oneOf","items","getIconSchema","additionalAllowedExtensions","appFiles","minItems","appProtocolScheme","asarUnpack","copyright","electronMirror","format","electronVersion","to","fileAssociations","ext","description","mimeType","role","isPackage","rank","filesForDistribution","category","additionalBinariesToSign","extendInfo","artifactName","iconSize","iconTextSize","title","contents","x","y","window","width","height","schemaVersion","minimum","maximum","snap","after","appPartStage","assumes","autoStart","buildPackages","confinement","enum","environment","grade","layout","plugs","anyOf","stagePackages","summary","maxLength","useTemplateApp","uploadSizeLimit","productName","findUp","unprocessedConfig","every","receiver","reject","onSnapshot","snapshot","onDataReceived","ViewBuild","isLoading","onError","firebaseUnsubscribe","subscribe","firebaseUnsubscribeResult","latestBuildId","propName","componentName","shouldViewLatest","Boolean","TableEnd","keyDetails","content","Object","values","repeat","TableHead","topLine","contentLineElements","bottomLinePrefix","TableRow","getCellTextProps","textProps","entries","rowData","TableBody","Array","isArray","keys","max","item","sort","a","b","Table","addWhereClauses","query","startAfter","dateFns","formatDistance","Date","ViewBuilds","builds","hasMoreToLoad","isInitialLoadComplete","projectConfig","downArrow","pageDown","return","createdAt","pageSize","ID","Version","Status","releasedAt","toLowerCase","dimColor","AVA_PATH","latest","gt","commandToUpdate","chalk","greenBright","isInstalledGlobally","satisfies","module","exports","private","publishConfig","access","license","homepage","bugs","bin","todesktop","engines","node","prepublishOnly","dev","lint","files","archiver","conf","decamelize","del","dotenv","du","ink","react","superagent","uuid","yargs","ava","eslint","execa","husky","pastel","prettier","proxyquire","sinon","timeout","hooks","overrides","deasync","resolutions","TODESKTOP_CLI_SENTRY_DSN","dsn","configureScope","setUser","setContext","app_name","pkgJson","app_version","configResult","setExtra","defaultOptions","sentry","exitIfOutOfDate","options","useAnalyticsCommand","command","flags","hasAttemptedTracking","setTrackingAttempt","projectPath","authUnsubscribe","displayName","BuildsCommand","getContents","positionalArgs"],"mappings":"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","file":"builds.js","sourceRoot":"../../commands","sourcesContent":["import { useState } from \"react\";\n\n/*\n This should be called at the top of all commands to test if React\n is OK and if not, to exit cleanly.\n\n If React throws an error (e.g. when there are multiple versions of\n React in the customer's dependency tree), then we need to exit with\n a non-zero error code and not with an uncaught exception somewhere.\n\n These parameters exist only to make things more testable\n*/\nexport default ({ cons = console, proc = process } = {}) => {\n try {\n useState(null);\n } catch (e) {\n cons.error(e);\n proc.exit(1);\n }\n};\n","import InkTextInput from \"ink-text-input\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst TextInput = ({ onBlur, onFocus, ...props }) => {\n React.useEffect(() => {\n onFocus();\n return onBlur;\n }, [onFocus, onBlur]);\n return <InkTextInput {...props} showCursor />;\n};\n\nTextInput.propTypes = {\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n};\n\nexport default TextInput;\n","import pkgUp from \"pkg-up\";\n\nconst cliVersion = require(pkgUp.sync({\n cwd: __dirname,\n})).version;\n\nexport default () => cliVersion;\n","import bunyan from \"bunyan\";\nimport * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport * as Sentry from \"@sentry/node\";\n\nlet logger;\n\ntry {\n const name = \"todesktop-cli\";\n\n let parentDirectory;\n const homePath = os.homedir();\n if (process.platform === \"darwin\") {\n parentDirectory = path.join(homePath, \"Library\", \"Logs\", name);\n } else if (process.platform === \"win32\") {\n parentDirectory = path.join(\n process.env.APPDATA || path.join(homePath, \"AppData\", \"Roaming\"),\n name,\n \"logs\"\n );\n } else {\n parentDirectory = path.join(\n process.env.XDG_CONFIG_HOME || path.join(homePath, \".config\"),\n name,\n \"logs\"\n );\n }\n\n fs.mkdirSync(parentDirectory, { recursive: true });\n\n logger = bunyan.createLogger({\n name,\n src: true,\n streams: [\n {\n level: \"debug\",\n path: path.join(parentDirectory, \"main.log\"),\n },\n ],\n });\n} catch (e) {\n // Ignore\n\n const noOp = () => {};\n logger = {\n debug: noOp,\n error: noOp,\n fatal: noOp,\n info: noOp,\n trace: noOp,\n warn: noOp,\n };\n\n try {\n Sentry.captureException(e);\n } catch (err) {\n // Ignore\n }\n}\n\nexport default logger;\n","import dotenv from \"dotenv\";\nimport * as path from \"path\";\n\nlet hasInitialized = false;\n\nconst init = () => {\n if (hasInitialized) {\n return;\n }\n\n dotenv.config({\n path: path.resolve(__dirname, \"..\", \"..\", \".env\"),\n });\n hasInitialized = true;\n};\n\nexport default () => {\n init();\n return process.env;\n};\n","import * as firebase from \"firebase/app\";\nimport \"firebase/firestore\";\nimport \"firebase/auth\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nconst environmentVariables = getEnvironmentVariables();\n\n// if (environmentVariables.NODE_ENV === \"development\") {\n// if (true) {\n// firebase.firestore.setLogLevel(\"debug\");\n// }\n\nconst firebaseDB = firebase.initializeApp({\n apiKey: environmentVariables.TODESKTOP_CLI_FIREBASE_API_KEY,\n authDomain: environmentVariables.TODESKTOP_CLI_FIREBASE_AUTH_DOMAIN,\n databaseURL: environmentVariables.TODESKTOP_CLI_FIREBASE_DATABASE_URL,\n projectId: environmentVariables.TODESKTOP_CLI_FIREBASE_PROJECT_ID,\n storageBucket: environmentVariables.TODESKTOP_CLI_FIREBASE_STORAGE_BUCKET,\n messagingSenderId:\n environmentVariables.TODESKTOP_CLI_FIREBASE_MESSAGING_SENDER_ID,\n appId: environmentVariables.TODESKTOP_CLI_FIREBASE_ID,\n});\n\nexport const currentUser = () => firebase.auth().currentUser;\nexport const signInWithCustomToken = async (token) => {\n return firebase.auth().signInWithCustomToken(token);\n};\n\n/**\n * onUserAuth is only triggered on sign-in. This\n * happens once signInWithCustomToken is successful.\n *\n * It technically also triggers on sign-out but there's\n * no concept of signing out of firebase with the CLI app.\n * (See logout command which just deletes a local file)\n */\nexport const onUserAuth = (handler) =>\n firebase.auth().onAuthStateChanged((user) => {\n handler(user || {});\n });\n\nexport default firebaseDB.firestore();\n","import * as fs from \"fs\";\nimport del from \"del\";\nimport Conf from \"conf\";\nimport xdgBasedir from \"xdg-basedir\";\n\nconst config = new Conf({ configName: \"todesktop-cli\" });\n\nexport const accessTokenConfigKey = \"accessToken\";\nexport const emailConfigKey = \"email\";\nexport const jwtTokenConfigKey = \"jwtToken\";\n\nexport const setConfig = (key, value) => config.set(key, value);\nexport const getConfig = (key) => config.get(key);\n\nexport const setAuthConfig = (email, accessToken, jwtToken) => {\n setConfig(emailConfigKey, email);\n setConfig(accessTokenConfigKey, accessToken);\n setConfig(jwtTokenConfigKey, jwtToken);\n};\n\nexport const getAuthConfig = () => {\n const accessToken = getConfig(accessTokenConfigKey);\n const jwtToken = getConfig(jwtTokenConfigKey);\n const email = getConfig(emailConfigKey);\n\n return { accessToken, jwtToken, email };\n};\n\nexport const deleteAuthConfig = () => {\n config.delete(emailConfigKey);\n config.delete(accessTokenConfigKey);\n config.delete(jwtTokenConfigKey);\n};\n\n// TODO - Delete by end of April: backwards compatibility for old configstore\nconst oldConfigPath = `${xdgBasedir.config}/configstore/config.json.json`;\nif (fs.existsSync(oldConfigPath)) {\n try {\n // copy config from old json file to new json file, delete old file\n const { email, accessToken, jwtToken } = require(oldConfigPath);\n setAuthConfig(email, accessToken, jwtToken);\n del(oldConfigPath, { force: true });\n } catch (err) {\n // if invalid json, delete file to prompt new login\n del(oldConfigPath, { force: true });\n }\n}\n","import os from \"os\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport Analytics from \"analytics-node\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\nimport { currentUser } from \"./firestore\";\nimport { getAuthConfig } from \"./configStore\";\nimport getCliVersion from \"./getCliVersion\";\n\nconst environmentVariables = getEnvironmentVariables();\n\nconst analytics = new Analytics(environmentVariables.SEGMENT_WRITE_KEY, {\n flushAt: 1,\n flushInterval: 1,\n});\n\nexport const ANALYTICS_EVENT = {\n CLI_COMMAND: \"CLI Command\",\n};\n\nfunction getAnalyticsBaseProperties() {\n let baseProps = {\n client: \"cli\",\n };\n\n try {\n baseProps.os = {\n name: os.platform(),\n version: os.release(),\n };\n } catch (err) {}\n\n try {\n baseProps.user = {\n email: getAuthConfig().email,\n };\n } catch (err) {}\n\n try {\n baseProps.app = {\n cliVersion: getCliVersion(),\n };\n } catch (err) {}\n\n try {\n baseProps.runtime = {\n name: \"Node.js\",\n version: process.version,\n };\n } catch (err) {}\n\n return baseProps;\n}\n\nconst anonymousId = uuidv4();\nexport const track = (event, properties = {}, callback = () => {}) => {\n try {\n const user = currentUser();\n\n analytics.track(\n {\n event,\n userId: user ? user.uid : undefined,\n anonymousId,\n properties: {\n ...properties,\n ...getAnalyticsBaseProperties(),\n },\n },\n callback\n );\n } catch (err) {}\n};\n\nexport const identify = (id, traits = {}, callback = () => {}) => {\n try {\n analytics.identify({ userId: id, anonymousId, traits }, callback);\n } catch (err) {}\n};\n\nexport const flush = (callback = () => {}) => analytics.flush(callback);\n","import { useApp } from \"ink\";\nimport { flush } from \"./analytics\";\nimport firestore from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default () => {\n const { exit } = useApp();\n\n return (error) => {\n logger.debug({ error }, \"Exit called\");\n\n /*\n First, destroy connections.\n Why do we need to do this if we're going to call process.exit\n below anyway? Just to be safe in case a Firestore subscription\n triggers a state update after the React app is exited.\n */\n firestore.terminate().catch((e) =>\n // Ignore\n logger.error(e)\n );\n\n let timeoutId;\n Promise.race([\n // flush the analytics to make sure all outstanding events are pushed to segment\n new Promise((resolve) => flush(() => resolve())),\n // If it takes longer than 1 second, resolve early to proceed with program exit\n new Promise((resolve) => (timeoutId = setTimeout(() => resolve(), 1000))),\n ])\n .catch(() => {})\n .finally(() => {\n clearTimeout(timeoutId);\n /*\n Then, exit the React app. We don't pass the error because:\n 1. We don't want it displayed. We could give it a dummy error but\n that will output an empty line.\n 2. It doesn't exit with the correct code anyway, see\n https://github.com/vadimdemedes/pastel/issues/39.\n\n Side note: your component must not perform state updates after\n calling this, it will error.\n\n The try-catch shouldn't be needed here, but let's be safe\n */\n try {\n exit();\n } catch (e) {\n logger.error(e);\n // Ignore\n }\n\n /*\n Then exit the process.\n It should happen if all connections, etc. are destroyed. We manually\n exit with a code because:\n 1. We might not clean up properly, it could fail or take a long time.\n 2. The exit function above doesn't exit the CLI with the correct\n code anyway.\n\n If we had a way to detect when the app exits, we would use that\n and then call process.exit / destroy connections appropriately\n (https://github.com/vadimdemedes/pastel/issues/38).\n */\n setTimeout(() => process.exit(error ? 1 : 0), 10);\n });\n };\n};\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect } from \"react\";\nimport getCliVersion from \"../utilities/getCliVersion\";\nimport logger from \"../utilities/logger\";\nimport useExit from \"../utilities/useExit\";\n\nconst ErrorDisplay = ({ commandUsed, error }) => {\n const exit = useExit();\n logger.error({ error });\n\n // After an error is set, exit\n useEffect(() => {\n if (!error) {\n return;\n }\n // Just to avoid updating state after exiting the React app\n setTimeout(() => exit(error), 10);\n }, [exit, error]);\n\n return (\n <Fragment>\n <Text backgroundColor=\"red\" color=\"white\">\n {\" \"}\n ERROR{\" \"}\n </Text>\n <Text>{error.message || error.stack || error.toString()}</Text>\n\n <Box flexDirection=\"column\" marginTop={1}>\n {commandUsed ? (\n <Text dimColor color=\"gray\">\n Command: {commandUsed}\n </Text>\n ) : null}\n <Text dimColor color=\"gray\">\n @todesktop/cli: {getCliVersion()}\n </Text>\n <Text dimColor color=\"gray\">\n Node: {process.version}\n </Text>\n <Text dimColor color=\"gray\">\n cwd: {process.cwd()}\n </Text>\n </Box>\n </Fragment>\n );\n};\n\nErrorDisplay.propTypes = {\n commandUsed: PropTypes.string,\n error: PropTypes.object.isRequired,\n};\n\nexport default ErrorDisplay;\n","import axios from \"axios\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\nimport logger from \"./logger\";\n\nconst { TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE } = getEnvironmentVariables();\n\nexport default async function (functionName, body = {}, config = {}) {\n logger.debug({ functionName, body, config }, \"postToFirebaseFunction\");\n\n try {\n const response = await axios.post(\n `${TODESKTOP_CLI_FIREBASE_FUNCTIONS_BASE}${functionName}`,\n body,\n config\n );\n\n logger.debug(\n { responseData: response.data },\n \"postToFirebaseFunction: success\"\n );\n return response.data;\n } catch (e) {\n logger.error({ error: e }, \"postToFirebaseFunction: error\");\n throw e;\n }\n}\n","// modules\nimport { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useState } from \"react\";\nimport { Form, Field } from \"react-final-form\";\n\n// components\nimport TextInput from \"../components/TextInput\";\nimport ErrorDisplay from \"./ErrorDisplay\";\n\n// logic\nimport postToFirebaseFunction from \"../utilities/postToFirebaseFunction\";\nimport { signInWithCustomToken } from \"../utilities/firestore\";\nimport { setAuthConfig } from \"../utilities/configStore\";\n\nconst loginFields = [\n {\n name: \"email\",\n label: \"Your email\",\n placeholder: \"name@email.com\",\n Input: TextInput,\n validate: (value) => {\n if (!value) return \"Required\";\n },\n },\n {\n name: \"accessToken\",\n label: \"Your access token\",\n placeholder: \"********\",\n Input: TextInput,\n validate: (value) => {\n if (!value) return \"Required\";\n },\n mask: \"*\",\n },\n];\n\nconst Login = ({ setIsLoggedIn }) => {\n const [activeField, setActiveField] = useState(0);\n const [error, setError] = useState(null);\n const [failureMessage, setFailureMessage] = useState(null);\n const [isSubmittingForm, setIsSubmittingForm] = useState(false);\n\n const onFailure = (message) => {\n setIsSubmittingForm(false);\n setFailureMessage(message);\n setActiveField(0);\n };\n\n // login handler that verifies accessToken and email with that in firebase\n const onSubmitLogin = async ({ email, accessToken }) => {\n setFailureMessage(null);\n setIsSubmittingForm(true);\n\n try {\n const jwtToken = await postToFirebaseFunction(\"loginWithAccessToken\", {\n email,\n accessToken,\n });\n\n if (jwtToken) {\n await signInWithCustomToken(jwtToken);\n setAuthConfig(email, accessToken, jwtToken);\n setIsLoggedIn(true);\n } else {\n onFailure(\"Incorrrect credentials. Try again\");\n }\n } catch (err) {\n if (err.code === 500) {\n setError(err);\n } else {\n onFailure(`Login unsuccessful: ${err.message}`);\n }\n }\n };\n\n if (error) return <ErrorDisplay error={error} />;\n\n return (\n <Fragment>\n <Text>You are not currently logged in.</Text>\n <Text>Log in below:</Text>\n <Box marginBottom={1} />\n <Form onSubmit={onSubmitLogin}>\n {({ handleSubmit, validating, form }) => (\n <Box flexDirection=\"column\">\n {loginFields.map(\n ({ name, label, placeholder, validate, Input, mask }, index) => (\n <Field name={name} key={name} validate={validate}>\n {({ input, meta }) => (\n <Box flexDirection=\"column\">\n {activeField >= index ? (\n <Box>\n <Text bold={activeField === index}>{label}: </Text>\n {activeField === index ? (\n <Input\n {...input}\n mask={mask}\n placeholder={placeholder}\n onSubmit={() => {\n if (meta.valid && !validating) {\n setActiveField((value) => value + 1); // go to next field\n if (activeField === loginFields.length - 1) {\n // last field, so submit\n handleSubmit();\n }\n } else {\n input.onBlur(); // mark as touched to show error\n }\n }}\n />\n ) : (\n (input.value && (\n <Text>\n {name === \"accessToken\"\n ? input.value.replace(/./gi, \"*\")\n : input.value}\n </Text>\n )) ||\n (placeholder && (\n <Text color=\"gray\">{placeholder}</Text>\n ))\n )}\n {meta.invalid && meta.touched && (\n <Box marginLeft={2} marginRight={1}>\n <Text color=\"red\">✖</Text>\n </Box>\n )}\n {meta.error && meta.touched && (\n <Error errorMessage={meta.error} />\n )}\n </Box>\n ) : null}\n </Box>\n )}\n </Field>\n )\n )}\n </Box>\n )}\n </Form>\n\n {isSubmittingForm && (\n <Box marginTop={1}>\n <Text>Logging in...</Text>\n </Box>\n )}\n\n {failureMessage && <Error errorMessage={failureMessage} marginTop />}\n </Fragment>\n );\n};\n\nconst Error = ({ errorMessage, marginTop }) => (\n <Box marginTop={marginTop ? 1 : 0}>\n <Text color=\"red\">{errorMessage}</Text>\n </Box>\n);\n\nError.propTypes = {\n errorMessage: PropTypes.string.isRequired,\n marginTop: PropTypes.bool,\n};\n\nLogin.propTypes = {\n setIsLoggedIn: PropTypes.func.isRequired,\n};\n\nexport default Login;\n","import { Text, useStdin } from \"ink\";\nimport React, { Fragment, useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isCi from \"is-ci\";\n\n// components\nimport Login from \"./Login\";\n\n// logic\nimport { signInWithCustomToken } from \"../utilities/firestore\";\nimport { getAuthConfig, setAuthConfig } from \"../utilities/configStore\";\nimport postToFirebaseFunction from \"../utilities/postToFirebaseFunction\";\nimport getEnvironmentVariables from \"../utilities/getEnvironmentVariables\";\nimport ErrorDisplay from \"./ErrorDisplay\";\n\nconst LoginHOC = ({ children, isInteractive = true }) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isEffectDone, setEffectDone] = useState(false);\n const [error, setError] = useState(null);\n const { isRawModeSupported } = useStdin();\n\n const onFailure = (message, err = {}) => {\n setError({\n ...err,\n message,\n });\n };\n\n // use effect for determining if tokens exist and are valid\n useEffect(() => {\n async function isAccessTokenValid() {\n const { accessToken, email, jwtToken } = getAuthConfig();\n let userCreds = null;\n\n const { TODESKTOP_ACCESS_TOKEN, TODESKTOP_EMAIL } =\n getEnvironmentVariables();\n\n // 1. attempt log in with environment variables if present\n try {\n if (TODESKTOP_ACCESS_TOKEN && TODESKTOP_EMAIL) {\n const newJwtToken = await postToFirebaseFunction(\n \"loginWithAccessToken\",\n {\n email: TODESKTOP_EMAIL,\n accessToken: TODESKTOP_ACCESS_TOKEN,\n }\n );\n\n if (newJwtToken) {\n userCreds = await signInWithCustomToken(newJwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n // if no environment variables set and is in a CI, set alert message and exit\n } else if (!isRawModeSupported || isCi) {\n onFailure(\n \"ToDesktop environment variables not found. When automating builds with your CI provider, you need to specify environment variables for TODESKTOP_EMAIL and TODESKTOP_ACCESS_TOKEN.\"\n );\n }\n } catch (err) {\n // print error and stop the app execution if env variables attempted\n onFailure(\"Log in with environment variables failed.\", err);\n }\n\n // 2. attempt log in with jwtToken if present\n try {\n if (!userCreds && jwtToken) {\n userCreds = await signInWithCustomToken(jwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n } catch (err) {\n // do nothing, attempt login with accessToken and email\n }\n\n // 3. attempt log in with accessToken and email on disk\n try {\n if (!userCreds && accessToken && email) {\n const newJwtToken = await postToFirebaseFunction(\n \"loginWithAccessToken\",\n { email, accessToken }\n );\n\n if (newJwtToken) {\n userCreds = await signInWithCustomToken(newJwtToken);\n setAuthConfig(email, accessToken, newJwtToken);\n if (userCreds.user) setIsLoggedIn(true);\n }\n }\n } catch (err) {\n // do nothing: no error state and not logged in state means render login\n }\n\n setEffectDone(true);\n }\n\n isAccessTokenValid();\n }, []);\n\n if (error && isInteractive) {\n return <ErrorDisplay error={error} />;\n }\n\n if (!isEffectDone) {\n return <Text>...</Text>;\n }\n\n if (!isLoggedIn && isInteractive) {\n return <Login setIsLoggedIn={setIsLoggedIn} />;\n }\n\n return <Fragment>{children}</Fragment>;\n};\n\nLoginHOC.propTypes = {\n children: PropTypes.object,\n isInteractive: PropTypes.bool,\n};\n\nexport default LoginHOC;\n","import React from \"react\";\nimport * as Sentry from \"@sentry/node\";\nimport PropTypes from \"prop-types\";\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { eventId: null, error: null };\n }\n\n static getDerivedStateFromError(error) {\n return { error };\n }\n\n componentDidCatch(error, errorInfo) {\n Sentry.withScope((scope) => {\n scope.setExtras(errorInfo);\n const eventId = Sentry.captureException(error);\n this.setState({ eventId });\n });\n }\n\n render() {\n if (this.state.error) {\n throw this.state.error;\n }\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.object,\n};\n\nexport default ErrorBoundary;\n","import isCi from \"is-ci\";\nimport logger from \"./logger\";\n\nexport default (...args) => {\n logger.info({ args }, \"logForCI\");\n\n if (!isCi) {\n return;\n }\n console.log(...args);\n};\n","import { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect } from \"react\";\nimport logForCI from \"../utilities/logForCI\";\nimport useExit from \"../utilities/useExit\";\n\nconst BuildCompleteMessage = ({ build }) => {\n const exit = useExit();\n const url = build.standardUniversalDownloadUrl;\n\n logForCI(`Build complete! ${url}`);\n\n // On build completion, exit with non-error code\n useEffect(() => {\n if (url) {\n // Just to avoid updating state after exiting the React app\n setTimeout(exit, 10);\n }\n }, [exit, url]);\n\n return (\n <Box marginBottom={1}>\n <Text>\n <Text bold>Build complete!</Text>{\" \"}\n <Link fallback={false} url={url}>\n {url || \"\"}\n </Link>\n </Text>\n </Box>\n );\n};\n\nBuildCompleteMessage.propTypes = {\n build: PropTypes.object.isRequired,\n};\n\nexport default BuildCompleteMessage;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nconst preLabelMaxWidth = \"More info: \".length;\n\nconst getProgressPercentageLabel = (percentage, activityType) => {\n let backgroundColor = \"white\";\n let color = \"black\";\n\n if (activityType === \"error\") {\n backgroundColor = \"red\";\n } else if (percentage === 100) {\n backgroundColor = \"green\";\n color = \"black\";\n }\n\n return (\n <Fragment>\n <Text backgroundColor={backgroundColor} color={color}>\n {\" \"}\n {Math.round(percentage).toString().padStart(2, \"0\")}%{\" \"}\n </Text>\n <Text> </Text>\n </Fragment>\n );\n};\n\nconst PlatformProgress = ({\n activityName,\n activityType,\n downloadUrl,\n percent,\n platform,\n shouldShowReadyPrefix,\n}) => {\n let progressIndicator;\n if (activityType === \"done\") {\n progressIndicator = (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text>\n {getProgressPercentageLabel(100)}\n {shouldShowReadyPrefix ? \"Ready!\" : \"\"}\n </Text>\n <Link fallback={false} url={downloadUrl}>\n {downloadUrl}\n </Link>\n </Box>\n );\n } else {\n let activityNameToDisplay = activityName.replace(\n /(?:\\r\\n|\\r|\\n)\\s*/g,\n \"↵ \"\n );\n if (activityNameToDisplay.length > 64) {\n activityNameToDisplay = `${activityNameToDisplay.substr(0, 61)}...`;\n }\n\n progressIndicator = (\n <Fragment>\n <Box flexDirection={\"column\"} marginBottom={1}>\n <Text>\n {[\"preparation\", \"queue\"].includes(activityType)\n ? undefined\n : getProgressPercentageLabel(percent, activityType)}\n {activityNameToDisplay}\n {activityType === \"error\" ? \"\" : <Text>...</Text>}\n </Text>\n </Box>\n </Fragment>\n );\n }\n return (\n <Box>\n <Box width={preLabelMaxWidth}>\n <Text>{platform[0].toUpperCase() + platform.substr(1)}: </Text>\n </Box>\n {progressIndicator}\n </Box>\n );\n};\n\nPlatformProgress.propTypes = {\n activityName: PropTypes.string.isRequired,\n activityType: PropTypes.string.isRequired,\n downloadUrl: PropTypes.string,\n percent: PropTypes.number.isRequired,\n platform: PropTypes.string.isRequired,\n shouldShowReadyPrefix: PropTypes.bool,\n};\n\nexport default PlatformProgress;\n","export const hasBuildKickedOff = (build) => {\n if (!build) {\n return false;\n }\n return build.status && build.status !== \"preparation\";\n};\n\n// NOTE: this relies on Firestore solely\nexport const isBuildCancellable = (build) =>\n hasBuildKickedOff(build) && isBuildRunning(build);\n\nexport const isBuildRunning = (build) => {\n if (!build) {\n return false;\n }\n return (\n ![\"cancelled\", \"succeeded\"].includes(build.status) &&\n [\"linux\", \"mac\", \"windows\"].some((platform) =>\n isPlatformBuildRunning(build[platform])\n )\n );\n};\n\nexport const isPlatformBuildRunning = (platformBuild) => {\n if (!platformBuild) {\n return false;\n }\n return (\n !platformBuild.shouldSkip && // <-- Noteworthy\n ![\"cancelled\", \"succeeded\"].includes(platformBuild.status) &&\n (\"failed\" !== platformBuild.status ||\n platformBuild.numberOfAttemptedBuilds < 2)\n );\n};\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport throttle from \"lodash.throttle\";\nimport BuildCompleteMessage from \"./BuildCompleteMessage\";\nimport PlatformProgress from \"./PlatformProgress\";\nimport { hasBuildKickedOff } from \"../utilities/buildStatus\";\nimport logger from \"../utilities/logger\";\nimport logForCI from \"../utilities/logForCI\";\nimport useExit from \"../utilities/useExit\";\n\nconst logForCIThrottled = throttle(logForCI, 60 * 1000, { trailing: true });\n\nconst BuildProgress = ({ build, onBuildFailure }) => {\n logger.debug(\"BuildProgress component: render\");\n const exit = useExit();\n\n const [{ hasKickedOff }, setState] = useState({\n hasKickedOff: false,\n });\n const platformsNotSkipped = [\"windows\", \"mac\", \"linux\"].filter(\n (platform) => !build[platform].shouldSkip\n );\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n hasKickedOff: hasBuildKickedOff(build),\n }));\n }, [build]);\n\n useEffect(() => {\n if (build.status === \"failed\") {\n onBuildFailure(build.errorMessage);\n } else if (build.status === \"cancelled\") {\n setTimeout(exit, 10);\n } else {\n const ciPlatformProgress = platformsNotSkipped.map(\n (platform) =>\n `${platform.charAt(0).toUpperCase() + platform.slice(1)}: ${\n build[platform].progressActivityName\n } (${build[platform].progressPercentage}%)`\n );\n logForCIThrottled(ciPlatformProgress.join(\", \"));\n }\n }, [build, exit, onBuildFailure, platformsNotSkipped]);\n\n if (build.status === \"succeeded\") {\n return <BuildCompleteMessage build={build} />;\n }\n\n if (build.status === \"cancelled\") {\n return (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text>Build cancelled</Text>\n </Box>\n );\n }\n\n if (!hasKickedOff) {\n return null;\n }\n\n return (\n <Fragment>\n <Box flexDirection=\"column\">\n {platformsNotSkipped.map((platform) => (\n <Box flexDirection=\"column\" key={platform}>\n <PlatformProgress\n activityName={\n build[platform].status === \"failed\"\n ? build[platform].errorMessage\n : build[platform].progressActivityName\n }\n activityType={\n build[platform].status === \"failed\"\n ? \"error\"\n : build[platform].progressActivityType\n }\n downloadUrl={build[platform].standardDownloadUrl}\n percent={build[platform].progressPercentage}\n platform={platform}\n shouldShowReadyPrefix={\n !(build && [\"failed\", \"succeeded\"].includes(build.status))\n }\n />\n </Box>\n ))}\n </Box>\n </Fragment>\n );\n};\n\nBuildProgress.propTypes = {\n build: PropTypes.object.isRequired,\n onBuildFailure: PropTypes.func.isRequired,\n};\n\nexport default BuildProgress;\n","import * as firebase from \"firebase/app\";\nimport \"firebase/functions\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nif (getEnvironmentVariables().TODESKTOP_CLI_ENV === \"development\") {\n firebase.functions().useFunctionsEmulator(\"http://localhost:5000\");\n}\n\nexport default (functionName) =>\n firebase.functions().httpsCallable(functionName);\n","// libs\nimport { Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\n\n// components\nimport ErrorDisplay from \"./ErrorDisplay\";\n\n// utils\nimport getCallableFirebaseFunction from \"../utilities/getCallableFirebaseFunction\";\nimport logForCI from \"../utilities/logForCI\";\nimport logger from \"../utilities/logger\";\nimport useExit from \"../utilities/useExit\";\n\nconst cancelBuild = getCallableFirebaseFunction(\"cancelBuild\");\n\nconst CancelBuild = ({\n appId,\n children: postCancelContents,\n commandUsed,\n id,\n}) => {\n logger.debug({ appId, buildId: id }, \"CancelBuild component: render\");\n\n const exit = useExit();\n const [\n { arbitraryMessageComponent, error, hasCompleted, hasStarted },\n setState,\n ] = useState({\n arbitraryMessageComponent: null,\n error: null,\n hasCompleted: false,\n hasStarted: false,\n });\n\n useEffect(() => {\n if (hasCompleted || hasStarted) {\n return;\n }\n\n setState((previousState) => ({ ...previousState, hasStarted: true }));\n logForCI(\"Cancelling build...\");\n cancelBuild({ appId, buildId: id })\n .then((result) => {\n logger.debug(\n { appId, buildId: id, result },\n \"CancelBuild component: cancellation request complete\"\n );\n setState((previousState) => ({ ...previousState, hasCompleted: true }));\n })\n .catch((e) => {\n logger.debug(\n { appId, buildId: id, code: e.code },\n \"CancelBuild component: cancellation request failed\"\n );\n logger.error(e);\n let stateUpdates = {\n hasCompleted: true,\n };\n\n if (e.code === \"internal\") {\n stateUpdates.error = e;\n } else {\n stateUpdates.arbitraryMessageComponent = (\n <Text>\n <Text color=\"red\">Cannot cancel build ({id}).</Text> {e.message}\n </Text>\n );\n }\n\n setState((prevState) => ({\n ...prevState,\n ...stateUpdates,\n }));\n });\n }, [appId, id, hasStarted, hasCompleted]);\n\n // Exit when done, unless there are custom contents to display\n useEffect(() => {\n if (hasCompleted && !postCancelContents) {\n logger.debug(\n \"CancelBuild component: exiting now that build is cancelled\"\n );\n exit();\n }\n }, [postCancelContents, exit, hasCompleted]);\n\n if (error) {\n error.message = `Failed to cancel build (${id}). ${error.message}`;\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (arbitraryMessageComponent) {\n return arbitraryMessageComponent;\n }\n\n if (hasCompleted) {\n return postCancelContents ? (\n <Fragment>{postCancelContents}</Fragment>\n ) : (\n <Text>Build cancelled</Text>\n );\n }\n\n return <Text>Cancelling build ({id})...</Text>;\n};\n\nCancelBuild.propTypes = {\n appId: PropTypes.string.isRequired,\n // What's shown on succes, defaults to a simple success message\n children: PropTypes.object,\n commandUsed: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n};\n\nexport default CancelBuild;\n","import { Box, Text } from \"ink\";\nimport Link from \"ink-link\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nconst Footer = ({\n hasBuildFailed,\n shouldShowCancelBuildInstructions,\n uiUrl,\n}) => {\n if (!uiUrl) {\n return null;\n }\n\n let buildFailedMessage;\n if (hasBuildFailed) {\n buildFailedMessage = <Text color=\"red\">An error has occurred. </Text>;\n }\n\n return (\n <Box flexDirection=\"column\">\n <Box flexDirection=\"column\">\n <Text bold>{buildFailedMessage}See web UI for more information: </Text>\n <Text>\n <Link fallback={false} url={uiUrl}>\n {uiUrl}\n </Link>\n </Text>\n </Box>\n {shouldShowCancelBuildInstructions ? (\n <Text color=\"gray\">\n <Text bold>[esc]:</Text> cancel build\n </Text>\n ) : null}\n </Box>\n );\n};\n\nFooter.propTypes = {\n hasBuildFailed: PropTypes.bool,\n shouldShowCancelBuildInstructions: PropTypes.bool,\n uiUrl: PropTypes.string,\n};\n\nexport default Footer;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nconst getText = (build, name, version) => {\n const suffix = name + (version ? ` v${version}` : \"\");\n\n if (build && [\"cancelled\", \"succeeded\", \"failed\"].includes(build.status)) {\n if (build.status === \"succeeded\") {\n return <Text>✅ {suffix}</Text>;\n } else if (build.status === \"failed\") {\n return <Text>❌ {suffix}</Text>;\n } else if (build.status === \"cancelled\") {\n return (\n <Text>\n <Text bold color=\"gray\">\n X\n </Text>{\" \"}\n {suffix}\n </Text>\n );\n }\n } else {\n return <Text>{suffix}</Text>;\n }\n};\n\nconst Header = ({ build, name, version }) => (\n <Box marginBottom={1}>{getText(build, name, version)}</Box>\n);\n\nHeader.propTypes = {\n build: PropTypes.object,\n name: PropTypes.string.isRequired,\n version: PropTypes.string,\n};\n\nexport default Header;\n","import isCi from \"is-ci\";\nimport { useInput, useStdin } from \"ink\";\nimport useExit from \"./useExit\";\n\nlet hasSubscribed = false;\nlet ctrlCSubscriptions = [];\n\nconst onStdin = (data, exit) => {\n let input = String(data);\n let wasCtrlPressed = false;\n if (input <= \"\\u001A\" && input !== \"\\r\") {\n input = String.fromCharCode(input.charCodeAt(0) + \"a\".charCodeAt(0) - 1);\n wasCtrlPressed = true;\n }\n if (wasCtrlPressed && input === \"c\") {\n ctrlCSubscriptions.forEach((subscription) => subscription());\n setTimeout(exit, 10);\n }\n};\n\n/*\n See https://github.com/vadimdemedes/pastel/issues/38\n*/\nexport default () => {\n if (isCi) {\n return () => () => {};\n }\n\n const exit = useExit();\n const { stdin } = useStdin();\n\n return (callback, useInputOptions, stdInOptions = {}) => {\n const onStdinData = (data) => onStdin(data, exit);\n\n if (stdInOptions.onCtrlCPressed) {\n ctrlCSubscriptions.push(stdInOptions.onCtrlCPressed);\n }\n\n if (!hasSubscribed) {\n hasSubscribed = true;\n\n // This is based on the Ink (useInput) source\n stdin.on(\"data\", onStdinData);\n }\n\n let cleanUpInputHook = useInput(callback, useInputOptions);\n\n return () => {\n if (hasSubscribed) {\n stdin.off(\"data\", onStdinData);\n }\n if (cleanUpInputHook) {\n cleanUpInputHook();\n }\n };\n };\n};\n","// libs\nimport { Box, Text } from \"ink\";\nimport isCi from \"is-ci\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\n\n// components\nimport CancelBuild from \"./CancelBuild\";\nimport Footer from \"./Footer\";\nimport Header from \"./Header\";\n\n// utilities\nimport {\n hasBuildKickedOff,\n isBuildCancellable,\n} from \"../utilities/buildStatus\";\nimport logger from \"../utilities/logger\";\nimport useInput from \"../utilities/useInput\";\n\nconst MainLayout = ({\n appId,\n appName,\n appVersion,\n build,\n children,\n commandUsed,\n hasBuildFailed,\n}) => {\n logger.debug(\"MainLayout component: render\");\n const onInput = useInput();\n\n const [\n { canCancelBuild, hasKickedOff, isCancellingBuild, wasCtrlCPressed },\n setState,\n ] = useState({\n canCancelBuild: null,\n hasKickedOff: false,\n isCancellingBuild: false,\n wasCtrlCPressed: false,\n });\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n hasKickedOff: hasBuildKickedOff(build),\n }));\n }, [build]);\n\n useEffect(() => {\n setState((previousState) => ({\n ...previousState,\n canCancelBuild: !isCi && !isCancellingBuild && isBuildCancellable(build),\n }));\n }, [build, isCancellingBuild]);\n\n onInput(\n async (input, key) => {\n if (key.escape && canCancelBuild) {\n logger.debug(\"MainLayout component: esc pressed, cancelling build\");\n\n setState((previousState) => ({\n ...previousState,\n isCancellingBuild: true,\n }));\n }\n },\n {},\n {\n onCtrlCPressed: () => {\n setState((previousState) => ({\n ...previousState,\n wasCtrlCPressed: true,\n }));\n },\n }\n );\n\n return (\n <Fragment>\n <Header build={build} name={appName} version={appVersion} />\n\n {isCancellingBuild ? (\n <Box flexDirection=\"column\" marginBottom={1}>\n <CancelBuild appId={appId} commandUsed={commandUsed} id={build.id} />\n </Box>\n ) : (\n children\n )}\n\n <Footer\n hasBuildFailed={hasBuildFailed}\n shouldShowCancelBuildInstructions={canCancelBuild && !wasCtrlCPressed}\n uiUrl={build ? build.url : null}\n />\n\n {wasCtrlCPressed && hasKickedOff ? (\n <Fragment>\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color=\"gray\">\n The build will continue in the background. To view it, run:\n </Text>\n </Box>\n <Box>\n <Text bold color=\"gray\">\n todesktop builds {build.id}\n </Text>\n </Box>\n </Fragment>\n ) : null}\n </Fragment>\n );\n};\n\nMainLayout.propTypes = {\n appId: PropTypes.string,\n appName: PropTypes.string.isRequired,\n appVersion: PropTypes.string,\n build: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n commandUsed: PropTypes.string.isRequired,\n hasBuildFailed: PropTypes.bool,\n};\n\nexport default MainLayout;\n","import firestore, { currentUser } from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async ({ appId }) => {\n logger.debug({ appId }, \"getLatestBuildId\");\n const appRef = firestore.doc(\n `users/${currentUser().uid}/applications/${appId}`\n );\n const appSnapshot = await appRef.get();\n\n if (!appSnapshot.exists) {\n throw new Error(`Application with ID of ${appId} doesn't exist.`);\n }\n\n const buildsResult = await appRef\n .collection(\"builds\")\n .orderBy(\"createdAt\", \"desc\")\n .limit(1)\n .get();\n\n if (buildsResult.empty) {\n return null;\n } else {\n return buildsResult.docs[0].id;\n }\n};\n","// This is its own file just so we can mock it more easily\nexport default (configPath) => require(configPath);\n","import * as path from \"path\";\n\nexport default ({ config, projectRoot }) => {\n const appRoot = config.appPath\n ? path.isAbsolute(config.appPath)\n ? config.appPath\n : path.join(projectRoot, config.appPath)\n : projectRoot;\n\n const transformIfExists = (value, transformer) =>\n value ? transformer(value) : undefined;\n const resolvePath = (filePath) =>\n path.isAbsolute(filePath) ? filePath : path.join(projectRoot, filePath);\n\n const result = {\n ...config,\n appPath: appRoot,\n icon: resolvePath(config.icon),\n };\n\n if (config.extraContentFiles) {\n result.extraContentFiles = transformIfExists(\n config.extraContentFiles,\n (extraContentFiles) =>\n extraContentFiles.map((extraContentFile) => ({\n ...extraContentFile,\n from: resolvePath(extraContentFile.from),\n }))\n );\n }\n\n if (config.extraResources) {\n result.extraResources = transformIfExists(\n config.extraResources,\n (extraResources) =>\n extraResources.map((extraResource) => ({\n ...extraResource,\n from: resolvePath(extraResource.from),\n }))\n );\n }\n\n if (config.linux) {\n result.linux = { ...config.linux };\n\n if (config.linux.icon) {\n result.linux.icon = resolvePath(config.linux.icon);\n }\n }\n\n if (config.mac) {\n result.mac = { ...config.mac };\n\n if (config.mac.entitlements) {\n result.mac.entitlements = resolvePath(config.mac.entitlements);\n }\n\n if (config.mac.icon) {\n result.mac.icon = resolvePath(config.mac.icon);\n }\n }\n\n if (config.dmg) {\n if (config.dmg.background) {\n result.dmg.background = resolvePath(config.dmg.background);\n }\n }\n\n if (config.windows) {\n result.windows = { ...config.windows };\n\n if (config.windows.icon) {\n result.windows.icon = resolvePath(config.windows.icon);\n }\n }\n\n return result;\n};\n","export default (context) => {\n return {\n type: \"object\",\n required: [\n \"author\",\n \"dependencies\",\n \"devDependencies\",\n \"homepage\",\n \"name\",\n \"version\",\n ],\n properties: {\n author: {\n npmAuthor: {},\n },\n dependencies: {\n type: \"object\",\n required: [\"@todesktop/runtime\"],\n // custom keyword that checks package names aren't included in dependencies\n excludedDependencies: {\n dependencyKey: \"dependencies\",\n blacklist: [\"@todesktop/cli\"],\n },\n properties: {\n \"@todesktop/runtime\": {\n type: \"string\",\n },\n },\n },\n devDependencies: {\n type: \"object\",\n required: [\"electron\"],\n properties: {\n electron: {\n type: \"string\",\n semanticVersion: {\n packageName: \"electron\",\n mustBeExact: true,\n },\n },\n },\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n scripts: {\n type: \"object\",\n properties: {\n \"todesktop:beforeInstall\": {\n type: \"string\",\n file: {\n from: context.projectRoot,\n mustBeFile: true,\n },\n },\n \"todesktop:afterPack\": {\n type: \"string\",\n file: {\n from: context.projectRoot,\n mustBeFile: true,\n },\n },\n },\n },\n version: {\n type: \"string\",\n semanticVersion: {},\n },\n },\n };\n};\n","import Ajv from \"ajv\";\nimport betterAjvErrors from \"better-ajv-errors\";\nimport addCustomKeywords from \"./addCustomKeywords\";\nimport getPackageJsonSchema from \"./schema/packageJSON\";\n\nexport default (pkg, pkgPath, context) => {\n const ajv = new Ajv({ allErrors: true, jsonPointers: true });\n addCustomKeywords(ajv, context);\n const schema = getPackageJsonSchema(context);\n const validate = ajv.compile(schema);\n if (!validate(pkg)) {\n const output = betterAjvErrors(schema, pkg, validate.errors, {\n indent: 2,\n });\n\n const error = new Error(`package.json invalid (${pkgPath}); \\n${output}`);\n error.isValidationError = true;\n // This throws and bubbles all the way up to the user\n throw error;\n }\n};\n","/*\n See https://ajv.js.org/custom.html\n*/\nimport emailRegex from \"email-regex\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport parseAuthor from \"parse-author\";\nimport * as semver from \"semver\";\nimport validatePackageJSON from \"./validatePackageJSON\";\n\nexport default (ajv, context) => {\n // validate that dependencies object doesn't contain packageNames in the blacklist\n ajv.addKeyword(\"excludedDependencies\", {\n validate: function validate(schema, data) {\n let matchingPackages = schema.blacklist.filter(\n (packageName) => data[packageName]\n );\n\n if (matchingPackages.length) {\n validate.errors = [\n {\n keyword: \"Dependency\",\n message: `${matchingPackages.join(\", \")} should not be in ${\n schema.dependencyKey\n }`,\n dataPath: `/${schema.dependencyKey}`,\n },\n ];\n return false;\n }\n\n return true;\n },\n });\n\n ajv.addKeyword(\"email\", {\n type: \"string\",\n minLength: 5,\n validate: function validate(schema, data) {\n if (!emailRegex({ exact: true }).test(data)) {\n validate.errors = [\n {\n keyword: \"email\",\n message: \"invalid\",\n },\n ];\n return false;\n }\n return true;\n },\n });\n\n ajv.addKeyword(\"file\", {\n type: \"string\",\n validate: function validate(schema, data) {\n const mustBeDirectory =\n schema.mustBeDirectory || schema.mustBeElectronApp;\n\n // Value is empty\n if (!data.trim().length) {\n if (schema.isOptional) {\n return true;\n }\n\n validate.errors = [\n {\n keyword: schema.mustBeDirectory ? \"Directory\" : \"File\",\n message: \"is empty\",\n },\n ];\n return false;\n }\n\n const filePath = path.isAbsolute(data)\n ? data\n : path.join(schema.from, data);\n\n // Isn't in project\n if (path.relative(schema.from, filePath).startsWith(\"..\")) {\n validate.errors = [\n {\n keyword: mustBeDirectory ? \"Directory\" : \"File\",\n message: `is not in project (${filePath})`,\n },\n ];\n return false;\n }\n\n // Extension isn't allowed\n if (\n schema.extensions &&\n !schema.extensions.includes(path.extname(filePath).substr(1))\n ) {\n validate.errors = [\n {\n keyword: \"File extension\",\n message: `invalid. ${path.extname(data)} Must be${\n schema.extensions > 1 ? \"one of the following:\" : \"\"\n } \"${schema.extensions.join('\", \"')}\"`,\n },\n ];\n return false;\n }\n\n // Doesn't exist\n if (!fs.existsSync(filePath)) {\n validate.errors = [\n {\n keyword: mustBeDirectory ? \"Directory\" : \"File\",\n message: `does not exist (${filePath})`,\n },\n ];\n return false;\n }\n\n const stats = fs.statSync(filePath);\n\n if (mustBeDirectory && stats.isFile()) {\n validate.errors = [\n {\n keyword: \"Directory\",\n message: `must be a directory, not a file (${filePath})`,\n },\n ];\n return false;\n } else if (schema.mustBeFile && stats.isDirectory()) {\n validate.errors = [\n {\n keyword: \"File\",\n message: `must be a file, not a directory (${filePath})`,\n },\n ];\n return false;\n }\n\n if (schema.mustBeElectronApp) {\n const appRoot = path.resolve(filePath);\n const pkgPath = path.join(appRoot, \"package.json\");\n\n if (!fs.existsSync(pkgPath)) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. There is no package.json at ${pkgPath}`,\n },\n ];\n return false;\n }\n\n let pkg;\n try {\n pkg = require(pkgPath);\n } catch (e) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. Invalid JSON in package.json (${pkgPath})`,\n },\n ];\n return false;\n }\n\n context.projectRoot = appRoot;\n // This throws and bubbles all the way up to the user\n validatePackageJSON(pkg, pkgPath, context);\n\n // Validate that either an index.js or valid \"main\" property exists\n const mainFilePath = pkg.main;\n if (mainFilePath) {\n const resolvedMainFilePath = path.join(appRoot, mainFilePath);\n if (!fs.existsSync(resolvedMainFilePath)) {\n validate.errors = [\n {\n keyword: \"App\",\n message: `invalid. The \"main\" file specified in your package.json (${mainFilePath}) does not exist (${resolvedMainFilePath})`,\n },\n ];\n return false;\n }\n } else {\n if (!fs.existsSync(path.join(appRoot, \"index.js\"))) {\n validate.errors = [\n {\n keyword: \"App\",\n message:\n 'invalid. There is neither a \"main\" property in your package.json nor an index.js at the root of your app',\n },\n ];\n return false;\n }\n }\n }\n\n return true;\n },\n errors: true,\n });\n\n ajv.addKeyword(\"npmAuthor\", {\n validate: function validate(schema, data) {\n const dataType = typeof data;\n if (dataType === \"undefined\") {\n return true;\n } else if (dataType === \"string\") {\n const parsedAuthor = parseAuthor(data);\n if (!parsedAuthor || !parsedAuthor.email) {\n validate.errors = [\n {\n keyword: \"author\",\n message:\n 'invalid. If you\\'re using a string, it must look something like \"Barney Rubble <b@rubble.com>\", see https://docs.npmjs.com/files/package.json#people-fields-author-contributors',\n },\n ];\n return false;\n }\n } else if (dataType === \"object\") {\n if (typeof data.name === \"undefined\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `invalid. \"name\" property is missing.`,\n },\n ];\n return false;\n } else {\n if (typeof data.name !== \"string\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.name invalid. It must be a string`,\n },\n ];\n return false;\n }\n\n if (typeof data.email === \"undefined\") {\n validate.errors = [\n {\n keyword: \"author\",\n message: `invalid. \"email\" property is missing.`,\n },\n ];\n return false;\n } else {\n if (typeof data.email === \"string\") {\n if (!emailRegex({ exact: true }).test(data.email)) {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.email invalid. It does not look like an email.`,\n },\n ];\n return false;\n }\n } else {\n validate.errors = [\n {\n keyword: \"author\",\n message: `.email invalid. It must be a string.`,\n },\n ];\n return false;\n }\n }\n }\n } else {\n // Neither object nor string\n validate.errors = [\n {\n keyword: \"author\",\n message:\n \"invalid. It must either be an object or string. See https://docs.npmjs.com/files/package.json#people-fields-author-contributors\",\n },\n ];\n return false;\n }\n\n return true;\n },\n errors: true,\n });\n\n ajv.addKeyword(\"semanticVersion\", {\n type: \"string\",\n minLength: 5,\n validate: function validate(schema, data) {\n const keyword =\n (schema.packageName ? `${schema.packageName} ` : \"\") + \"version\";\n\n if (!(semver.valid(data) || semver.validRange(data))) {\n validate.errors = [\n {\n keyword,\n message:\n \"invalid. It must be a semantic version (see https://semver.org/)\",\n },\n ];\n return false;\n }\n\n if (\n schema.mustBeExact &&\n (data.startsWith(\"~\") || data.startsWith(\"^\"))\n ) {\n validate.errors = [\n {\n keyword,\n message:\n \"invalid. It must be an exact version. Good: 9.0.0. Bad: ^9.0.0\",\n },\n ];\n return false;\n }\n return true;\n },\n });\n};\n","const getItemOrArrayOfItemsSchema = (itemSchema) => {\n return {\n oneOf: [\n itemSchema,\n {\n type: \"array\",\n items: itemSchema,\n },\n ],\n };\n};\n\nexport default (context) => {\n const getIconSchema = (additionalAllowedExtensions = []) => {\n return {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"icns\", \"png\", ...additionalAllowedExtensions],\n mustBeFile: true,\n },\n minLength: 3,\n };\n };\n\n return {\n type: \"object\",\n required: [\"id\", \"icon\", \"schemaVersion\"],\n properties: {\n appId: { type: \"string\", minLength: 1 },\n appFiles: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n appProtocolScheme: { type: \"string\", minLength: 1 },\n appPath: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n isOptional: true,\n mustBeElectronApp: true,\n },\n },\n asarUnpack: {\n oneOf: [\n { type: \"boolean\" },\n {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n ],\n },\n copyright: { type: \"string\", minLength: 1 },\n electronMirror: {\n type: \"string\",\n format: \"uri\",\n },\n electronVersion: {\n type: \"string\",\n minLength: 1,\n },\n extraContentFiles: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"from\"],\n properties: {\n from: {\n type: \"string\",\n file: { from: context.projectRoot },\n },\n to: { type: \"string\" },\n },\n },\n },\n extraResources: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"from\"],\n properties: {\n from: {\n type: \"string\",\n file: { from: context.projectRoot },\n },\n to: { type: \"string\" },\n },\n },\n },\n fileAssociations: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"ext\"],\n properties: {\n ext: getItemOrArrayOfItemsSchema({\n type: \"string\",\n minLength: 1,\n }),\n description: {\n type: \"string\",\n minLength: 1,\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n mimeType: {\n type: \"string\",\n minLength: 1,\n },\n icon: {\n type: \"string\",\n minLength: 1,\n },\n role: {\n type: \"string\",\n minLength: 1,\n },\n isPackage: {\n type: \"boolean\",\n },\n rank: {\n type: \"string\",\n minLength: 1,\n },\n },\n },\n minItems: 1,\n },\n filesForDistribution: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n minItems: 1,\n },\n icon: getIconSchema(),\n linux: {\n properties: {\n category: { type: \"string\", minLength: 1 },\n icon: getIconSchema(),\n },\n },\n id: { type: \"string\", minLength: 1 },\n mac: {\n properties: {\n category: { type: \"string\", minLength: 1 },\n additionalBinariesToSign: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n entitlements: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"plist\"],\n mustBeFile: true,\n },\n minLength: 1,\n },\n extendInfo: {\n type: \"object\",\n },\n icon: getIconSchema(),\n },\n },\n dmg: {\n properties: {\n background: {\n type: \"string\",\n file: {\n from: context.projectRoot,\n extensions: [\"tiff\"],\n mustBeFile: true,\n },\n minLength: 1,\n },\n artifactName: { type: \"string\", minLength: 1 },\n backgroundColor: { type: \"string\", minLength: 1 },\n iconSize: { type: \"number\" },\n iconTextSize: { type: \"number\" },\n title: { type: \"string\", minLength: 1 },\n contents: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n x: { type: \"number\" },\n y: { type: \"number\" },\n },\n },\n },\n window: {\n type: \"object\",\n properties: {\n x: { type: \"number\" },\n y: { type: \"number\" },\n width: { type: \"number\" },\n height: { type: \"number\" },\n },\n },\n },\n },\n schemaVersion: { type: \"number\", minimum: 1, maximum: 1 },\n snap: {\n properties: {\n after: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n appPartStage: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n assumes: getItemOrArrayOfItemsSchema({\n type: \"string\",\n minLength: 1,\n }),\n autoStart: {\n type: \"boolean\",\n },\n buildPackages: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n confinement: {\n type: \"string\",\n enum: [\"classic\", \"devmode\", \"strict\"],\n },\n environment: {\n type: \"object\",\n },\n grade: {\n type: \"string\",\n enum: [\"devel\", \"stable\"],\n },\n layout: {\n type: \"object\",\n },\n plugs: {\n type: \"array\",\n items: {\n anyOf: [\n {\n type: \"string\",\n minLength: 1,\n },\n {\n type: \"object\",\n },\n ],\n },\n },\n stagePackages: {\n type: \"array\",\n items: {\n type: \"string\",\n minLength: 1,\n },\n },\n summary: {\n type: \"string\",\n maxLength: 78,\n },\n useTemplateApp: {\n type: \"boolean\",\n },\n },\n },\n uploadSizeLimit: {\n type: \"number\",\n },\n windows: {\n properties: {\n icon: getIconSchema([\"ico\"]),\n },\n },\n },\n };\n};\n","import Ajv from \"ajv\";\nimport betterAjvErrors from \"better-ajv-errors\";\nimport addCustomKeywords from \"./addCustomKeywords\";\nimport getFullSchema from \"./schema/full\";\n\nexport default ({ config, projectRoot }) => {\n const context = { projectRoot };\n const schema = getFullSchema(context);\n\n const ajv = new Ajv({ allErrors: true, jsonPointers: true });\n addCustomKeywords(ajv, context);\n const validate = ajv.compile(schema);\n\n if (!validate(config)) {\n const output = betterAjvErrors(schema, config, validate.errors, {\n indent: 2,\n });\n\n throw new Error(\n `todesktop.json invalid. \\nLearn more here: https://www.npmjs.com/package/@todesktop/cli#project-configuration-todesktopjson \\n\\n${output}`\n );\n }\n\n if (config.productName) {\n throw new Error(\n `todesktop.json invalid.\n\nThe \"productName\" property is no longer supported in todesktop.json. Please remove it and add it to your app's package.json instead.\n\nWe made this change because Electron also uses the \"productName\" if it exists in your app's package.json. If you do not add it to your package.json, your app name will default to the value of the \"name\" property in your package.json.`\n );\n }\n};\n","import { dirname } from \"path\";\nimport findUp from \"find-up\";\nimport loadConfig from \"./loadConfig\";\nimport resolveConfigPaths from \"./resolveConfigPaths\";\nimport validateConfig from \"./validateConfig\";\n\nexport default () => {\n const configPath = findUp.sync(\"todesktop.json\");\n if (!configPath) {\n throw new Error(\n \"Can not find todesktop.json in this folder or any parent folders\"\n );\n }\n const projectRoot = dirname(configPath);\n\n // This will throw if it's not valid JSON\n const config = loadConfig(configPath);\n config.appPath = config.appPath || \".\";\n\n // This will throw if invalid\n validateConfig({ config, projectRoot });\n\n const result = resolveConfigPaths({ config, projectRoot });\n return { config: result, unprocessedConfig: config, projectRoot };\n};\n","// X build has failed, should we exit? I.e. is it settled?\nexport default (build) =>\n [\"linux\", \"mac\", \"windows\"].every(\n (platform) =>\n build[platform].shouldSkip ||\n \"succeeded\" === build[platform].status ||\n (\"failed\" === build[platform].status &&\n build[platform].numberOfAttemptedBuilds === 2)\n );\n","import firestore from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async (key, receiver) => {\n const hasResolved = false;\n\n return new Promise((resolve, reject) => {\n logger.debug({ key }, \"subscribeToFirebaseDoc\");\n firestore.doc(key).onSnapshot(\n (snapshot) => {\n receiver({\n snapshot,\n data: snapshot.exists ? snapshot.data() : undefined,\n });\n if (!hasResolved) {\n resolve();\n }\n },\n (err) => {\n reject(err);\n }\n );\n });\n};\n","import subscribeToFirebaseDoc from \"./subscribeToFirebaseDoc\";\n\nexport default async ({ appId, buildId, onDataReceived, userId }) => {\n try {\n return await subscribeToFirebaseDoc(\n `users/${userId}/applications/${appId}/builds/${buildId}`,\n async ({ data }) => {\n onDataReceived(data);\n }\n );\n } catch (e) {\n e.message = `Failed while subscribing to build; ${e.message}`;\n throw e;\n }\n};\n","// libs\nimport { Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\n\n// components\nimport BuildProgress from \"./BuildProgress\";\nimport ErrorDisplay from \"./ErrorDisplay\";\nimport MainLayout from \"./MainLayout\";\n\n// utils\nimport { currentUser } from \"../utilities/firestore\";\nimport getLatestBuildId from \"../utilities/getLatestBuildId\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport logForCI from \"../utilities/logForCI\";\nimport shouldExitOnBuildFailure from \"../utilities/shouldExitOnBuildFailure\";\nimport subscribeToBuild from \"../utilities/subscribeToBuild\";\nimport useExit from \"../utilities/useExit\";\n\nconst ViewBuild = ({ commandUsed, id }) => {\n const exit = useExit();\n const [\n {\n appId,\n arbitraryMessageComponent,\n build,\n error,\n hasBuildFailed,\n isLoading,\n },\n setState,\n ] = useState({\n appId: null,\n arbitraryMessageComponent: null,\n build: null,\n error: null,\n hasBuildFailed: false,\n isLoading: true,\n });\n\n const onError = (e) => {\n const error = e.response ? e.response.data : e;\n logForCI(error);\n setState((prevState) => ({\n ...prevState,\n error,\n }));\n };\n\n useEffect(() => {\n let config;\n try {\n // This will throw if validation fails:\n config = getProjectConfig().config;\n } catch (e) {\n setState((previousState) => ({ ...previousState, error: e }));\n return;\n }\n\n let firebaseUnsubscribe;\n\n const subscribe = (buildId) => {\n subscribeToBuild({\n appId: config.id,\n buildId,\n onDataReceived: (data) => {\n if (!data) {\n onError(\n new Error(\n `No such build exists (${buildId}). Please contact us if this is an error`\n )\n );\n }\n setState((prevState) => ({\n ...prevState,\n appId: config.id,\n build: data,\n isLoading: false,\n }));\n },\n userId: currentUser().uid,\n })\n .then((firebaseUnsubscribeResult) => {\n firebaseUnsubscribe = firebaseUnsubscribeResult;\n })\n .catch(onError);\n };\n\n if (id) {\n subscribe(id);\n } else {\n getLatestBuildId({ appId: config.id })\n .catch(onError)\n .then((latestBuildId) => {\n if (!latestBuildId) {\n setState((previousState) => ({\n ...previousState,\n arbitraryMessageComponent: <Text>There are no builds yet</Text>,\n }));\n return;\n }\n return subscribe(latestBuildId);\n });\n }\n\n return () => {\n if (firebaseUnsubscribe) {\n firebaseUnsubscribe();\n }\n };\n }, [id]);\n\n // Exit if the build has errored and settled\n useEffect(() => {\n if (hasBuildFailed && shouldExitOnBuildFailure(build)) {\n setTimeout(() => exit(new Error(\"Build has failed\")), 10);\n }\n }, [build, exit, hasBuildFailed]);\n\n // Exit once an arbitrary message exists\n useEffect(() => {\n if (arbitraryMessageComponent) {\n setTimeout(() => exit(new Error(\"Validation failed\")), 10);\n }\n }, [arbitraryMessageComponent, exit]);\n\n if (error) {\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (arbitraryMessageComponent) {\n return arbitraryMessageComponent;\n }\n\n if (isLoading) {\n return <Text>Loading...</Text>;\n }\n\n const onBuildFailure = () => {\n if (hasBuildFailed) {\n return;\n }\n setState((prevState) => ({\n ...prevState,\n hasBuildFailed: true,\n }));\n };\n\n return (\n <MainLayout\n appId={appId}\n appName={build.appName}\n appVersion={build.appVersion}\n build={build}\n commandUsed={commandUsed}\n hasBuildFailed={hasBuildFailed}\n >\n <BuildProgress build={build} onBuildFailure={onBuildFailure} />\n </MainLayout>\n );\n};\n\nViewBuild.propTypes = {\n id: (props, propName, componentName) => {\n if ([props.id, props.shouldViewLatest].filter(Boolean).length !== 1) {\n return new Error(\n `Exactly one of 'id' and 'shouldViewLatest' must be specified in '${componentName}'`\n );\n }\n\n const type = typeof props.id;\n if (![\"string\", \"undefined\"].includes(type)) {\n return new Error(\n `'id' is a '${type}', not a string, in '${componentName}'.`\n );\n }\n },\n commandUsed: PropTypes.string.isRequired,\n shouldViewLatest: (props, propName, componentName) => {\n if ([props.id, props.shouldViewLatest].filter(Boolean).length !== 1) {\n return new Error(\n `Exactly one of 'id' and 'shouldViewLatest' must be specified in '${componentName}'`\n );\n }\n\n const type = typeof props.shouldViewLatest;\n if (![\"boolean\", \"undefined\"].includes(type)) {\n return new Error(\n `'shouldViewLatest' is a '${type}', not a boolean, in '${componentName}'.`\n );\n }\n },\n};\n\nexport default ViewBuild;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\n/*\n See Table component\n*/\nconst TableEnd = ({ keyDetails, ...props }) => {\n let content = \"└\";\n content += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┴\");\n content += \"┘\";\n\n return (\n <Box {...props}>\n <Text>{content}</Text>\n </Box>\n );\n};\n\nTableEnd.propTypes = {\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableEnd;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\n\n/*\n See Table component\n*/\nconst TableHead = ({ keyDetails, ...props }) => {\n let topLine = \"┌\";\n topLine += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┬\");\n topLine += \"┐\";\n\n const contentLineElements = Object.values(keyDetails).map(\n ({ key, width }, index) => {\n return (\n <Fragment key={key}>\n {index > 0 ? <Text> │ </Text> : null}\n <Box width={width}>\n <Text bold>{key}</Text>\n </Box>\n </Fragment>\n );\n }\n );\n\n return (\n <Box flexDirection=\"column\" {...props}>\n <Box>\n <Text>{topLine}</Text>\n </Box>\n <Box>\n <Box>\n <Text>│ </Text>\n {contentLineElements}\n <Text> │</Text>\n </Box>\n </Box>\n </Box>\n );\n};\n\nTableHead.propTypes = {\n bottomLinePrefix: PropTypes.string,\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableHead;\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\n\n/*\n See Table component\n*/\nconst TableRow = ({\n data,\n getCellTextProps = ({ props }) => props,\n keyDetails,\n textProps = {},\n}) => {\n let topLine = \"├\";\n topLine += Object.values(keyDetails)\n .map(({ width }) => \"─\".repeat(width + 2))\n .join(\"┼\");\n topLine += \"┤\";\n\n const content = (\n <Fragment>\n <Text>│ </Text>\n {Object.entries(data).map(([key, value], index) => {\n return (\n <Box key={key}>\n {index > 0 ? <Text> │ </Text> : null}\n <Box width={keyDetails[key].width}>\n <Text\n {...getCellTextProps({\n key,\n props: textProps,\n rowData: data,\n value,\n })}\n >\n {value}\n </Text>\n </Box>\n </Box>\n );\n })}\n <Text> │</Text>\n </Fragment>\n );\n\n return (\n <Fragment>\n <Box flexDirection=\"column\">\n <Text>{topLine}</Text>\n <Box>{content}</Box>\n </Box>\n </Fragment>\n );\n};\n\nTableRow.propTypes = {\n data: PropTypes.object.isRequired,\n getCellTextProps: PropTypes.func,\n keyDetails: PropTypes.object.isRequired,\n textProps: PropTypes.object,\n};\n\nexport default TableRow;\n","import PropTypes from \"prop-types\";\nimport React, { Fragment } from \"react\";\nimport TableRow from \"./TableRow\";\n\n/*\n See Table component\n*/\nconst TableBody = ({ data, getCellTextProps, keyDetails }) => {\n return (\n <Fragment>\n {data.map((rowData, index) => (\n <TableRow\n data={rowData}\n getCellTextProps={getCellTextProps}\n key={index}\n keyDetails={keyDetails}\n />\n ))}\n </Fragment>\n );\n};\n\nTableBody.propTypes = {\n data: (props, propName, componentName) => {\n const type = typeof props.data;\n if (Array.isArray(\"array\")) {\n return new Error(\n `'data' prop must be an array ('${type}' given) in ${componentName} component`\n );\n }\n\n if (props.data.length === 0) {\n return new Error(\n `'data' prop must not be empty, in ${componentName} component`\n );\n }\n },\n getCellTextProps: PropTypes.func,\n keyDetails: PropTypes.object.isRequired,\n};\n\nexport default TableBody;\n","// This is used to get the column widths for tables\nexport default (data) => {\n const result = {};\n Object.keys(data[0]).forEach((key) => {\n result[key] = {\n key,\n width: Math.max(\n key.length,\n data.map((item) => item[key].toString().length).sort((a, b) => b - a)[0]\n ),\n };\n });\n return result;\n};\n","import { Box } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport TableEnd from \"./TableEnd\";\nimport TableHead from \"./TableHead\";\nimport TableBody from \"./TableBody\";\nimport getKeyDetails from \"../utilities/getKeyDetails\";\n\n/*\n This component prints (the array of objects given) in a table.\n The array must not be empty.\n The keys are used as headers.\n Column widths are based on the longest value (object key or value).\n It is assumed that the same keys exist in all items.\n*/\nconst Table = ({ data, getCellTextProps }) => {\n const keyDetails = getKeyDetails(data);\n\n return (\n <Box flexDirection=\"column\">\n <TableHead keyDetails={keyDetails} />\n <TableBody\n data={data}\n getCellTextProps={getCellTextProps}\n keyDetails={keyDetails}\n />\n <TableEnd keyDetails={keyDetails} />\n </Box>\n );\n};\n\nTable.propTypes = {\n data: (props, propName, componentName) => {\n const type = typeof props.data;\n if (Array.isArray(\"array\")) {\n return new Error(\n `'data' prop must be an array ('${type}' given) in ${componentName} component`\n );\n }\n\n if (props.data.length === 0) {\n return new Error(\n `'data' prop must not be empty, in ${componentName} component`\n );\n }\n },\n getCellTextProps: PropTypes.func,\n};\n\nexport default Table;\n","export default (input) => {\n if (typeof input !== \"string\") {\n return \"\";\n }\n return input.charAt(0).toUpperCase() + input.slice(1);\n};\n","import firestore, { currentUser } from \"./firestore\";\nimport logger from \"./logger\";\n\nexport default async ({\n addWhereClauses = (query) => query,\n appId,\n limit = 5,\n startAfter,\n}) => {\n logger.debug({ appId, limit, startAfter }, \"getBuilds\");\n const appRef = firestore.doc(\n `users/${currentUser().uid}/applications/${appId}`\n );\n const appSnapshot = await appRef.get();\n\n if (!appSnapshot.exists) {\n throw new Error(`Application with ID of ${appId} doesn't exist.`);\n }\n\n let query = addWhereClauses(appRef.collection(\"builds\")).orderBy(\n \"createdAt\",\n \"desc\"\n );\n\n if (startAfter) {\n query = query.startAfter(startAfter);\n }\n\n const buildsResult = await query.limit(limit).get();\n\n if (buildsResult.empty) {\n return [];\n }\n\n return buildsResult.docs.map((doc) => doc.data());\n};\n","import * as dateFns from \"date-fns\";\n\nexport default (input) =>\n dateFns.formatDistance(new Date(input), new Date()) + \" ago\";\n","import { Box, Text } from \"ink\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ErrorDisplay from \"./ErrorDisplay\";\nimport Table from \"./Table\";\nimport capitalize from \"../utilities/capitalize\";\nimport getBuilds from \"../utilities/getBuilds\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport getRelativeDateFromDateString from \"../utilities/getRelativeDateFromDateString\";\nimport logForCI from \"../utilities/logForCI\";\nimport useInput from \"../utilities/useInput\";\nimport useExit from \"../utilities/useExit\";\n\nconst ViewBuilds = ({ commandUsed }) => {\n const exit = useExit();\n const [\n {\n builds,\n error,\n hasMoreToLoad,\n isInitialLoadComplete,\n isLoading,\n projectConfig,\n startAfter,\n },\n setState,\n ] = useState({\n builds: [],\n error: null,\n hasMoreToLoad: true,\n isInitialLoadComplete: false,\n isLoading: false,\n projectConfig: null,\n startAfter: null,\n });\n\n const onInput = useInput();\n\n onInput((input, key) => {\n if (key.escape) {\n exit();\n }\n\n if (input === \" \" || key.downArrow || key.pageDown || key.return) {\n if (!isInitialLoadComplete || !hasMoreToLoad) {\n return;\n }\n\n setState((previousState) => ({\n ...previousState,\n startAfter: builds[builds.length - 1].createdAt,\n }));\n }\n });\n\n useEffect(() => {\n if (\n error ||\n isLoading ||\n (isInitialLoadComplete && (!hasMoreToLoad || !startAfter))\n ) {\n return;\n }\n\n setState((previousState) => ({\n ...previousState,\n isLoading: true,\n }));\n\n let config;\n try {\n // This will throw if validation fails:\n config = projectConfig || getProjectConfig().config;\n } catch (e) {\n setState((previousState) => ({ ...previousState, error: e }));\n return;\n }\n\n const pageSize = 5;\n\n getBuilds({ appId: config.id, limit: pageSize + 1, startAfter })\n .then((buildsResult) => {\n setState((previousState) => {\n const stateUpdates = {\n hasMoreToLoad: buildsResult.length > pageSize,\n isInitialLoadComplete: true,\n isLoading: false,\n projectConfig: config,\n startAfter: null,\n };\n\n if (buildsResult.length) {\n stateUpdates.builds = [\n ...previousState.builds,\n ...buildsResult.slice(0, pageSize),\n ];\n }\n return {\n ...previousState,\n ...stateUpdates,\n };\n });\n })\n .catch((e) => {\n logForCI(e);\n setState((previousState) => ({\n ...previousState,\n error: e,\n isLoading: false,\n }));\n });\n }, [\n error,\n hasMoreToLoad,\n isInitialLoadComplete,\n isLoading,\n projectConfig,\n startAfter,\n ]);\n\n // Exit once all are loaded\n useEffect(() => {\n if (!hasMoreToLoad) {\n setTimeout(exit, 10);\n }\n }, [exit, hasMoreToLoad]);\n\n if (error) {\n return <ErrorDisplay commandUsed={commandUsed} error={error} />;\n }\n\n if (!isInitialLoadComplete) {\n return <Text>Loading...</Text>;\n }\n\n if (builds.length) {\n const data = builds.map((build) => ({\n ID: build.id,\n Version: build.appVersion || \"unknown\",\n \"Creation date\": getRelativeDateFromDateString(build.createdAt),\n Status: capitalize(build.status),\n \"Release date\": build.releasedAt\n ? getRelativeDateFromDateString(build.releasedAt)\n : \"Unreleased\",\n }));\n\n const getCellTextProps = ({ key, props, value }) => {\n const result = { ...props };\n\n if (key === \"Status\") {\n const status = value.toLowerCase();\n if (status === \"succeeded\") {\n result.color = \"green\";\n } else if (status === \"failed\") {\n result.color = \"red\";\n } else if (status === \"cancelled\") {\n result.dimColor = true;\n }\n } else if (\n key === \"Release date\" &&\n value.toLowerCase() === \"unreleased\"\n ) {\n result.dimColor = true;\n }\n\n return result;\n };\n\n return (\n <Fragment>\n <Table getCellTextProps={getCellTextProps} data={data} />\n {builds.length > 0 ? (\n <Box>\n <Text color=\"gray\" dimColor>\n {isLoading\n ? \"Loading more...\"\n : hasMoreToLoad\n ? `Showing the latest ${builds.length} builds. Press space/down to load more.`\n : `Showing all (${builds.length}) builds`}\n </Text>\n </Box>\n ) : null}\n </Fragment>\n );\n } else {\n return <Text>There are no builds yet</Text>;\n }\n};\n\nViewBuilds.propTypes = {\n commandUsed: PropTypes.string.isRequired,\n};\n\nexport default ViewBuilds;\n","import chalk from \"chalk\";\nimport isInstalledGlobally from \"is-installed-globally\";\nimport latestVersion from \"latest-version\";\nimport pkgUp from \"pkg-up\";\nimport semver from \"semver\";\n\nexport default () => {\n // Ignore during tests\n if (process.env.AVA_PATH) {\n return;\n }\n const pkg = require(pkgUp.sync({\n cwd: __dirname,\n }));\n latestVersion(pkg.name).then((latest) => {\n if (semver.gt(latest, pkg.version)) {\n const commandToUpdate = chalk.greenBright(\n `npm install ${\n isInstalledGlobally ? \"-g\" : \"--save-dev\"\n } @todesktop/cli`\n );\n console.log(\n `Your version of @todesktop/cli is out of date.\\nRun ${commandToUpdate} to update to v${latest}.`\n );\n if (!semver.satisfies(latest, `^${pkg.version}`)) {\n console.log(`CLI is exiting because it is out out of date.`);\n process.exit(1);\n }\n }\n });\n};\n","module.exports={private:!1,publishConfig:{access:\"public\"},name:\"@todesktop/cli\",version:\"1.1.2\",license:\"MIT\",author:\"Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)\",homepage:\"https://todesktop.com/cli\",bugs:{email:\"dave@todesktop.com\"},bin:{todesktop:\"./build/cli.js\"},engines:{node:\">=12\"},scripts:{prepublishOnly:\"npx force-resolutions\",dev:\"cp-cli dev.env .env && pastel dev\",\"dev:prod\":\"cp-cli prod.env .env && pastel dev\",build:\"cross-env NODE_ENV=production pastel build && cp-cli prod.env .env && cp node_modules/pastel/boot.js build/boot.js && sed -i'.bak' 's@pastel\\\\/boot@.\\\\/boot@g' build/cli.js\",lint:\"eslint .\",\"lint--fix\":\"eslint . --fix\",release:\"npm run build && npx np --tag=latest\",\"release-beta\":\"npm run build && npx np --any-branch --no-tests --tag=beta\",test:\"npm run build && ava\",\"test--watch\":\"npm test -- --watch\"},files:[\"build\",\"docs\",\".env\",\"LICENSE\",\"README.md\"],dependencies:{\"@sentry/node\":\"^5.27.2\",ajv:\"^6.12.6\",\"analytics-node\":\"^4.0.1\",archiver:\"^5.2.0\",axios:\"^0.21.1\",\"better-ajv-errors\":\"^1.2.0\",bunyan:\"^1.8.14\",\"camelcase-keys\":\"^5.2.0\",chalk:\"^4.1.0\",conf:\"^7.1.2\",\"date-fns\":\"^2.28.0\",decamelize:\"^1.2.0\",del:\"^6.0.0\",dotenv:\"^8.2.0\",du:\"^1.0.0\",\"email-regex\":\"^4.0.0\",\"fast-glob\":\"^3.2.4\",\"final-form\":\"^4.20.1\",\"find-up\":\"^5.0.0\",firebase:\"^7.24.0\",\"git-rev-sync\":\"^3.0.2\",ink:\"^3.2.0\",\"ink-gradient\":\"^2.0.0\",\"ink-link\":\"^2.0.0\",\"ink-progress-bar\":\"^3.0.0\",\"ink-select-input\":\"^4.2.1\",\"ink-text-input\":\"^4.0.1\",\"is-ci\":\"^3.0.1\",\"is-installed-globally\":\"^0.3.2\",\"latest-version\":\"^5.1.0\",\"lodash.throttle\":\"^4.1.1\",\"parse-author\":\"^2.0.0\",\"pkg-up\":\"^3.1.0\",\"pretty-bytes\":\"^5.4.1\",\"prop-types\":\"^15.7.2\",react:\"^17.0.2\",\"react-final-form\":\"^6.5.1\",semver:\"^7.3.2\",\"stream-to-array\":\"^2.3.0\",superagent:\"^7.1.3\",uuid:\"^8.3.1\",\"xdg-basedir\":\"^4.0.0\",yargs:\"^15.4.1\"},devDependencies:{\"@ava/babel\":\"^1.0.1\",\"@babel/core\":\"^7.12.3\",\"@babel/plugin-transform-runtime\":\"^7.12.1\",\"@babel/preset-env\":\"^7.11.5\",\"@babel/register\":\"^7.12.1\",\"@types/bunyan\":\"^1.8.6\",ava:\"^4.3.1\",\"babel-preset-es2015\":\"^6.24.1\",\"cp-cli\":\"^2.0.0\",\"cross-env\":\"^7.0.2\",eslint:\"^7.6.0\",\"eslint-config-prettier\":\"^6.11.0\",\"eslint-config-standard\":\"^14.1.1\",\"eslint-plugin-import\":\"^2.22.1\",\"eslint-plugin-node\":\"^11.1.0\",\"eslint-plugin-prettier\":\"^3.1.4\",\"eslint-plugin-promise\":\"^4.2.1\",\"eslint-plugin-react\":\"^7.21.4\",\"eslint-plugin-react-hooks\":\"^4.2.0\",\"eslint-plugin-standard\":\"^4.0.1\",execa:\"^4.0.3\",\"extract-zip\":\"^2.0.1\",\"fs-extra\":\"^9.0.1\",husky:\"^4.3.0\",\"lint-staged\":\"^10.2.11\",pastel:\"^1.1.1\",prettier:\"^2.1.2\",proxyquire:\"^2.1.3\",sinon:\"^9.0.3\"},ava:{files:[\"test/**/*.js\",\"!test/fixtures/**/*\",\"!test/utilities/**/*\"],require:[\"@babel/register\"],timeout:\"10m\"},\"lint-staged\":{\"**/*.js\":[\"eslint . --fix\",\"git add\"]},husky:{hooks:{\"pre-commit\":\"lint-staged\"}},overrides:{pastel:{\"parcel-bundler\":{deasync:\"0.1.27\"}}},resolutions:{\"pastel/parcel-bundler/deasync\":\"0.1.24\",ink:\"3.2.0\",react:\"17.0.2\"}};","import * as Sentry from \"@sentry/node\";\nimport os from \"os\";\nimport pkgJson from \"../../package.json\";\nimport { getAuthConfig } from \"../utilities/configStore\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\nimport path from \"path\";\nimport getEnvironmentVariables from \"./getEnvironmentVariables\";\n\nexport default () => {\n const { TODESKTOP_CLI_SENTRY_DSN } = getEnvironmentVariables();\n if (!TODESKTOP_CLI_SENTRY_DSN) {\n // Don't initialise Sentry\n return;\n }\n Sentry.init({\n dsn: TODESKTOP_CLI_SENTRY_DSN,\n });\n Sentry.configureScope((scope) => {\n try {\n scope.setUser({ email: getAuthConfig().email });\n } catch (err) {}\n try {\n scope.setContext(\"os\", {\n name: os.platform(),\n version: os.release(),\n });\n } catch (err) {}\n try {\n scope.setContext(\"runtime\", {\n name: \"Node.js\",\n version: process.version,\n });\n } catch (err) {}\n try {\n scope.setContext(\"app\", {\n app_name: pkgJson.name,\n app_version: pkgJson.version,\n });\n } catch (err) {}\n try {\n const configResult = getProjectConfig();\n scope.setExtra(\"config\", configResult);\n } catch (err) {}\n });\n};\n","import exitIfCLIOutOfDate from \"./exitIfCLIOutOfDate\";\nimport initSentry from \"./initSentry\";\n\nconst defaultOptions = {\n sentry: true,\n exitIfOutOfDate: true,\n};\n\nexport default (options) => {\n const { sentry, exitIfOutOfDate } = { ...defaultOptions, ...options };\n if (sentry) {\n initSentry();\n }\n if (exitIfOutOfDate) {\n exitIfCLIOutOfDate();\n }\n};\n","import { useEffect, useState } from \"react\";\n\nimport { onUserAuth } from \"./firestore\";\nimport { identify, track, ANALYTICS_EVENT } from \"./analytics\";\nimport logger from \"../utilities/logger\";\nimport getProjectConfig from \"../utilities/projectConfig/getProjectConfig\";\n\nexport const useAnalyticsCommand = (command, flags = {}, properties = {}) => {\n const [hasAttemptedTracking, setTrackingAttempt] = useState(false);\n\n logger.info({ command, flags, properties }, \"useAnalyticsCommand\");\n\n try {\n if (flags.projectPath) {\n properties = {\n ...properties,\n ...getProjectConfig(),\n };\n }\n } catch (err) {}\n\n useEffect(() => {\n const authUnsubscribe = onUserAuth(async (user) => {\n /**\n * Only identify if there's a user id (stops use of anon id).\n * Subsequent track callback will thus always be tied to a user.\n */\n if (user.uid) {\n identify(\n user.uid,\n {\n email: user.email,\n displayName: user.displayName,\n },\n () => {\n track(\n ANALYTICS_EVENT.CLI_COMMAND,\n {\n ...properties,\n flags,\n command,\n },\n () => setTrackingAttempt(true)\n );\n authUnsubscribe && authUnsubscribe();\n }\n );\n }\n });\n\n // if it takes longer than 5 secs to identify a user, just set the\n // tracking attempt to true so that other commands aren't waiting\n // forever to terminate (see whoami component)\n setTimeout(() => setTrackingAttempt(true), 5000);\n }, []); // leave empty - this should only ever execute once (on mount)\n\n return { hasAttemptedTracking };\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport checkIfReactIsUsable from \"../lib/utilities/checkIfReactIsUsable\";\nimport LoginHOC from \"../lib/components/LoginHOC\";\nimport ErrorBoundary from \"../lib/components/ErrorBoundary\";\nimport ViewBuild from \"../lib/components/ViewBuild\";\nimport ViewBuilds from \"../lib/components/ViewBuilds\";\nimport onCommand from \"../lib/utilities/onCommand\";\nimport { useAnalyticsCommand } from \"../lib/utilities/useAnalytics\";\n\nonCommand();\n\n/// View your builds\nconst BuildsCommand = ({ id, latest: shouldViewLatest }) => {\n checkIfReactIsUsable();\n useAnalyticsCommand(\"builds\", { id, shouldViewLatest });\n\n const getContents = () => {\n let commandUsed = \"todesktop builds\";\n if (id) {\n commandUsed += \" <id>\";\n return <ViewBuild commandUsed={commandUsed} id={id} />;\n } else if (shouldViewLatest) {\n commandUsed += \" --latest\";\n return <ViewBuild commandUsed={commandUsed} shouldViewLatest={true} />;\n } else {\n return <ViewBuilds commandUsed={commandUsed} />;\n }\n };\n\n return (\n <ErrorBoundary>\n <LoginHOC>{getContents()}</LoginHOC>\n </ErrorBoundary>\n );\n};\n\nBuildsCommand.propTypes = {\n /// View a specific build by ID\n id: PropTypes.string,\n /// View the latest build\n latest: PropTypes.bool,\n};\nBuildsCommand.positionalArgs = [\"id\"];\nexport default BuildsCommand;\n"]}