UNPKG

@shopify/cli-kit

Version:

A set of utilities, interfaces, and models that are common across all the platform features

59 lines 1.83 kB
import fs from 'node:fs'; import { createServer as createServer2024 } from './dev-server-2024.js'; import { createServer as createServer2016 } from './dev-server-2016.js'; import { createServer as createServerSpin } from './dev-server-spin.js'; export { isDevServerEnvironment } from './env.js'; export class DevServer { constructor(projectName) { this.projectName = projectName; if (projectName === 'shopify') { throw new Error("Use `import {DevServerCore}` for the 'shopify' project"); } this.serverImpl = inferProjectServer(projectName); } host(options) { return this.serverImpl.host(options); } url(options) { return this.serverImpl.url(options); } } export class DevServerCore { constructor() { this.serverImpl = inferProjectServer('shopify'); } host(prefix) { return this.serverImpl.host({ nonstandardHostPrefix: prefix }); } url(prefix) { return this.serverImpl.url({ nonstandardHostPrefix: prefix }); } } const INFERENCE_MODE_SENTINEL = '/opt/dev/misc/dev-server-inference-mode'; function inferProjectServer(projectName) { if (process.env.SPIN === '1') { return createServerSpin(projectName); } else if (inferenceModeAndProjectIsEdition2016(projectName)) { return createServer2016(projectName); } else { return createServer2024(projectName); } } function inferenceModeAndProjectIsEdition2016(projectName) { try { fs.accessSync(INFERENCE_MODE_SENTINEL); try { fs.accessSync(`/opt/nginx/etc/manifest/${projectName}/current/edition-2024`); return false; } catch { return true; } } catch { return false; } } //# sourceMappingURL=dev-server.js.map