@shopify/cli-kit
Version:
A set of utilities, interfaces, and models that are common across all the platform features
38 lines • 1.39 kB
JavaScript
import fs from 'fs';
import * as os from 'node:os';
import { assertConnectable } from './network/index.js';
import { assertCompatibleEnvironment } from './env.js';
export function createServer(projectName) {
return {
host: (options = {}) => host(projectName, options),
url: (options = {}) => url(projectName, options),
};
}
function host(projectName, options = {}) {
assertCompatibleEnvironment();
(assertRunningOverride || assertRunning2016)(projectName);
const prefix = options.nonstandardHostPrefix || projectName;
return `${prefix}.myshopify.io`;
}
function url(projectName, options = {}) {
return `https://${host(projectName, options)}`;
}
function assertRunning2016(projectName) {
const [addr, port] = getAddrPort(projectName);
assertConnectable({ projectName, addr, port });
}
function getAddrPort(name) {
try {
const portContent = fs.readFileSync(`${os.homedir()}/.local/run/services/${name}/server/port`, 'utf-8');
return ['localhost', parseInt(portContent, 10)];
}
catch (error) {
throw new Error(`DevServer for '${name}' is not running: \`dev up ${name}\` to start it.`);
}
}
// Allow overrides for more concise test setup. Meh.
let assertRunningOverride;
export function setAssertRunning(override) {
assertRunningOverride = override;
}
//# sourceMappingURL=dev-server-2016.js.map