Skip to content

test(library): import LibraryType from the declarations that export it - #22093

Closed
alexander-akait wants to merge 1 commit into
mainfrom
test/library-type-declaration-import
Closed

alexander-akait wants to merge 1 commit into
mainfrom
test/library-type-declaration-import

Conversation

@alexander-akait

@alexander-akait alexander-akait commented Sep 13, 2026 •

Copy link
Copy Markdown
Member

Summary

lint is failing on main in its lint:types-test stage, and every branch off main inherits it:

test/configCases/library/script-type-keeps-script-output/webpack.config.js(23,35):
  error TS2694: Namespace 'exports' has no exported member 'LibraryType'.

LibraryType is exported from declarations/WebpackOptions but not re-exported from the package root, so reading it off import("../../../../") does not resolve. Point the one JSDoc tag at the declarations instead, which is what test/configCases/externals/side-effects-library-types/webpack.config.js:17 already does for the same type. One line, no behaviour change.

Introduced in #22088; noticed because it was the only thing left red on #22092.

What kind of change does this PR introduce?

test

Did you add tests for your changes?

n/a — it repairs the type annotation of an existing case, configCases/library/script-type-keeps-script-output, which still passes (12 checks across the normal and persistent-cache suites). The check this fixes is lint:types-test itself, which now passes locally where it failed before.

Does this PR introduce a breaking change?

No — a JSDoc type reference in one test config; nothing webpack emits changes.

If relevant, what needs to be documented once your changes are merged or what have you already documented?

n/a

Use of AI

AI was used. It read the failing lint job, established the error was on main rather than in the branch it was working on, found the type's real export site and the existing convention for referencing it, made the change and confirmed lint:types-test passes; I reviewed the result before opening this.


Generated by Claude Code

Summary by CodeRabbit

  • Documentation
    • Corrected the JSDoc type reference for the expectScriptOutput parameter.

`LibraryType` is exported from `declarations/WebpackOptions`, not from the
package root, so reading it off the root failed `lint:types-test` with
TS2694 and took every branch off `main` with it.
@changeset-bot

changeset-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3bc8388

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 6d3f3244-4e44-40c6-b2a7-656a2262fdb0

📥 Commits

Reviewing files that changed from the base of the PR and between 5a41278 and 3bc8388.

📒 Files selected for processing (1)
  • test/configCases/library/script-type-keeps-script-output/webpack.config.js

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

The change updates one JSDoc import in the library script output configuration. It references WebpackOptions.LibraryType from the declarations module.

Changes

Library script output configuration

Layer / File(s) Summary
Correct the LibraryType JSDoc import
test/configCases/library/script-type-keeps-script-output/webpack.config.js
The type parameter documentation now imports LibraryType from declarations/WebpackOptions instead of the package root.

Priority: ⬇️ Low

Change: Other

Merge Risk: ⚪ Minimal · up to 3bc83

This change only corrects a JSDoc type import and does not affect webpack behavior or emitted output.

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title uses the required Conventional Commit format and accurately describes the test change. The available context does not include the branch prefix, so the required type-prefix match cannot be v… Provide the branch name or branch prefix to verify that test matches it.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title uses the required Conventional Commit format and accurately describes the test change. The available context does not include the branch prefix, so the required type-prefix match cannot be verified.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

This PR is packaged and the instant preview is available (3bc8388).

Install it locally:

  • npm
npm i -D webpack@https://pkg.pr.new/webpack@3bc8388
  • yarn
yarn add -D webpack@https://pkg.pr.new/webpack@3bc8388
  • pnpm
pnpm add -D webpack@https://pkg.pr.new/webpack@3bc8388

@github-actions

Copy link
Copy Markdown
Contributor

Types Coverage

Coverage after merging test/library-type-declaration-import into main will be
99.08%
Coverage Report<
FileStmtsBranchesFuncsLinesUncovered Lines
bin
   webpack.js98.82%100%100%98.82%103
examples
   build-common.js100%100%100%100%
   buildAll.js100%100%100%100%
   examples.js100%100%100%100%
   template-common.js98.21%100%100%98.21%72
examples/custom-javascript-parser
   test.filter.js100%100%100%100%
examples/custom-javascript-parser/internals
   acorn-parse.js100%100%100%100%
   meriyah-parse.js100%100%100%100%
   oxc-parse.js100%100%100%100%
examples/markdown
   webpack.config.mjs100%100%100%100%
