Add JS-CATCH-FALLBACK-01 rule and update npm packages

Add PHP-ALIAS-01 rule: prohibit field aliasing in serialization

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-12-23 07:36:18 +00:00
parent 3cc590186a
commit 3ce82a924a
1256 changed files with 6491 additions and 3989 deletions

View File

@@ -21,6 +21,7 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
/** @typedef {import("../Chunk")} Chunk */
/** @typedef {import("../Compiler")} Compiler */
/** @typedef {import("../Module")} Module */
/** @typedef {import("../Module").BuildMeta} BuildMeta */
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
/** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
/** @typedef {import("../javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
@@ -69,7 +70,28 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
const { onDemandExportsGeneration } =
ConcatenatedModule.getCompilationHooks(compilation);
onDemandExportsGeneration.tap(PLUGIN_NAME, (_module) => true);
onDemandExportsGeneration.tap(
PLUGIN_NAME,
(module, runtimes, source, finalName) => {
/** @type {BuildMeta} */
const buildMeta = module.buildMeta || (module.buildMeta = {});
const exportsSourceByRuntime =
buildMeta.exportsSourceByRuntime ||
(buildMeta.exportsSourceByRuntime = new Map());
const exportsFinalNameByRuntime =
buildMeta.exportsFinalNameByRuntime ||
(buildMeta.exportsFinalNameByRuntime = new Map());
for (const runtime of runtimes) {
exportsSourceByRuntime.set(runtime, source);
exportsFinalNameByRuntime.set(runtime, finalName);
}
return true;
}
);
});
}
@@ -152,10 +174,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
)
]
: moduleGraph.getExportsInfo(module).orderedExports;
const exportsFinalNameByRuntime =
(module.buildMeta &&
module.buildMeta.exportsFinalNameByRuntime &&
module.buildMeta.exportsFinalNameByRuntime.get(chunk.runtime)) ||
{};
const definitions =
inlined && !inlinedInIIFE
? (module.buildMeta && module.buildMeta.exportsFinalName) || {}
: {};
inlined && !inlinedInIIFE ? exportsFinalNameByRuntime : {};
/** @type {string[]} */
const shortHandedExports = [];
/** @type {[string, string][]} */
@@ -268,23 +296,23 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
* @param {Source} source source
* @param {Module} module module
* @param {ModuleRenderContext} renderContext render context
* @param {Omit<LibraryContext<T>, 'options'>} libraryContext context
* @param {Omit<LibraryContext<T>, "options">} libraryContext context
* @returns {Source} source with library export
*/
renderModuleContent(
source,
module,
{ factory, inlinedInIIFE },
{ factory, inlinedInIIFE, chunk },
libraryContext
) {
// Re-add `factoryExportsBinding` to the source
// when the module is rendered as a factory or treated as an inlined (startup) module but wrapped in an IIFE
if (
(inlinedInIIFE || factory) &&
const exportsSource =
module.buildMeta &&
module.buildMeta.factoryExportsBinding
) {
return new ConcatSource(module.buildMeta.factoryExportsBinding, source);
module.buildMeta.exportsSourceByRuntime &&
module.buildMeta.exportsSourceByRuntime.get(chunk.runtime);
// Re-add the module's exports source when rendered in factory or as an inlined startup module wrapped in an IIFE
if ((inlinedInIIFE || factory) && exportsSource) {
return new ConcatSource(exportsSource, source);
}
return source;
}