@probelabs/visor
Version:
AI-powered code review tool for GitHub Pull Requests - CLI and GitHub Action
321 lines (305 loc) • 11.5 kB
JavaScript
;
exports.id = 663;
exports.ids = [663,80];
exports.modules = {
/***/ 76492:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
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 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 __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);
var token_io_exports = {};
__export(token_io_exports, {
findRootDir: () => findRootDir,
getUserDataDir: () => getUserDataDir
});
module.exports = __toCommonJS(token_io_exports);
var import_path = __toESM(__webpack_require__(16928));
var import_fs = __toESM(__webpack_require__(79896));
var import_os = __toESM(__webpack_require__(70857));
var import_token_error = __webpack_require__(19988);
function findRootDir() {
try {
let dir = process.cwd();
while (dir !== import_path.default.dirname(dir)) {
const pkgPath = import_path.default.join(dir, ".vercel");
if (import_fs.default.existsSync(pkgPath)) {
return dir;
}
dir = import_path.default.dirname(dir);
}
} catch (e) {
throw new import_token_error.VercelOidcTokenError(
"Token refresh only supported in node server environments"
);
}
throw new import_token_error.VercelOidcTokenError("Unable to find root directory");
}
function getUserDataDir() {
if (process.env.XDG_DATA_HOME) {
return process.env.XDG_DATA_HOME;
}
switch (import_os.default.platform()) {
case "darwin":
return import_path.default.join(import_os.default.homedir(), "Library/Application Support");
case "linux":
return import_path.default.join(import_os.default.homedir(), ".local/share");
case "win32":
if (process.env.LOCALAPPDATA) {
return process.env.LOCALAPPDATA;
}
return null;
default:
return null;
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
/***/ 61080:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
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 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 __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);
var token_util_exports = {};
__export(token_util_exports, {
assertVercelOidcTokenResponse: () => assertVercelOidcTokenResponse,
findProjectInfo: () => findProjectInfo,
getTokenPayload: () => getTokenPayload,
getVercelCliToken: () => getVercelCliToken,
getVercelDataDir: () => getVercelDataDir,
getVercelOidcToken: () => getVercelOidcToken,
isExpired: () => isExpired,
loadToken: () => loadToken,
saveToken: () => saveToken
});
module.exports = __toCommonJS(token_util_exports);
var path = __toESM(__webpack_require__(16928));
var fs = __toESM(__webpack_require__(79896));
var import_token_error = __webpack_require__(19988);
var import_token_io = __webpack_require__(76492);
function getVercelDataDir() {
const vercelFolder = "com.vercel.cli";
const dataDir = (0, import_token_io.getUserDataDir)();
if (!dataDir) {
return null;
}
return path.join(dataDir, vercelFolder);
}
function getVercelCliToken() {
const dataDir = getVercelDataDir();
if (!dataDir) {
return null;
}
const tokenPath = path.join(dataDir, "auth.json");
if (!fs.existsSync(tokenPath)) {
return null;
}
const token = fs.readFileSync(tokenPath, "utf8");
if (!token) {
return null;
}
return JSON.parse(token).token;
}
async function getVercelOidcToken(authToken, projectId, teamId) {
try {
const url = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : ""}`;
const res = await fetch(url, {
method: "POST",
headers: {
Authorization: `Bearer ${authToken}`
}
});
if (!res.ok) {
throw new import_token_error.VercelOidcTokenError(
`Failed to refresh OIDC token: ${res.statusText}`
);
}
const tokenRes = await res.json();
assertVercelOidcTokenResponse(tokenRes);
return tokenRes;
} catch (e) {
throw new import_token_error.VercelOidcTokenError(`Failed to refresh OIDC token`, e);
}
}
function assertVercelOidcTokenResponse(res) {
if (!res || typeof res !== "object") {
throw new TypeError("Expected an object");
}
if (!("token" in res) || typeof res.token !== "string") {
throw new TypeError("Expected a string-valued token property");
}
}
function findProjectInfo() {
const dir = (0, import_token_io.findRootDir)();
if (!dir) {
throw new import_token_error.VercelOidcTokenError("Unable to find root directory");
}
try {
const prjPath = path.join(dir, ".vercel", "project.json");
if (!fs.existsSync(prjPath)) {
throw new import_token_error.VercelOidcTokenError("project.json not found");
}
const prj = JSON.parse(fs.readFileSync(prjPath, "utf8"));
if (typeof prj.projectId !== "string" && typeof prj.orgId !== "string") {
throw new TypeError("Expected a string-valued projectId property");
}
return { projectId: prj.projectId, teamId: prj.orgId };
} catch (e) {
throw new import_token_error.VercelOidcTokenError(`Unable to find project ID`, e);
}
}
function saveToken(token, projectId) {
try {
const dir = (0, import_token_io.getUserDataDir)();
if (!dir) {
throw new import_token_error.VercelOidcTokenError("Unable to find user data directory");
}
const tokenPath = path.join(dir, "com.vercel.token", `${projectId}.json`);
const tokenJson = JSON.stringify(token);
fs.mkdirSync(path.dirname(tokenPath), { mode: 432, recursive: true });
fs.writeFileSync(tokenPath, tokenJson);
fs.chmodSync(tokenPath, 432);
return;
} catch (e) {
throw new import_token_error.VercelOidcTokenError(`Failed to save token`, e);
}
}
function loadToken(projectId) {
try {
const dir = (0, import_token_io.getUserDataDir)();
if (!dir) {
return null;
}
const tokenPath = path.join(dir, "com.vercel.token", `${projectId}.json`);
if (!fs.existsSync(tokenPath)) {
return null;
}
const token = JSON.parse(fs.readFileSync(tokenPath, "utf8"));
assertVercelOidcTokenResponse(token);
return token;
} catch (e) {
throw new import_token_error.VercelOidcTokenError(`Failed to load token`, e);
}
}
function getTokenPayload(token) {
const tokenParts = token.split(".");
if (tokenParts.length !== 3) {
throw new import_token_error.VercelOidcTokenError("Invalid token");
}
const base64 = tokenParts[1].replace(/-/g, "+").replace(/_/g, "/");
const padded = base64.padEnd(
base64.length + (4 - base64.length % 4) % 4,
"="
);
return JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
}
const TIME_15_MINUTES_IN_MS = 15 * 60 * 1e3;
function isExpired(token) {
return token.exp * 1e3 < Date.now() + TIME_15_MINUTES_IN_MS;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
/***/ 36663:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
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);
var token_exports = {};
__export(token_exports, {
refreshToken: () => refreshToken
});
module.exports = __toCommonJS(token_exports);
var import_token_error = __webpack_require__(19988);
var import_token_util = __webpack_require__(61080);
async function refreshToken() {
const { projectId, teamId } = (0, import_token_util.findProjectInfo)();
let maybeToken = (0, import_token_util.loadToken)(projectId);
if (!maybeToken || (0, import_token_util.isExpired)((0, import_token_util.getTokenPayload)(maybeToken.token))) {
const authToken = (0, import_token_util.getVercelCliToken)();
if (!authToken) {
throw new import_token_error.VercelOidcTokenError(
"Failed to refresh OIDC token: login to vercel cli"
);
}
if (!projectId) {
throw new import_token_error.VercelOidcTokenError(
"Failed to refresh OIDC token: project id not found"
);
}
maybeToken = await (0, import_token_util.getVercelOidcToken)(authToken, projectId, teamId);
if (!maybeToken) {
throw new import_token_error.VercelOidcTokenError("Failed to refresh OIDC token");
}
(0, import_token_util.saveToken)(maybeToken, projectId);
}
process.env.VERCEL_OIDC_TOKEN = maybeToken.token;
return;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ })
};
;