examples/module-federation
   test.filter.js100%100%100%100%
examples/reexport-components
   test.filter.js100%100%100%100%
examples/typescript
   test.filter.js100%100%100%100%
examples/typescript-non-erasable
   test.filter.js50%100%100%50%5
examples/virtual-modules
   test.filter.js100%100%100%100%
examples/wasm-bindgen-esm
   test.filter.js100%100%100%100%
examples/wasm-complex
   test.filter.js100%100%100%100%
examples/wasm-emscripten
   test.filter.js100%100%100%100%
examples/wasm-simple
   test.filter.js100%100%100%100%
examples/wasm-simple-source-phase
   test.filter.js100%100%100%100%
lib
   APIPlugin.js100%100%100%100%
   AsyncDependenciesBlock.js100%100%100%100%
   AutomaticPrefetchPlugin.js93.94%100%100%93.94%59, 62
   BannerPlugin.js100%100%100%100%
   Cache.js98.25%100%100%98.25%104
   CacheFacade.js100%100%100%100%
   Chunk.js99.72%100%100%99.72%42
   ChunkGraph.js100%100%100%100%
   ChunkGroup.js100%100%100%100%
   ChunkTemplate.js100%100%100%100%
   CircularModulesPlugin.js99.50%100%100%99.50%289
   CleanPlugin.js97.81%100%100%97.81%111, 125, 128, 212, 232
   CodeGenerationResults.js100%100%100%100%
   CompatibilityPlugin.js100%100%100%100%
   Compilation.js98.62%100%100%98.62%1757, 2078, 2085, 2093, 2115, 2118, 3057, 3536–3537, 3569, 4158, 4162, 4261, 4282, 4409, 4448, 4455, 4508–4509, 4513, 4518, 4534–4535, 4549–4550, 4555–4556, 5079, 5105, 5946, 5963, 5981, 5997, 6012, 6037, 6040, 6408, 6411–6412, 6417, 6432, 6515, 6539, 6653, 837–838
   Compiler.js98.82%100%100%98.82%1113, 1150, 1153, 1333–1334, 1342, 844, 930, 971
   ConcatenationScope.js99.10%100%100%99.10%293
   ConditionalInitFragment.js100%100%100%100%
   ConstPlugin.js100%100%100%100%
   ContextExclusionPlugin.js100%100%100%100%
   ContextModule.js99.88%100%100%99.88%1489
   ContextModuleFactory.js95.66%100%100%95.66%230, 257, 276, 280–281, 289, 465, 486, 491, 532, 543, 545, 549, 552, 558–559
   ContextReplacementPlugin.js100%100%100%100%
   CopyPlugin.js99.79%100%100%99.79%160
   DefinePlugin.js99.14%100%100%99.14%1127, 200–201, 217, 236, 310
   DependenciesBlock.js100%100%100%100%
   Dependency.js98.54%100%100%98.54%498, 545
   DependencyTemplate.js100%100%100%100%
   DependencyTemplates.js100%100%100%100%
   DotenvPlugin.js98.07%100%100%98.07%395, 443, 456–457
   DynamicEntryPlugin.js100%100%100%100%
   EntryOptionPlugin.js100%100%100%100%
   EntryPlugin.js100%100%100%100%
   Entrypoint.js100%100%100%100%
   EnvironmentPlugin.js97.14%100%100%97.14%49
   ErrorHelpers.js100%100%100%100%
   EvalDevToolModulePlugin.js100%100%100%100%
   EvalSourceMapDevToolPlugin.js100%100%100%100%
   ExportsInfo.js99.26%100%100%99.26%415, 431, 763, 860, 878, 922, 927
   ExportsInfoApiPlugin.js100%100%100%100%
   ExternalModule.js98.76%100%100%98.76%1352, 1355, 591–595, 597, 757
   ExternalModuleFactoryPlugin.js100%100%100%100%
   ExternalsPlugin.js100%100%100%100%
   FileSystemInfo.js99.75%100%100%99.75%187, 285, 3947, 3962, 3986, 3989
   FlagAllModulesAsUsedPlugin.js100%100%100%100%
   FlagDependencyExportsPlugin.js95.64%100%100%95.64%119, 130, 147, 167, 171, 50, 52, 533, 538, 54, 545, 560, 563, 57
   FlagDependencyUsagePlugin.js100%100%100%100%
   FlagEntryExportAsUsedPlugin.js100%100%100%100%
   Generator.js100%100%100%100%
   HotModuleReplacementPlugin.js100%100%100%100%
   HotUpdateChunk.js100%100%100%100%
   IgnorePlugin.js100%100%100%100%
   IgnoreWarningsPlugin.js100%100%100%100%
   InitFragment.js100%100%100%100%
   JavascriptMetaInfoPlugin.js100%100%100%100%
   LazyBarrel.js100%100%100%100%
   LibraryTemplatePlugin.js100%100%100%100%
   LoaderOptionsPlugin.js100%100%100%100%
   LoaderTargetPlugin.js100%100%100%100%
   MainTemplate.js100%100%100%100%
   ManifestPlugin.js100%100%100%100%
   Module.js98.50%100%100%98.50%1326, 1331, 1390, 1404, 1466, 1475
   ModuleFactory.js100%100%100%100%
   ModuleFilenameHelpers.js98.90%100%100%98.90%111, 113
   ModuleGraph.js99.78%100%100%99.78%1180
   ModuleGraphConnection.js100%100%100%100%
   ModuleInfoHeaderPlugin.js100%100%100%100%
   ModuleNotFoundError.js100%100%100%100%
   ModuleProfile.js100%100%100%100%
   ModuleSourceTypeConstants.js100%100%100%100%
   ModuleTemplate.js100%100%100%100%
   ModuleTypeConstants.js100%100%100%100%
   MultiCompiler.js98.88%100%100%98.88%462, 542, 729, 794
   MultiStats.js100%100%100%100%
   MultiWatching.js93.75%100%100%93.75%37, 71
   NoEmitOnErrorsPlugin.js100%100%100%100%
   NodeStuffPlugin.js100%100%100%100%
   NormalModule.js98.11%100%100%98.11%1045, 1048, 1067, 1084, 1354, 1388, 1404, 1863, 2159, 2164–2172, 2174, 29
   NormalModuleFactory.js98.01%100%100%98.01%1341, 1644, 1661, 1670, 1674, 1702, 1709, 1713, 1718, 1730, 1741, 1790, 1801, 1811, 1862–1864, 1871, 732, 744
   NormalModuleReplacementPlugin.js100%100%100%100%
   NullFactory.js100%100%100%100%
   OptimizationStages.js100%100%100%100%
   OptionsApply.js100%100%100%100%
   Parser.js100%100%100%100%
   PlatformPlugin.js100%100%100%100%
   PrefetchPlugin.js100%100%100%100%
   ProgressPlugin.js99.80%100%100%99.80%694
   ProvidePlugin.js100%100%100%100%
   RawModule.js100%100%100%100%
   RecordIdsPlugin.js100%100%100%100%
   RequestShortener.js100%100%100%100%
   ResolverFactory.js100%100%100%100%
   RuntimeGlobals.js100%100%100%100%
   RuntimeModule.js100%100%100%100%
   RuntimePlugin.js95.47%100%100%95.47%318, 394, 403, 406, 419–420, 434, 452, 473–474, 497, 517–518, 554–555, 578, 591–592, 664, 677, 698, 717
   RuntimeTemplate.js99.66%100%100%99.66%352, 3740, 4577, 4589, 4594, 4596, 4601
   SelfModuleFactory.js100%100%100%100%
   SingleEntryPlugin.js100%100%100%100%
   SourceMapDevToolModuleOptionsPlugin.js100%100%100%100%
   SourceMapDevToolPlugin.js97.25%100%100%97.25%229, 233, 235, 429, 440, 469, 572, 575–576, 899, 920, 923
   Stats.js100%100%100%100%
   Template.js100%100%100%100%
   TemplatedPathPlugin.js99.48%100%100%99.48%366–367
   UseStrictPlugin.js100%100%100%100%
   WarnCaseSensitiveModulesPlugin.js100%100%100%100%
   WarnDeprecatedOptionPlugin.js100%100%100%100%
   WarnNoModeSetPlugin.js100%100%100%100%
   WatchIgnorePlugin.js100%100%100%100%
   Watching.js100%100%100%100%
   WebpackError.js100%100%100%100%
   WebpackIsIncludedPlugin.js100%100%100%100%
   WebpackOptionsApply.js100%100%100%100%
   WebpackOptionsDefaulter.js100%100%100%100%
   buildChunkGraph.js99.87%100%100%99.87%375
   cli.js98.63%100%100%98.63%10, 117, 547, 579, 629, 903
   index.js99.73%100%100%99.73%184
   validateSchema.js94.67%100%100%94.67%100, 87, 89, 98
   webpack.js97.12%100%100%97.12%10, 274, 296, 298
