a71f801c3f
- Prisma schema: User, Session, RepoConfig, Preview, Job, WebhookToken, NoConfigComment, AdminSettings - Backend: auth (login/logout/me/first-user setup), webhook handler with HMAC verification, EC2 service, SSH service, deploy pipeline, job queue worker, cron workers - Frontend: Login with first-user detection, Dashboard, PreviewDetail with live log streaming, Settings, Repos config, Admin panel, SetupWizard, Privacy page - Docker Compose and Dockerfile for self-hosted deployment - Uses bcryptjs for Node 24 compatibility Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
const { createRequire } = require("node:module");
|
|
const { isAbsolute, join, resolve } = require("node:path");
|
|
const { fileURLToPath } = require("node:url");
|
|
/**
|
|
* Resolve an absolute path from {@link root}, but only
|
|
* if {@link input} isn't already absolute.
|
|
*
|
|
* @param input The path to resolve.
|
|
* @param root The base path; default = process.cwd()
|
|
* @returns The resolved absolute path.
|
|
*/
|
|
function absolute(input, root) {
|
|
return isAbsolute(input) ? input : resolve(root || ".", input);
|
|
}
|
|
function from(root, ident, silent) {
|
|
try {
|
|
// NOTE: dirs need a trailing "/" OR filename. With "/" route,
|
|
// Node adds "noop.js" as main file, so just do "noop.js" anyway.
|
|
let r = root instanceof URL || root.startsWith("file://") ? join(fileURLToPath(root), "noop.js") : join(absolute(root), "noop.js");
|
|
return createRequire(r).resolve(ident);
|
|
} catch (err) {
|
|
if (!silent) throw err;
|
|
}
|
|
}
|
|
function cwd(ident, silent) {
|
|
return from(resolve(), ident, silent);
|
|
}
|
|
|
|
exports.absolute = absolute;
|
|
exports.from = from;
|
|
exports.cwd = cwd; |