Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
4.9 KiB
203 lines
4.9 KiB
2 years ago
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.NodeResolverBase = void 0;
|
||
|
|
||
|
function _module() {
|
||
|
const data = _interopRequireDefault(require("module"));
|
||
|
|
||
|
_module = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _path() {
|
||
|
const data = _interopRequireDefault(require("path"));
|
||
|
|
||
|
_path = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _assert() {
|
||
|
const data = _interopRequireDefault(require("assert"));
|
||
|
|
||
|
_assert = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _utils() {
|
||
|
const data = require("@parcel/utils");
|
||
|
|
||
|
_utils = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
// $FlowFixMe
|
||
|
const builtins = {
|
||
|
pnpapi: true
|
||
|
};
|
||
|
|
||
|
for (let builtin of _module().default.builtinModules) {
|
||
|
builtins[builtin] = true;
|
||
|
}
|
||
|
|
||
|
const NODE_MODULES = `${_path().default.sep}node_modules${_path().default.sep}`;
|
||
|
|
||
|
class NodeResolverBase {
|
||
|
constructor(fs, projectRoot, extensions) {
|
||
|
this.fs = fs;
|
||
|
this.projectRoot = projectRoot;
|
||
|
this.extensions = extensions || // $FlowFixMe[prop-missing]
|
||
|
Object.keys(_module().default._extensions);
|
||
|
this.packageCache = new Map();
|
||
|
}
|
||
|
|
||
|
resolve(id, from) {
|
||
|
throw new Error(`Could not resolve "${id}" from "${from}"`);
|
||
|
}
|
||
|
|
||
|
expandFile(file) {
|
||
|
// Expand extensions and aliases
|
||
|
let res = [];
|
||
|
|
||
|
for (let ext of this.extensions) {
|
||
|
res.push(file + ext);
|
||
|
}
|
||
|
|
||
|
if (_path().default.extname(file)) {
|
||
|
res.unshift(file);
|
||
|
} else {
|
||
|
res.push(file);
|
||
|
}
|
||
|
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
getPackageEntries(dir, pkg) {
|
||
|
let main = pkg.main;
|
||
|
return [main].filter(entry => typeof entry === 'string').map(main => {
|
||
|
// Default to index file if no main field find
|
||
|
if (!main || main === '.' || main === './') {
|
||
|
main = 'index';
|
||
|
}
|
||
|
|
||
|
(0, _assert().default)(typeof main === 'string');
|
||
|
return _path().default.resolve(dir, main);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
getModuleParts(name) {
|
||
|
name = _path().default.normalize(name);
|
||
|
let splitOn = name.indexOf(_path().default.sep);
|
||
|
|
||
|
if (name.charAt(0) === '@') {
|
||
|
splitOn = name.indexOf(_path().default.sep, splitOn + 1);
|
||
|
}
|
||
|
|
||
|
if (splitOn < 0) {
|
||
|
return [(0, _utils().normalizeSeparators)(name), undefined];
|
||
|
} else {
|
||
|
return [(0, _utils().normalizeSeparators)(name.substring(0, splitOn)), name.substring(splitOn + 1) || undefined];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
isBuiltin(name) {
|
||
|
return !!(builtins[name] || name.startsWith('node:'));
|
||
|
}
|
||
|
|
||
|
findNodeModulePath(id, sourceFile, ctx) {
|
||
|
if (this.isBuiltin(id)) {
|
||
|
return {
|
||
|
resolved: id,
|
||
|
invalidateOnFileChange: new Set(),
|
||
|
invalidateOnFileCreate: []
|
||
|
};
|
||
|
}
|
||
|
|
||
|
let [moduleName, subPath] = this.getModuleParts(id);
|
||
|
|
||
|
let dir = _path().default.dirname(sourceFile);
|
||
|
|
||
|
let moduleDir = this.fs.findNodeModule(moduleName, dir);
|
||
|
ctx.invalidateOnFileCreate.push({
|
||
|
fileName: `node_modules/${moduleName}`,
|
||
|
aboveFilePath: sourceFile
|
||
|
});
|
||
|
|
||
|
if (!moduleDir && process.versions.pnp != null) {
|
||
|
try {
|
||
|
// $FlowFixMe[prop-missing]
|
||
|
let pnp = _module().default.findPnpApi(dir + '/');
|
||
|
|
||
|
moduleDir = pnp.resolveToUnqualified(moduleName + ( // retain slash in `require('assert/')` to force loading builtin from npm
|
||
|
id[moduleName.length] === '/' ? '/' : ''), dir + '/'); // Invalidate whenever the .pnp.js file changes.
|
||
|
|
||
|
ctx.invalidateOnFileChange.add(pnp.resolveToUnqualified('pnpapi', null));
|
||
|
} catch (e) {
|
||
|
if (e.code !== 'MODULE_NOT_FOUND') {
|
||
|
throw e;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (moduleDir) {
|
||
|
return {
|
||
|
moduleName,
|
||
|
subPath,
|
||
|
moduleDir: moduleDir,
|
||
|
filePath: subPath ? _path().default.join(moduleDir, subPath) : moduleDir
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
getNodeModulesPackagePath(sourceFile) {
|
||
|
// If the file is in node_modules, we can find the package.json in the root of the package
|
||
|
// by slicing from the start of the string until 1-2 path segments after node_modules.
|
||
|
let index = sourceFile.lastIndexOf(NODE_MODULES);
|
||
|
|
||
|
if (index >= 0) {
|
||
|
index += NODE_MODULES.length; // If a scoped path, add an extra path segment.
|
||
|
|
||
|
if (sourceFile[index] === '@') {
|
||
|
index = sourceFile.indexOf(_path().default.sep, index) + 1;
|
||
|
}
|
||
|
|
||
|
index = sourceFile.indexOf(_path().default.sep, index);
|
||
|
return _path().default.join(sourceFile.slice(0, index >= 0 ? index : undefined), 'package.json');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
invalidate(filePath) {
|
||
|
// Invalidate the package.jsons above `filePath`
|
||
|
let dir = _path().default.dirname(filePath);
|
||
|
|
||
|
let {
|
||
|
root
|
||
|
} = _path().default.parse(dir);
|
||
|
|
||
|
while (dir !== root && _path().default.basename(dir) !== 'node_modules') {
|
||
|
this.packageCache.delete(_path().default.join(dir, 'package.json'));
|
||
|
dir = _path().default.dirname(dir);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
exports.NodeResolverBase = NodeResolverBase;
|