lib/asset
   AssetBytesGenerator.js100%100%100%100%
   AssetBytesParser.js100%100%100%100%
   AssetGenerator.js100%100%100%100%
   AssetModule.js100%100%100%100%
   AssetModulesPlugin.js98.15%100%100%98.15%338, 362, 365, 495, 57, 62
   AssetParser.js100%100%100%100%
   AssetSourceGenerator.js100%100%100%100%
   AssetSourceParser.js100%100%100%100%
   RawDataUrlModule.js100%100%100%100%
   WebManifestGenerator.js100%100%100%100%
   WebManifestParser.js100%100%100%

@codecov

codecov Bot commented Sep 13, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.96%. Comparing base (5a41278) to head (3bc8388).

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #22093   +/-   ##
=======================================
  Coverage   94.96%   94.96%           
=======================================
  Files         729      729           
  Lines       97509    97509           
  Branches    29696    29696           
=======================================
+ Hits        92596    92600    +4     
+ Misses       4913     4909    -4     
Flag Coverage Δ
css-parsing 24.03% <ø> (ø)
html5lib 27.24% <ø> (ø)
integration 87.52% <ø> (+<0.01%) ⬆️
syntax-equivalence 78.25% <ø> (ø)
test262 43.39% <ø> (ø)
unit 59.57% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

