UNPKG

xdl

Version:
1 lines 9.34 kB
{"version":3,"file":"resolveNgrok.js","names":["PackageManager","data","_interopRequireWildcard","require","_chalk","_interopRequireDefault","_getenv","_requireg","_resolveFrom","_semver","_internal","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","NGROK_REQUIRED_VERSION","EXPO_DEBUG","getenv","boolish","_ngrokInstance","resolveNgrokAsync","projectRoot","shouldPrompt","autoInstall","ngrok","findNgrokBinAsync","packageName","delayAsync","answer","Prompts","confirmAsync","message","initial","Logger","global","info","chalk","bold","packageManager","createForProject","silent","addGlobalAsync","e","Error","resolvePackageFromProjectAsync","ngrokPackagePath","resolveFrom","pkg","semver","satisfies","version","ngrokPath","debug","resolveGlobalPackageAsync","requireg","resolve","localInstance","globalInstance"],"sources":["../../src/start/resolveNgrok.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\nimport getenv from 'getenv';\n// @ts-ignore\nimport requireg from 'requireg';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { delayAsync, Logger, Prompts } from '../internal';\n\nconst NGROK_REQUIRED_VERSION = '^4.1.0';\nconst EXPO_DEBUG = getenv.boolish('EXPO_DEBUG', false);\nlet _ngrokInstance: any | null = null;\n\nexport interface NgrokOptions {\n authtoken?: string;\n port?: string | number | null;\n host?: string;\n httpauth?: string;\n region?: string;\n configPath?: string;\n\n proto?: 'http' | 'tcp' | 'tls';\n addr?: string;\n inspect?: boolean;\n auth?: string;\n host_header?: string;\n bind_tls?: true | false | 'both';\n subdomain?: string;\n hostname?: string;\n crt?: string;\n key?: string;\n client_cas?: string;\n remote_addr?: string;\n}\n\nexport async function resolveNgrokAsync(\n projectRoot: string,\n {\n shouldPrompt = true,\n autoInstall = false,\n }: { shouldPrompt?: boolean; autoInstall?: boolean } = {}\n): Promise<any> {\n const ngrok = await findNgrokBinAsync(projectRoot);\n\n if (!ngrok) {\n const packageName = `@expo/ngrok@${NGROK_REQUIRED_VERSION}`;\n if (shouldPrompt) {\n if (!autoInstall) {\n // Delay the prompt so it doesn't conflict with other dev tool logs\n await delayAsync(100);\n }\n const answer =\n autoInstall ||\n (await Prompts.confirmAsync({\n message: `The package ${packageName} is required to use tunnels, would you like to install it globally?`,\n initial: true,\n }));\n if (answer) {\n Logger.global.info(`Installing ${packageName} for ${chalk.bold`tunnel`} support...`);\n\n const packageManager = PackageManager.createForProject(projectRoot, {\n silent: !EXPO_DEBUG,\n });\n\n try {\n await packageManager.addGlobalAsync(packageName);\n Logger.global.info(`Successfully installed ${packageName}`);\n } catch (e: any) {\n e.message = `Failed to install ${packageName} globally: ${e.message}`;\n throw e;\n }\n return await resolveNgrokAsync(projectRoot, { shouldPrompt: false });\n }\n }\n throw new Error(\n `Please install ${packageName} and try again, or try using another hosting method like lan or localhost`\n );\n }\n return ngrok;\n}\n\n// Resolve a copy that's installed in the project.\nasync function resolvePackageFromProjectAsync(projectRoot: string) {\n try {\n const ngrokPackagePath = resolveFrom(projectRoot, '@expo/ngrok/package.json');\n const pkg = require(ngrokPackagePath);\n if (pkg && semver.satisfies(pkg.version, NGROK_REQUIRED_VERSION)) {\n const ngrokPath = resolveFrom(projectRoot, '@expo/ngrok');\n Logger.global.debug(`Resolving @expo/ngrok from project: \"${ngrokPath}\"`);\n return require(ngrokPath);\n }\n } catch {}\n return null;\n}\n\n// Resolve a copy that's installed globally.\nasync function resolveGlobalPackageAsync() {\n try {\n // use true to disable the use of local packages.\n const pkg = requireg('@expo/ngrok/package.json', true);\n if (semver.satisfies(pkg.version, NGROK_REQUIRED_VERSION)) {\n Logger.global.debug(\n `Resolving global @expo/ngrok from: \"${requireg.resolve('@expo/ngrok')}\"`\n );\n return requireg('@expo/ngrok', true);\n }\n } catch {}\n\n return null;\n}\n\nasync function findNgrokBinAsync(projectRoot: string): Promise<any> {\n if (_ngrokInstance) {\n return _ngrokInstance;\n }\n\n const localInstance = await resolvePackageFromProjectAsync(projectRoot);\n if (localInstance) {\n _ngrokInstance = localInstance;\n return _ngrokInstance;\n }\n\n const globalInstance = await resolveGlobalPackageAsync();\n if (globalInstance) {\n _ngrokInstance = globalInstance;\n return _ngrokInstance;\n }\n\n return null;\n}\n"],"mappings":"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"}