Framework updates
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
61
node_modules/enhanced-resolve/README.md
generated
vendored
61
node_modules/enhanced-resolve/README.md
generated
vendored
@@ -85,36 +85,37 @@ myResolver.resolve(
|
||||
|
||||
#### Resolver Options
|
||||
|
||||
| Field | Default | Description |
|
||||
| ------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| alias | [] | A list of module alias configurations or an object which maps key to value |
|
||||
| aliasFields | [] | A list of alias fields in description files |
|
||||
| extensionAlias | {} | An object which maps extension to extension aliases |
|
||||
| cachePredicate | function() { return true }; | A function which decides whether a request should be cached or not. An object is passed to the function with `path` and `request` properties. |
|
||||
| cacheWithContext | true | If unsafe cache is enabled, includes `request.context` in the cache key |
|
||||
| conditionNames | [] | A list of exports field condition names |
|
||||
| descriptionFiles | ["package.json"] | A list of description files to read from |
|
||||
| enforceExtension | false | Enforce that a extension from extensions must be used |
|
||||
| exportsFields | ["exports"] | A list of exports fields in description files |
|
||||
| extensions | [".js", ".json", ".node"] | A list of extensions which should be tried for files |
|
||||
| fallback | [] | Same as `alias`, but only used if default resolving fails |
|
||||
| fileSystem | | The file system which should be used |
|
||||
| fullySpecified | false | Request passed to resolve is already fully specified and extensions or main files are not resolved for it (they are still resolved for internal requests) |
|
||||
| mainFields | ["main"] | A list of main fields in description files |
|
||||
| mainFiles | ["index"] | A list of main files in directories |
|
||||
| modules | ["node_modules"] | A list of directories to resolve modules from, can be absolute path or folder name |
|
||||
| plugins | [] | A list of additional resolve plugins which should be applied |
|
||||
| resolver | undefined | A prepared Resolver to which the plugins are attached |
|
||||
| resolveToContext | false | Resolve to a context instead of a file |
|
||||
| preferRelative | false | Prefer to resolve module requests as relative request and fallback to resolving as module |
|
||||
| preferAbsolute | false | Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots |
|
||||
| restrictions | [] | A list of resolve restrictions |
|
||||
| roots | [] | A list of root paths |
|
||||
| symlinks | true | Whether to resolve symlinks to their symlinked location |
|
||||
| tsconfig | false | TypeScript config for paths mapping. Can be `false` (disabled), `true` (use default `tsconfig.json`), a string path to `tsconfig.json`, or an object with `configFile` and `references` options. |
|
||||
| tsconfig.configFile | tsconfig.json | Path to the tsconfig.json file |
|
||||
| tsconfig.references | [] | Project references. `'auto'` to load from tsconfig, or an array of paths to referenced projects |
|
||||
| unsafeCache | false | Use this cache object to unsafely cache the successful requests |
|
||||
| Field | Default | Description |
|
||||
| ------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| alias | [] | A list of module alias configurations or an object which maps key to value |
|
||||
| aliasFields | [] | A list of alias fields in description files |
|
||||
| extensionAlias | {} | An object which maps extension to extension aliases |
|
||||
| cachePredicate | function() { return true }; | A function which decides whether a request should be cached or not. An object is passed to the function with `path` and `request` properties. |
|
||||
| cacheWithContext | true | If unsafe cache is enabled, includes `request.context` in the cache key |
|
||||
| conditionNames | [] | A list of exports field condition names |
|
||||
| descriptionFiles | ["package.json"] | A list of description files to read from |
|
||||
| enforceExtension | false | Enforce that a extension from extensions must be used |
|
||||
| exportsFields | ["exports"] | A list of exports fields in description files |
|
||||
| extensions | [".js", ".json", ".node"] | A list of extensions which should be tried for files |
|
||||
| fallback | [] | Same as `alias`, but only used if default resolving fails |
|
||||
| fileSystem | | The file system which should be used |
|
||||
| fullySpecified | false | Request passed to resolve is already fully specified and extensions or main files are not resolved for it (they are still resolved for internal requests) |
|
||||
| mainFields | ["main"] | A list of main fields in description files |
|
||||
| mainFiles | ["index"] | A list of main files in directories |
|
||||
| modules | ["node_modules"] | A list of directories to resolve modules from, can be absolute path or folder name |
|
||||
| plugins | [] | A list of additional resolve plugins which should be applied |
|
||||
| resolver | undefined | A prepared Resolver to which the plugins are attached |
|
||||
| resolveToContext | false | Resolve to a context instead of a file |
|
||||
| preferRelative | false | Prefer to resolve module requests as relative request and fallback to resolving as module |
|
||||
| preferAbsolute | false | Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots |
|
||||
| restrictions | [] | A list of resolve restrictions |
|
||||
| roots | [] | A list of root paths |
|
||||
| symlinks | true | Whether to resolve symlinks to their symlinked location |
|
||||
| tsconfig | false | TypeScript config for paths mapping. Can be `false` (disabled), `true` (use default `tsconfig.json`), a string path to `tsconfig.json`, or an object with `configFile`, `references`, and `baseUrl` options. Supports JSONC format (comments and trailing commas) like TypeScript compiler. |
|
||||
| tsconfig.configFile | tsconfig.json | Path to the tsconfig.json file |
|
||||
| tsconfig.references | [] | Project references. `'auto'` to load from tsconfig, or an array of paths to referenced projects |
|
||||
| tsconfig.baseUrl | undefined | Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file |
|
||||
| unsafeCache | false | Use this cache object to unsafely cache the successful requests |
|
||||
|
||||
## Plugins
|
||||
|
||||
|
||||
1
node_modules/enhanced-resolve/lib/ResolverFactory.js
generated
vendored
1
node_modules/enhanced-resolve/lib/ResolverFactory.js
generated
vendored
@@ -59,6 +59,7 @@ const { PathType, getType } = require("./util/path");
|
||||
* @typedef {object} TsconfigOptions
|
||||
* @property {string=} configFile A relative path to the tsconfig file based on cwd, or an absolute path of tsconfig file
|
||||
* @property {string[] | "auto"=} references References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths
|
||||
* @property {string=} baseUrl Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
30
node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js
generated
vendored
30
node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js
generated
vendored
@@ -184,6 +184,8 @@ module.exports = class TsconfigPathsPlugin {
|
||||
} else {
|
||||
this.references = [];
|
||||
}
|
||||
/** @type {string | undefined} */
|
||||
this.baseUrl = configFileOrOptions.baseUrl;
|
||||
} else {
|
||||
this.configFile =
|
||||
configFileOrOptions === true
|
||||
@@ -191,6 +193,8 @@ module.exports = class TsconfigPathsPlugin {
|
||||
: /** @type {string} */ (configFileOrOptions);
|
||||
/** @type {TsconfigReference[] | "auto"} */
|
||||
this.references = [];
|
||||
/** @type {string | undefined} */
|
||||
this.baseUrl = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,10 +334,13 @@ module.exports = class TsconfigPathsPlugin {
|
||||
const compilerOptions = config.compilerOptions || {};
|
||||
const mainContext = dirname(absTsconfigPath);
|
||||
|
||||
const baseUrl =
|
||||
this.baseUrl !== undefined ? this.baseUrl : compilerOptions.baseUrl;
|
||||
|
||||
const main = tsconfigPathsToResolveOptions(
|
||||
mainContext,
|
||||
compilerOptions.paths || {},
|
||||
compilerOptions.baseUrl,
|
||||
baseUrl,
|
||||
);
|
||||
/** @type {{ [baseUrl: string]: TsconfigPathsData }} */
|
||||
const refs = {};
|
||||
@@ -406,6 +413,7 @@ module.exports = class TsconfigPathsPlugin {
|
||||
* @param {string} configFilePath current config file path
|
||||
* @param {string} extendedConfigValue extends value
|
||||
* @param {Set<string>} fileDependencies the file dependencies
|
||||
* @param {Set<string>} visitedConfigPaths config paths being loaded (for circular extends detection)
|
||||
* @returns {Promise<Tsconfig>} the extended tsconfig
|
||||
*/
|
||||
async _loadTsconfigFromExtends(
|
||||
@@ -413,6 +421,7 @@ module.exports = class TsconfigPathsPlugin {
|
||||
configFilePath,
|
||||
extendedConfigValue,
|
||||
fileDependencies,
|
||||
visitedConfigPaths,
|
||||
) {
|
||||
const currentDir = dirname(configFilePath);
|
||||
|
||||
@@ -444,6 +453,7 @@ module.exports = class TsconfigPathsPlugin {
|
||||
fileSystem,
|
||||
extendedConfigPath,
|
||||
fileDependencies,
|
||||
visitedConfigPaths,
|
||||
);
|
||||
const compilerOptions = config.compilerOptions || { baseUrl: undefined };
|
||||
|
||||
@@ -520,10 +530,22 @@ module.exports = class TsconfigPathsPlugin {
|
||||
* @param {FileSystem} fileSystem the file system
|
||||
* @param {string} configFilePath absolute path to tsconfig.json
|
||||
* @param {Set<string>} fileDependencies the file dependencies
|
||||
* @param {Set<string>=} visitedConfigPaths config paths being loaded (for circular extends detection)
|
||||
* @returns {Promise<Tsconfig>} the merged tsconfig
|
||||
*/
|
||||
async _loadTsconfig(fileSystem, configFilePath, fileDependencies) {
|
||||
const config = await readJson(fileSystem, configFilePath);
|
||||
async _loadTsconfig(
|
||||
fileSystem,
|
||||
configFilePath,
|
||||
fileDependencies,
|
||||
visitedConfigPaths = new Set(),
|
||||
) {
|
||||
if (visitedConfigPaths.has(configFilePath)) {
|
||||
return /** @type {Tsconfig} */ ({});
|
||||
}
|
||||
visitedConfigPaths.add(configFilePath);
|
||||
const config = await readJson(fileSystem, configFilePath, {
|
||||
stripComments: true,
|
||||
});
|
||||
fileDependencies.add(configFilePath);
|
||||
|
||||
let result = config;
|
||||
@@ -540,6 +562,7 @@ module.exports = class TsconfigPathsPlugin {
|
||||
configFilePath,
|
||||
extendedConfigElement,
|
||||
fileDependencies,
|
||||
visitedConfigPaths,
|
||||
);
|
||||
base = mergeTsconfigs(base, extendedTsconfig);
|
||||
}
|
||||
@@ -549,6 +572,7 @@ module.exports = class TsconfigPathsPlugin {
|
||||
configFilePath,
|
||||
extendedConfig,
|
||||
fileDependencies,
|
||||
visitedConfigPaths,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
22
node_modules/enhanced-resolve/lib/util/fs.js
generated
vendored
22
node_modules/enhanced-resolve/lib/util/fs.js
generated
vendored
@@ -5,18 +5,27 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const stripJsonComments = require("./strip-json-comments");
|
||||
|
||||
/** @typedef {import("../Resolver").FileSystem} FileSystem */
|
||||
|
||||
/**
|
||||
* Read and parse JSON file
|
||||
* @typedef {object} ReadJsonOptions
|
||||
* @property {boolean=} stripComments Whether to strip JSONC comments
|
||||
*/
|
||||
|
||||
/**
|
||||
* Read and parse JSON file (supports JSONC with comments)
|
||||
* @template T
|
||||
* @param {FileSystem} fileSystem the file system
|
||||
* @param {string} jsonFilePath absolute path to JSON file
|
||||
* @param {ReadJsonOptions} options Options
|
||||
* @returns {Promise<T>} parsed JSON content
|
||||
*/
|
||||
async function readJson(fileSystem, jsonFilePath) {
|
||||
async function readJson(fileSystem, jsonFilePath, options = {}) {
|
||||
const { stripComments = false } = options;
|
||||
const { readJson } = fileSystem;
|
||||
if (readJson) {
|
||||
if (readJson && !stripComments) {
|
||||
return new Promise((resolve, reject) => {
|
||||
readJson(jsonFilePath, (err, content) => {
|
||||
if (err) return reject(err);
|
||||
@@ -32,7 +41,12 @@ async function readJson(fileSystem, jsonFilePath) {
|
||||
});
|
||||
});
|
||||
|
||||
return JSON.parse(/** @type {string} */ (buf.toString()));
|
||||
const jsonText = /** @type {string} */ (buf.toString());
|
||||
// Strip comments to support JSONC (e.g., tsconfig.json with comments)
|
||||
const jsonWithoutComments = stripComments
|
||||
? stripJsonComments(jsonText, { trailingCommas: true, whitespace: true })
|
||||
: jsonText;
|
||||
return JSON.parse(jsonWithoutComments);
|
||||
}
|
||||
|
||||
module.exports.readJson = readJson;
|
||||
|
||||
177
node_modules/enhanced-resolve/lib/util/strip-json-comments.js
generated
vendored
Executable file
177
node_modules/enhanced-resolve/lib/util/strip-json-comments.js
generated
vendored
Executable file
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Natsu @xiaoxiaojx
|
||||
|
||||
This file contains code ported from strip-json-comments:
|
||||
https://github.com/sindresorhus/strip-json-comments
|
||||
Original license: MIT
|
||||
Original author: Sindre Sorhus
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @typedef {object} StripJsonCommentsOptions
|
||||
* @property {boolean=} whitespace Replace comments with whitespace
|
||||
* @property {boolean=} trailingCommas Strip trailing commas
|
||||
*/
|
||||
|
||||
const singleComment = Symbol("singleComment");
|
||||
const multiComment = Symbol("multiComment");
|
||||
|
||||
/**
|
||||
* Strip without whitespace (returns empty string)
|
||||
* @param {string} _string Unused
|
||||
* @param {number} _start Unused
|
||||
* @param {number} _end Unused
|
||||
* @returns {string} Empty string for all input
|
||||
*/
|
||||
const stripWithoutWhitespace = (_string, _start, _end) => "";
|
||||
|
||||
/**
|
||||
* Replace all characters except ASCII spaces, tabs and line endings with regular spaces to ensure valid JSON output.
|
||||
* @param {string} string String to process
|
||||
* @param {number} start Start index
|
||||
* @param {number} end End index
|
||||
* @returns {string} Processed string with comments replaced by whitespace
|
||||
*/
|
||||
const stripWithWhitespace = (string, start, end) =>
|
||||
string.slice(start, end).replace(/[^ \t\r\n]/g, " ");
|
||||
|
||||
/**
|
||||
* Check if a quote is escaped
|
||||
* @param {string} jsonString JSON string
|
||||
* @param {number} quotePosition Position of the quote
|
||||
* @returns {boolean} True if the quote at the given position is escaped
|
||||
*/
|
||||
const isEscaped = (jsonString, quotePosition) => {
|
||||
let index = quotePosition - 1;
|
||||
let backslashCount = 0;
|
||||
|
||||
while (jsonString[index] === "\\") {
|
||||
index -= 1;
|
||||
backslashCount += 1;
|
||||
}
|
||||
|
||||
return Boolean(backslashCount % 2);
|
||||
};
|
||||
|
||||
/**
|
||||
* Strip comments from JSON string
|
||||
* @param {string} jsonString JSON string with potential comments
|
||||
* @param {StripJsonCommentsOptions} options Options
|
||||
* @returns {string} JSON string without comments
|
||||
*/
|
||||
function stripJsonComments(
|
||||
jsonString,
|
||||
{ whitespace = true, trailingCommas = false } = {},
|
||||
) {
|
||||
if (typeof jsonString !== "string") {
|
||||
throw new TypeError(
|
||||
`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``,
|
||||
);
|
||||
}
|
||||
|
||||
const strip = whitespace ? stripWithWhitespace : stripWithoutWhitespace;
|
||||
|
||||
let isInsideString = false;
|
||||
/** @type {false | typeof singleComment | typeof multiComment} */
|
||||
let isInsideComment = false;
|
||||
let offset = 0;
|
||||
let buffer = "";
|
||||
let result = "";
|
||||
let commaIndex = -1;
|
||||
|
||||
for (let index = 0; index < jsonString.length; index++) {
|
||||
const currentCharacter = jsonString[index];
|
||||
const nextCharacter = jsonString[index + 1];
|
||||
|
||||
if (!isInsideComment && currentCharacter === '"') {
|
||||
// Enter or exit string
|
||||
const escaped = isEscaped(jsonString, index);
|
||||
if (!escaped) {
|
||||
isInsideString = !isInsideString;
|
||||
}
|
||||
}
|
||||
|
||||
if (isInsideString) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isInsideComment && currentCharacter + nextCharacter === "//") {
|
||||
// Enter single-line comment
|
||||
buffer += jsonString.slice(offset, index);
|
||||
offset = index;
|
||||
isInsideComment = singleComment;
|
||||
index++;
|
||||
} else if (
|
||||
isInsideComment === singleComment &&
|
||||
currentCharacter + nextCharacter === "\r\n"
|
||||
) {
|
||||
// Exit single-line comment via \r\n
|
||||
index++;
|
||||
isInsideComment = false;
|
||||
buffer += strip(jsonString, offset, index);
|
||||
offset = index;
|
||||
continue;
|
||||
} else if (isInsideComment === singleComment && currentCharacter === "\n") {
|
||||
// Exit single-line comment via \n
|
||||
isInsideComment = false;
|
||||
buffer += strip(jsonString, offset, index);
|
||||
offset = index;
|
||||
} else if (!isInsideComment && currentCharacter + nextCharacter === "/*") {
|
||||
// Enter multiline comment
|
||||
buffer += jsonString.slice(offset, index);
|
||||
offset = index;
|
||||
isInsideComment = multiComment;
|
||||
index++;
|
||||
continue;
|
||||
} else if (
|
||||
isInsideComment === multiComment &&
|
||||
currentCharacter + nextCharacter === "*/"
|
||||
) {
|
||||
// Exit multiline comment
|
||||
index++;
|
||||
isInsideComment = false;
|
||||
buffer += strip(jsonString, offset, index + 1);
|
||||
offset = index + 1;
|
||||
continue;
|
||||
} else if (trailingCommas && !isInsideComment) {
|
||||
if (commaIndex !== -1) {
|
||||
if (currentCharacter === "}" || currentCharacter === "]") {
|
||||
// Strip trailing comma
|
||||
buffer += jsonString.slice(offset, index);
|
||||
result += strip(buffer, 0, 1) + buffer.slice(1);
|
||||
buffer = "";
|
||||
offset = index;
|
||||
commaIndex = -1;
|
||||
} else if (
|
||||
currentCharacter !== " " &&
|
||||
currentCharacter !== "\t" &&
|
||||
currentCharacter !== "\r" &&
|
||||
currentCharacter !== "\n"
|
||||
) {
|
||||
// Hit non-whitespace following a comma; comma is not trailing
|
||||
buffer += jsonString.slice(offset, index);
|
||||
offset = index;
|
||||
commaIndex = -1;
|
||||
}
|
||||
} else if (currentCharacter === ",") {
|
||||
// Flush buffer prior to this point, and save new comma index
|
||||
result += buffer + jsonString.slice(offset, index);
|
||||
buffer = "";
|
||||
offset = index;
|
||||
commaIndex = index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const remaining =
|
||||
isInsideComment === singleComment
|
||||
? strip(jsonString, offset, jsonString.length)
|
||||
: jsonString.slice(offset);
|
||||
|
||||
return result + buffer + remaining;
|
||||
}
|
||||
|
||||
module.exports = stripJsonComments;
|
||||
2
node_modules/enhanced-resolve/package.json
generated
vendored
2
node_modules/enhanced-resolve/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "enhanced-resolve",
|
||||
"version": "5.19.0",
|
||||
"version": "5.20.0",
|
||||
"description": "Offers a async require.resolve function. It's highly configurable.",
|
||||
"homepage": "http://github.com/webpack/enhanced-resolve",
|
||||
"repository": {
|
||||
|
||||
6
node_modules/enhanced-resolve/types.d.ts
generated
vendored
6
node_modules/enhanced-resolve/types.d.ts
generated
vendored
@@ -1601,6 +1601,11 @@ declare interface TsconfigOptions {
|
||||
* References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths
|
||||
*/
|
||||
references?: string[] | "auto";
|
||||
|
||||
/**
|
||||
* Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file
|
||||
*/
|
||||
baseUrl?: string;
|
||||
}
|
||||
declare interface TsconfigPathsData {
|
||||
/**
|
||||
@@ -1638,6 +1643,7 @@ declare class TsconfigPathsPlugin {
|
||||
constructor(configFileOrOptions: string | true | TsconfigOptions);
|
||||
configFile: string;
|
||||
references: "auto" | TsconfigReference[];
|
||||
baseUrl?: string;
|
||||
apply(resolver: Resolver): void;
|
||||
}
|
||||
declare interface TsconfigReference {
|
||||
|
||||
Reference in New Issue
Block a user