244 lines
8.2 KiB
JavaScript
244 lines
8.2 KiB
JavaScript
"use strict";
|
|
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name2 in all)
|
|
__defProp(target, name2, { get: all[name2], 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
mod
|
|
));
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/index.ts
|
|
var src_exports = {};
|
|
__export(src_exports, {
|
|
build: () => build,
|
|
entrypointCallback: () => entrypointCallback,
|
|
findEntrypoint: () => findEntrypoint,
|
|
name: () => name,
|
|
prepareCache: () => prepareCache,
|
|
require_: () => require_,
|
|
shouldServe: () => shouldServe,
|
|
startDevServer: () => startDevServer,
|
|
version: () => version
|
|
});
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
|
// src/build.ts
|
|
var import_build_utils = require("@vercel/build-utils");
|
|
var import_node = require("@vercel/node");
|
|
var import_module = require("module");
|
|
var import_path = require("path");
|
|
var import_fs = __toESM(require("fs"));
|
|
var frameworkName = "hono";
|
|
var REGEX = /(?:from|require|import)\s*(?:\(\s*)?["']hono["']\s*(?:\))?/g;
|
|
var validFilenames = [
|
|
"app",
|
|
"index",
|
|
"server",
|
|
"src/app",
|
|
"src/index",
|
|
"src/server"
|
|
];
|
|
var require_ = (0, import_module.createRequire)(__filename);
|
|
var validExtensions = ["js", "cjs", "mjs", "ts", "cts", "mts"];
|
|
var entrypointsForMessage = validFilenames.map((filename) => `- ${filename}.{${validExtensions.join(",")}}`).join("\n");
|
|
var build = async (args) => {
|
|
process.env.EXPERIMENTAL_NODE_TYPESCRIPT_ERRORS = "1";
|
|
const includeFiles = ["views/**/*"];
|
|
const includeFilesFromConfig = args.config.includeFiles;
|
|
if (includeFilesFromConfig) {
|
|
includeFiles.push(...includeFilesFromConfig);
|
|
}
|
|
const res = await (0, import_node.build)({
|
|
...args,
|
|
config: {
|
|
...args.config,
|
|
includeFiles
|
|
},
|
|
// this is package.json, but we'll replace it with the return value of the entrypointCallback
|
|
// after install and build scripts have had a chance to run
|
|
entrypoint: "package.json",
|
|
considerBuildCommand: true,
|
|
entrypointCallback: async () => {
|
|
return entrypointCallback(args);
|
|
}
|
|
});
|
|
let version2 = void 0;
|
|
try {
|
|
const resolved = require_.resolve(`${frameworkName}/package.json`, {
|
|
paths: [args.workPath]
|
|
});
|
|
const honoVersion = require_(resolved).version;
|
|
if (honoVersion) {
|
|
version2 = honoVersion;
|
|
}
|
|
} catch (e) {
|
|
}
|
|
res.output.framework = {
|
|
slug: frameworkName,
|
|
version: version2
|
|
};
|
|
return res;
|
|
};
|
|
var entrypointCallback = async (args) => {
|
|
const mainPackageEntrypoint = findMainPackageEntrypoint(args.files);
|
|
const entrypointGlob = `{${validFilenames.map((entrypoint) => `${entrypoint}`).join(",")}}.{${validExtensions.join(",")}}`;
|
|
const dir = args.config.projectSettings?.outputDirectory?.replace(
|
|
/^\/+|\/+$/g,
|
|
""
|
|
);
|
|
if (dir) {
|
|
const { entrypoint: entrypointFromOutputDir, entrypointsNotMatchingRegex: entrypointsNotMatchingRegex2 } = findEntrypoint(await (0, import_build_utils.glob)(entrypointGlob, (0, import_path.join)(args.workPath, dir)));
|
|
if (entrypointFromOutputDir) {
|
|
return (0, import_path.join)(dir, entrypointFromOutputDir);
|
|
}
|
|
if (entrypointsNotMatchingRegex2.length > 0) {
|
|
throw new Error(
|
|
`No entrypoint found which imports hono. Found possible ${pluralize("entrypoint", entrypointsNotMatchingRegex2.length)}: ${entrypointsNotMatchingRegex2.join(", ")}`
|
|
);
|
|
}
|
|
throw new Error(
|
|
`No entrypoint found in output directory: "${dir}". Searched for:
|
|
${entrypointsForMessage}`
|
|
);
|
|
}
|
|
const files = await (0, import_build_utils.glob)(entrypointGlob, args.workPath);
|
|
const { entrypoint: entrypointFromRoot, entrypointsNotMatchingRegex } = findEntrypoint(files);
|
|
if (entrypointFromRoot) {
|
|
return entrypointFromRoot;
|
|
}
|
|
if (mainPackageEntrypoint) {
|
|
const entrypointFromPackageJson = await (0, import_build_utils.glob)(
|
|
mainPackageEntrypoint,
|
|
args.workPath
|
|
);
|
|
if (entrypointFromPackageJson[mainPackageEntrypoint]) {
|
|
if (checkMatchesRegex(entrypointFromPackageJson[mainPackageEntrypoint])) {
|
|
return mainPackageEntrypoint;
|
|
}
|
|
}
|
|
}
|
|
if (entrypointsNotMatchingRegex.length > 0) {
|
|
throw new Error(
|
|
`No entrypoint found which imports hono. Found possible ${pluralize("entrypoint", entrypointsNotMatchingRegex.length)}: ${entrypointsNotMatchingRegex.join(", ")}`
|
|
);
|
|
}
|
|
throw new Error(
|
|
`No entrypoint found. Searched for:
|
|
${entrypointsForMessage}`
|
|
);
|
|
};
|
|
function pluralize(word, count) {
|
|
return count === 1 ? word : `${word}s`;
|
|
}
|
|
var findEntrypoint = (files) => {
|
|
const allEntrypoints = validFilenames.flatMap(
|
|
(filename) => validExtensions.map((extension) => `${filename}.${extension}`)
|
|
);
|
|
const possibleEntrypointsInFiles = allEntrypoints.filter((entrypoint2) => {
|
|
return files[entrypoint2] !== void 0;
|
|
});
|
|
const entrypointsMatchingRegex = possibleEntrypointsInFiles.filter(
|
|
(entrypoint2) => {
|
|
const file = files[entrypoint2];
|
|
return checkMatchesRegex(file);
|
|
}
|
|
);
|
|
const entrypointsNotMatchingRegex = possibleEntrypointsInFiles.filter(
|
|
(entrypoint2) => {
|
|
const file = files[entrypoint2];
|
|
return !checkMatchesRegex(file);
|
|
}
|
|
);
|
|
const entrypoint = entrypointsMatchingRegex[0];
|
|
if (entrypointsMatchingRegex.length > 1) {
|
|
console.warn(
|
|
`Multiple entrypoints found: ${entrypointsMatchingRegex.join(", ")}. Using ${entrypoint}.`
|
|
);
|
|
}
|
|
return {
|
|
entrypoint,
|
|
entrypointsNotMatchingRegex
|
|
};
|
|
};
|
|
var checkMatchesRegex = (file) => {
|
|
const content = import_fs.default.readFileSync(file.fsPath, "utf-8");
|
|
const matchesContent = content.match(REGEX);
|
|
return matchesContent !== null;
|
|
};
|
|
var findMainPackageEntrypoint = (files) => {
|
|
const packageJson = files["package.json"];
|
|
if (packageJson) {
|
|
if (packageJson.type === "FileFsRef") {
|
|
const packageJsonContent = import_fs.default.readFileSync(packageJson.fsPath, "utf-8");
|
|
let packageJsonJson;
|
|
try {
|
|
packageJsonJson = JSON.parse(packageJsonContent);
|
|
} catch (_e) {
|
|
packageJsonJson = {};
|
|
}
|
|
if ("main" in packageJsonJson && typeof packageJsonJson.main === "string") {
|
|
return packageJsonJson.main;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
// 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 import_node2 = require("@vercel/node");
|
|
var version = 3;
|
|
var name = "hono";
|
|
var shouldServe = async (opts) => {
|
|
const requestPath = opts.requestPath.replace(/\/$/, "");
|
|
if (requestPath.startsWith("api") && opts.hasMatched) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
var startDevServer = async (opts) => {
|
|
const entrypoint = await entrypointCallback(opts);
|
|
process.env.EXPERIMENTAL_NODE_TYPESCRIPT_ERRORS = "1";
|
|
return (0, import_node2.startDevServer)({
|
|
...opts,
|
|
entrypoint,
|
|
publicDir: "public"
|
|
});
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
build,
|
|
entrypointCallback,
|
|
findEntrypoint,
|
|
name,
|
|
prepareCache,
|
|
require_,
|
|
shouldServe,
|
|
startDevServer,
|
|
version
|
|
});
|