@shopify/cli-kit
Version:
A set of utilities, interfaces, and models that are common across all the platform features
59 lines • 1.83 kB
JavaScript
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