alexander-akait added a commit that referenced this pull request Sep 13, 2026
`LibraryType` is exported from `declarations/WebpackOptions.d.ts`, not
re-exported from the package root, so `lint:types-test` fails on `main`
with TS2694. Same one-line change as #22093, ported here to unblock this
PR's `lint` rather than wait on that PR to land.
@github-actions

Copy link
Copy Markdown
Contributor

Generated code size

Comparing 3bc8388 merged into 5a41278 against 5a41278. Merging this pull request will not change the code webpack generates.

What moved Cases Assets Gzip Raw Case source
Changed, same case source 0 0 — — —
Changed, case source moved 0 0 — — —
New 0 0 — — —
Deleted 0 0 — — —
Unchanged — 7645 — — —

Changed, same case source is the row that is webpack's doing — those assets are built from byte-identical module source, so what moved is what webpack generates. Changed, case source moved is mostly a case this pull request edited: Case source is how many bytes of module source those cases gained, which is what their output delta has to be read against, and a bundle that grew by less than its case did is not a regression. New and Deleted are whole assets rather than deltas, so a pull request adding cases cannot bury a real change. Gzip decides — it is what a user downloads, and a re-encoding can cut raw bytes while costing wire bytes; raw is the tiebreak, and brotli and zstd are per asset below.

No asset changed size.

No runtime gained or lost a runtime module.

Built test/configCases with the defaults a user gets: 2150 case(s), 7645 asset(s), 87 emitted nothing.

@codspeed

codspeed Bot commented Sep 13, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 20.79%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 2 improved benchmarks
❌ 1 regressed benchmark
✅ 391 untouched benchmarks
⏩ 6 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Memory benchmark "side-effects-reexport", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 171.5 KB 902.7 KB -81.01%
⚡ Memory benchmark "no-exports-analysis", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 902.6 KB 456.3 KB +97.78%
⚡ Memory benchmark "cache-filesystem", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 1.5 MB 1.1 MB +32.32%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing test/library-type-declaration-import (3bc8388) with main (2cf714f)2

Open in CodSpeed

Footnotes

  1. 6 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on main (5a41278) during the generation of this report, so 2cf714f was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

alexander-akait added a commit that referenced this pull request Sep 13, 2026
* fix(parser): answer an absent export from the spec namespace

A static reference to a name the module does not export read and wrote the
exports object, so every name `Object.prototype` carries — `__proto__`,
`toString`, `constructor` — showed through where the spec reports undefined,
and a write quietly created a property instead of failing. Route those names
through the namespace, which answers both as the spec does.

Unskips `module-code/namespace/internals/{get-str-not-found,set}.js` and
`module-code/export-expname-binding-index.js`.

* test(library): import LibraryType from the declarations that export it

`LibraryType` is exported from `declarations/WebpackOptions.d.ts`, not
re-exported from the package root, so `lint:types-test` fails on `main`
with TS2694. Same one-line change as #22093, ported here to unblock this
PR's `lint` rather than wait on that PR to land.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant