319
node_modules/vitest/dist/chunks/install-pkg.LE8oaA1t.js
generated
vendored
Normal file
319
node_modules/vitest/dist/chunks/install-pkg.LE8oaA1t.js
generated
vendored
Normal file
@@ -0,0 +1,319 @@
|
||||
import require$$0, { promises } from 'fs';
|
||||
import p from 'path';
|
||||
import process from 'process';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { execa } from 'execa';
|
||||
|
||||
var __defProp = Object.defineProperty;
|
||||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
||||
var __publicField = (obj, key, value) => {
|
||||
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||||
return value;
|
||||
};
|
||||
var __accessCheck = (obj, member, msg) => {
|
||||
if (!member.has(obj))
|
||||
throw TypeError("Cannot " + msg);
|
||||
};
|
||||
var __privateGet = (obj, member, getter) => {
|
||||
__accessCheck(obj, member, "read from private field");
|
||||
return getter ? getter.call(obj) : member.get(obj);
|
||||
};
|
||||
var __privateAdd = (obj, member, value) => {
|
||||
if (member.has(obj))
|
||||
throw TypeError("Cannot add the same private member more than once");
|
||||
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
||||
};
|
||||
var __privateSet = (obj, member, value, setter) => {
|
||||
__accessCheck(obj, member, "write to private field");
|
||||
setter ? setter.call(obj, value) : member.set(obj, value);
|
||||
return value;
|
||||
};
|
||||
var __privateWrapper = (obj, member, setter, getter) => ({
|
||||
set _(value) {
|
||||
__privateSet(obj, member, value, setter);
|
||||
},
|
||||
get _() {
|
||||
return __privateGet(obj, member, getter);
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/.pnpm/yocto-queue@1.0.0/node_modules/yocto-queue/index.js
|
||||
var Node = class {
|
||||
constructor(value) {
|
||||
__publicField(this, "value");
|
||||
__publicField(this, "next");
|
||||
this.value = value;
|
||||
}
|
||||
};
|
||||
var _head, _tail, _size;
|
||||
var Queue = class {
|
||||
constructor() {
|
||||
__privateAdd(this, _head, void 0);
|
||||
__privateAdd(this, _tail, void 0);
|
||||
__privateAdd(this, _size, void 0);
|
||||
this.clear();
|
||||
}
|
||||
enqueue(value) {
|
||||
const node = new Node(value);
|
||||
if (__privateGet(this, _head)) {
|
||||
__privateGet(this, _tail).next = node;
|
||||
__privateSet(this, _tail, node);
|
||||
} else {
|
||||
__privateSet(this, _head, node);
|
||||
__privateSet(this, _tail, node);
|
||||
}
|
||||
__privateWrapper(this, _size)._++;
|
||||
}
|
||||
dequeue() {
|
||||
const current = __privateGet(this, _head);
|
||||
if (!current) {
|
||||
return;
|
||||
}
|
||||
__privateSet(this, _head, __privateGet(this, _head).next);
|
||||
__privateWrapper(this, _size)._--;
|
||||
return current.value;
|
||||
}
|
||||
clear() {
|
||||
__privateSet(this, _head, void 0);
|
||||
__privateSet(this, _tail, void 0);
|
||||
__privateSet(this, _size, 0);
|
||||
}
|
||||
get size() {
|
||||
return __privateGet(this, _size);
|
||||
}
|
||||
*[Symbol.iterator]() {
|
||||
let current = __privateGet(this, _head);
|
||||
while (current) {
|
||||
yield current.value;
|
||||
current = current.next;
|
||||
}
|
||||
}
|
||||
};
|
||||
_head = new WeakMap();
|
||||
_tail = new WeakMap();
|
||||
_size = new WeakMap();
|
||||
|
||||
// node_modules/.pnpm/p-limit@4.0.0/node_modules/p-limit/index.js
|
||||
function pLimit(concurrency) {
|
||||
if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {
|
||||
throw new TypeError("Expected `concurrency` to be a number from 1 and up");
|
||||
}
|
||||
const queue = new Queue();
|
||||
let activeCount = 0;
|
||||
const next = () => {
|
||||
activeCount--;
|
||||
if (queue.size > 0) {
|
||||
queue.dequeue()();
|
||||
}
|
||||
};
|
||||
const run = async (fn, resolve, args) => {
|
||||
activeCount++;
|
||||
const result = (async () => fn(...args))();
|
||||
resolve(result);
|
||||
try {
|
||||
await result;
|
||||
} catch {
|
||||
}
|
||||
next();
|
||||
};
|
||||
const enqueue = (fn, resolve, args) => {
|
||||
queue.enqueue(run.bind(void 0, fn, resolve, args));
|
||||
(async () => {
|
||||
await Promise.resolve();
|
||||
if (activeCount < concurrency && queue.size > 0) {
|
||||
queue.dequeue()();
|
||||
}
|
||||
})();
|
||||
};
|
||||
const generator = (fn, ...args) => new Promise((resolve) => {
|
||||
enqueue(fn, resolve, args);
|
||||
});
|
||||
Object.defineProperties(generator, {
|
||||
activeCount: {
|
||||
get: () => activeCount
|
||||
},
|
||||
pendingCount: {
|
||||
get: () => queue.size
|
||||
},
|
||||
clearQueue: {
|
||||
value: () => {
|
||||
queue.clear();
|
||||
}
|
||||
}
|
||||
});
|
||||
return generator;
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/p-locate@6.0.0/node_modules/p-locate/index.js
|
||||
var EndError = class extends Error {
|
||||
constructor(value) {
|
||||
super();
|
||||
this.value = value;
|
||||
}
|
||||
};
|
||||
var testElement = async (element, tester) => tester(await element);
|
||||
var finder = async (element) => {
|
||||
const values = await Promise.all(element);
|
||||
if (values[1] === true) {
|
||||
throw new EndError(values[0]);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
async function pLocate(iterable, tester, {
|
||||
concurrency = Number.POSITIVE_INFINITY,
|
||||
preserveOrder = true
|
||||
} = {}) {
|
||||
const limit = pLimit(concurrency);
|
||||
const items = [...iterable].map((element) => [element, limit(testElement, element, tester)]);
|
||||
const checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);
|
||||
try {
|
||||
await Promise.all(items.map((element) => checkLimit(finder, element)));
|
||||
} catch (error) {
|
||||
if (error instanceof EndError) {
|
||||
return error.value;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/locate-path@7.2.0/node_modules/locate-path/index.js
|
||||
var typeMappings = {
|
||||
directory: "isDirectory",
|
||||
file: "isFile"
|
||||
};
|
||||
function checkType(type) {
|
||||
if (Object.hasOwnProperty.call(typeMappings, type)) {
|
||||
return;
|
||||
}
|
||||
throw new Error(`Invalid type specified: ${type}`);
|
||||
}
|
||||
var matchType = (type, stat) => stat[typeMappings[type]]();
|
||||
var toPath = (urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
|
||||
async function locatePath(paths, {
|
||||
cwd = process.cwd(),
|
||||
type = "file",
|
||||
allowSymlinks = true,
|
||||
concurrency,
|
||||
preserveOrder
|
||||
} = {}) {
|
||||
checkType(type);
|
||||
cwd = toPath(cwd);
|
||||
const statFunction = allowSymlinks ? promises.stat : promises.lstat;
|
||||
return pLocate(paths, async (path_) => {
|
||||
try {
|
||||
const stat = await statFunction(p.resolve(cwd, path_));
|
||||
return matchType(type, stat);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}, { concurrency, preserveOrder });
|
||||
}
|
||||
function toPath2(urlOrPath) {
|
||||
return urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/find-up@7.0.0/node_modules/find-up/index.js
|
||||
var findUpStop = Symbol("findUpStop");
|
||||
async function findUpMultiple(name, options = {}) {
|
||||
let directory = p.resolve(toPath2(options.cwd) ?? "");
|
||||
const { root } = p.parse(directory);
|
||||
const stopAt = p.resolve(directory, toPath2(options.stopAt ?? root));
|
||||
const limit = options.limit ?? Number.POSITIVE_INFINITY;
|
||||
const paths = [name].flat();
|
||||
const runMatcher = async (locateOptions) => {
|
||||
if (typeof name !== "function") {
|
||||
return locatePath(paths, locateOptions);
|
||||
}
|
||||
const foundPath = await name(locateOptions.cwd);
|
||||
if (typeof foundPath === "string") {
|
||||
return locatePath([foundPath], locateOptions);
|
||||
}
|
||||
return foundPath;
|
||||
};
|
||||
const matches = [];
|
||||
while (true) {
|
||||
const foundPath = await runMatcher({ ...options, cwd: directory });
|
||||
if (foundPath === findUpStop) {
|
||||
break;
|
||||
}
|
||||
if (foundPath) {
|
||||
matches.push(p.resolve(directory, foundPath));
|
||||
}
|
||||
if (directory === stopAt || matches.length >= limit) {
|
||||
break;
|
||||
}
|
||||
directory = p.dirname(directory);
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
async function findUp(name, options = {}) {
|
||||
const matches = await findUpMultiple(name, { ...options, limit: 1 });
|
||||
return matches[0];
|
||||
}
|
||||
|
||||
// src/detect.ts
|
||||
var AGENTS = ["pnpm", "yarn", "npm", "pnpm@6", "yarn@berry", "bun"];
|
||||
var LOCKS = {
|
||||
"bun.lockb": "bun",
|
||||
"pnpm-lock.yaml": "pnpm",
|
||||
"yarn.lock": "yarn",
|
||||
"package-lock.json": "npm",
|
||||
"npm-shrinkwrap.json": "npm"
|
||||
};
|
||||
async function detectPackageManager(cwd = process.cwd()) {
|
||||
let agent = null;
|
||||
const lockPath = await findUp(Object.keys(LOCKS), { cwd });
|
||||
let packageJsonPath;
|
||||
if (lockPath)
|
||||
packageJsonPath = p.resolve(lockPath, "../package.json");
|
||||
else
|
||||
packageJsonPath = await findUp("package.json", { cwd });
|
||||
if (packageJsonPath && require$$0.existsSync(packageJsonPath)) {
|
||||
try {
|
||||
const pkg = JSON.parse(require$$0.readFileSync(packageJsonPath, "utf8"));
|
||||
if (typeof pkg.packageManager === "string") {
|
||||
const [name, version] = pkg.packageManager.split("@");
|
||||
if (name === "yarn" && Number.parseInt(version) > 1)
|
||||
agent = "yarn@berry";
|
||||
else if (name === "pnpm" && Number.parseInt(version) < 7)
|
||||
agent = "pnpm@6";
|
||||
else if (AGENTS.includes(name))
|
||||
agent = name;
|
||||
else
|
||||
console.warn("[ni] Unknown packageManager:", pkg.packageManager);
|
||||
}
|
||||
} catch {
|
||||
}
|
||||
}
|
||||
if (!agent && lockPath)
|
||||
agent = LOCKS[p.basename(lockPath)];
|
||||
return agent;
|
||||
}
|
||||
async function installPackage(names, options = {}) {
|
||||
const detectedAgent = options.packageManager || await detectPackageManager(options.cwd) || "npm";
|
||||
const [agent] = detectedAgent.split("@");
|
||||
if (!Array.isArray(names))
|
||||
names = [names];
|
||||
const args = options.additionalArgs || [];
|
||||
if (options.preferOffline) {
|
||||
if (detectedAgent === "yarn@berry")
|
||||
args.unshift("--cached");
|
||||
else
|
||||
args.unshift("--prefer-offline");
|
||||
}
|
||||
return execa(
|
||||
agent,
|
||||
[
|
||||
agent === "yarn" ? "add" : "install",
|
||||
options.dev ? "-D" : "",
|
||||
...args,
|
||||
...names
|
||||
].filter(Boolean),
|
||||
{
|
||||
stdio: options.silent ? "ignore" : "inherit",
|
||||
cwd: options.cwd
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export { detectPackageManager, installPackage };
|
||||
Reference in New Issue
Block a user