187 lines
5.9 KiB
JavaScript
187 lines
5.9 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/index.ts
|
|
var src_exports = {};
|
|
__export(src_exports, {
|
|
build: () => build,
|
|
prepareCache: () => prepareCache,
|
|
version: () => version
|
|
});
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
|
// src/build.ts
|
|
var import_fs = require("fs");
|
|
var import_path = require("path");
|
|
var import_build_utils = require("@vercel/build-utils");
|
|
var import_static_config = require("@vercel/static-config");
|
|
var import_ts_morph = require("ts-morph");
|
|
var build = async ({
|
|
entrypoint,
|
|
files,
|
|
workPath,
|
|
config,
|
|
meta = {}
|
|
}) => {
|
|
const { installCommand, buildCommand } = config;
|
|
await (0, import_build_utils.download)(files, workPath, meta);
|
|
const prefixedEnvs = (0, import_build_utils.getPrefixedEnvVars)({
|
|
envPrefix: "PUBLIC_",
|
|
envs: process.env
|
|
});
|
|
for (const [key, value] of Object.entries(prefixedEnvs)) {
|
|
process.env[key] = value;
|
|
}
|
|
const mountpoint = (0, import_path.dirname)(entrypoint);
|
|
const entrypointDir = (0, import_path.join)(workPath, mountpoint);
|
|
const {
|
|
cliType,
|
|
lockfileVersion,
|
|
packageJsonPackageManager,
|
|
turboSupportsCorepackHome
|
|
} = await (0, import_build_utils.scanParentDirs)(entrypointDir, true);
|
|
const spawnEnv = (0, import_build_utils.getEnvForPackageManager)({
|
|
cliType,
|
|
lockfileVersion,
|
|
packageJsonPackageManager,
|
|
env: process.env,
|
|
turboSupportsCorepackHome,
|
|
projectCreatedAt: config.projectSettings?.createdAt
|
|
});
|
|
if (typeof installCommand === "string") {
|
|
if (installCommand.trim()) {
|
|
console.log(`Running "install" command: \`${installCommand}\`...`);
|
|
await (0, import_build_utils.execCommand)(installCommand, {
|
|
env: spawnEnv,
|
|
cwd: entrypointDir
|
|
});
|
|
} else {
|
|
console.log(`Skipping "install" command...`);
|
|
}
|
|
} else {
|
|
await (0, import_build_utils.runNpmInstall)(
|
|
entrypointDir,
|
|
[],
|
|
{ env: spawnEnv },
|
|
meta,
|
|
config.projectSettings?.createdAt
|
|
);
|
|
}
|
|
const edgeEntryDir = (0, import_path.join)(workPath, ".vercel/cache/hydrogen");
|
|
const edgeEntryRelative = (0, import_path.relative)(edgeEntryDir, workPath);
|
|
const edgeEntryDest = (0, import_path.join)(edgeEntryDir, "edge-entry.js");
|
|
let edgeEntryContents = await import_fs.promises.readFile(
|
|
(0, import_path.join)(__dirname, "..", "edge-entry.js"),
|
|
"utf8"
|
|
);
|
|
edgeEntryContents = edgeEntryContents.replace(
|
|
/__RELATIVE__/g,
|
|
edgeEntryRelative
|
|
);
|
|
await import_fs.promises.mkdir(edgeEntryDir, { recursive: true });
|
|
await import_fs.promises.writeFile(edgeEntryDest, edgeEntryContents);
|
|
spawnEnv.SHOPIFY_FLAG_BUILD_TARGET = "worker";
|
|
spawnEnv.SHOPIFY_FLAG_BUILD_SSR_ENTRY = edgeEntryDest;
|
|
if (buildCommand) {
|
|
(0, import_build_utils.debug)(`Executing build command "${buildCommand}"`);
|
|
await (0, import_build_utils.execCommand)(buildCommand, {
|
|
env: spawnEnv,
|
|
cwd: entrypointDir
|
|
});
|
|
} else {
|
|
const pkg = await (0, import_build_utils.readConfigFile)(
|
|
(0, import_path.join)(entrypointDir, "package.json")
|
|
);
|
|
if (hasScript("vercel-build", pkg)) {
|
|
(0, import_build_utils.debug)(`Executing "yarn vercel-build"`);
|
|
await (0, import_build_utils.runPackageJsonScript)(
|
|
entrypointDir,
|
|
"vercel-build",
|
|
{ env: spawnEnv },
|
|
config.projectSettings?.createdAt
|
|
);
|
|
} else if (hasScript("build", pkg)) {
|
|
(0, import_build_utils.debug)(`Executing "yarn build"`);
|
|
await (0, import_build_utils.runPackageJsonScript)(
|
|
entrypointDir,
|
|
"build",
|
|
{ env: spawnEnv },
|
|
config.projectSettings?.createdAt
|
|
);
|
|
} else {
|
|
await (0, import_build_utils.execCommand)("shopify hydrogen build", {
|
|
env: spawnEnv,
|
|
cwd: entrypointDir
|
|
});
|
|
}
|
|
}
|
|
const [staticFiles, edgeFunctionFiles] = await Promise.all([
|
|
(0, import_build_utils.glob)("**", (0, import_path.join)(entrypointDir, "dist/client")),
|
|
(0, import_build_utils.glob)("**", (0, import_path.join)(entrypointDir, "dist/worker"))
|
|
]);
|
|
const edgeFunction = new import_build_utils.EdgeFunction({
|
|
deploymentTarget: "v8-worker",
|
|
entrypoint: "index.js",
|
|
files: edgeFunctionFiles,
|
|
regions: (() => {
|
|
try {
|
|
const project = new import_ts_morph.Project();
|
|
const config2 = (0, import_static_config.getConfig)(project, edgeFunctionFiles["index.js"].fsPath);
|
|
return config2?.regions;
|
|
} catch {
|
|
return void 0;
|
|
}
|
|
})()
|
|
});
|
|
delete staticFiles["index.html"];
|
|
return {
|
|
routes: [
|
|
{
|
|
handle: "filesystem"
|
|
},
|
|
{
|
|
src: "/(.*)",
|
|
dest: "/hydrogen"
|
|
}
|
|
],
|
|
output: {
|
|
hydrogen: edgeFunction,
|
|
...staticFiles
|
|
}
|
|
};
|
|
};
|
|
function hasScript(scriptName, pkg) {
|
|
const scripts = pkg?.scripts || {};
|
|
return typeof scripts[scriptName] === "string";
|
|
}
|
|
|
|
// src/prepare-cache.ts
|
|
var import_build_utils2 = require("@vercel/build-utils");
|
|
var prepareCache = ({ repoRootPath, workPath }) => {
|
|
return (0, import_build_utils2.glob)(import_build_utils2.defaultCachePathGlob, repoRootPath || workPath);
|
|
};
|
|
|
|
// src/index.ts
|
|
var version = 2;
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
build,
|
|
prepareCache,
|
|
version
|
|
});
|