Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The updated sourcemap implementation can return a non-Encoded SourceMap instance and the sourcemap snapshot file contains duplicated snapshot keys that overwrite each other.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR merges next into master, bringing in dependency/version bumps across the monorepo, significant improvements to ekscss source-map generation (including nested @import handling and interpolation tracking), and adds/expands Bun-based test coverage for multiple plugins and sourcemap behavior.
Changes:
- Update ekscss sourcemap implementation to track interpolation positions, support shifting mappings, and remap nested
@importsource maps. - Add/expand tests (and snapshots) for sourcemaps plus
plugin-import,plugin-apply, andplugin-prefix. - Bump versions and devDependencies across packages; update Bun/esbuild/rollup/Svelte/PostCSS toolchain configs and lockfile.
File summaries
| File | Description |
|---|---|
| packages/svelte-ekscss/package.json | Bump devDependencies (esbuild, Svelte). |
| packages/rollup-plugin-ekscss/package.json | Bump devDependencies (esbuild, rollup). |
| packages/postcss-ekscss/src/tokenize.ts | Remove now-unneeded lint suppressions. |
| packages/postcss-ekscss/src/parser.ts | Adjust important-detection trimming logic; remove lint suppression. |
| packages/postcss-ekscss/package.json | Version bump + devDependency bumps (esbuild, postcss). |
| packages/postcss-ekscss/modules.d.ts | Remove now-unneeded lint suppression. |
| packages/plugin-prefix/test/index.test.ts | Add Bun tests for prefix plugin behavior. |
| packages/plugin-prefix/package.json | Version bump + esbuild devDependency bump. |
| packages/plugin-import/test/index.test.ts | Replace placeholder test with comprehensive import + sourcemap tests. |
| packages/plugin-import/test/snapshots/index.test.ts.snap | Add snapshot for encoded sourcemap output. |
| packages/plugin-import/src/index.ts | Preserve raw source for sourcemap correctness during interpolation; expose __raw. |
| packages/plugin-import/package.json | Version bump + add trace-mapping devDependency. |
| packages/plugin-apply/test/index.test.ts | Add Bun tests for apply plugin behavior and warnings. |
| packages/plugin-apply/src/index.ts | Minor parsing/iteration refactor (quote stripping; decl collection). |
| packages/plugin-apply/package.json | Version bump + esbuild devDependency bump. |
| packages/framework/utils.js | Add lint suppression for a specific conditional ordering rule. |
| packages/framework/package.json | Version bump. |
| packages/framework/config.js | Add additional upstream reference URL in comment. |
| packages/esbuild-plugin-ekscss/package.json | Bump esbuild devDependency. |
| packages/ekscss/test/sourcemap.test.ts | Add extensive source map unit tests (shift, mappings, imports, interpolation, snapshots). |
| packages/ekscss/test/helpers.test.ts | Update ctx expectations to include new raw/pos fields and clarify behavior. |
| packages/ekscss/test/compile.test.ts | Move sourcemap tests out; add ctx reset tests for thrown interpolation. |
| packages/ekscss/test/snapshots/sourcemap.test.ts.snap | Add sourcemap snapshots (currently contains duplicate keys). |
| packages/ekscss/src/types.ts | Extend Element/Context types for __raw and interpolation position tracking; add shift() to RawSourceMap. |
| packages/ekscss/src/sourcemap.ts | Major sourcemap rewrite: interpolation-aware mapping, multi-line tracking, @import remapping support, and shift(). |
| packages/ekscss/src/helpers.ts | Add interpolation position tracking in xcss() keyed by ctx.raw/ctx.pos; refactor expression resolution. |
| packages/ekscss/src/compiler.ts | Ensure ctx is reset via try/finally; wire new sourcemap API and tracking flags. |
| packages/ekscss/package.json | Version bump + add remapping dependency + add trace-mapping devDependency. |
| packages/ekscss/build.ts | Adjust esbuild externals and keep browser bundle sourcemap stub. |
| packages/config-loader/package.json | Bump esbuild devDependency. |
| packages/cli/package.json | Version bump. |
| packages/cli/index.js | Use new sourcemap.shift() instead of mutating internal gen-mapping structures. |
| packages/bun-plugin-ekscss/package.json | Version bump. |
| package.json | Toolchain/devDependency bumps (Biome, ESLint, unicorn, TS, etc.). |
| eslint.config.mjs | Disable additional unicorn rules; extend ignores list. |
| docs/dev/pnpm-workspace.yaml | Remove pnpm workspace stub. |
| docs/dev/package.json | Remove pnpm override block. |
| docs/dev/bunfig.toml | Add docs/dev Bun config. |
| docs/dev/.npmrc | Remove npmrc overrides in docs/dev. |
| bunfig.toml | Add [run] config + install exclusions. |
| bun.lock | Lockfile v2 + dependency updates reflecting new versions. |
| .vscode/mcp.json | Remove VS Code MCP filesystem server config. |
| .vscode/extensions.json | Remove a VS Code extension recommendation. |
| .gitignore | Stop ignoring /.claude/. |
Review details
Suppressed comments (1)
packages/ekscss/test/snapshots/sourcemap.test.ts.snap:162
- This snapshot file defines the same snapshot key twice (
encoded map after addMapping following shift keeps both 1). The laterexports[...]overwrites the earlier one; remove the duplicate block so there is exactly one definition per snapshot name.
exports[`source map snapshots encoded map after addMapping following shift keeps both 1`] = `
{
"file": undefined,
"ignoreList": [],
"mappings": ";;AAAE;;;;;;;;;ACAFA",
- Files reviewed: 41/44 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| const encoded = toEncodedMap(map); | ||
| let result = | ||
| importMaps.size > 0 | ||
| ? (remapping( | ||
| encoded as SourceMapInput, | ||
| (file) => (importMaps.get(file) as SourceMapInput | undefined) ?? null, | ||
| ) as EncodedSourceMap) | ||
| : encoded; |
| exports[`source map snapshots encoded map after shift prepends a banner offset 1`] = ` | ||
| { | ||
| "file": undefined, | ||
| "ignoreList": [], | ||
| "mappings": ";;AAAE,aACA", | ||
| "names": [], | ||
| "sourceRoot": undefined, | ||
| "sources": [ | ||
| "<unknown>", | ||
| ], | ||
| "sourcesContent": [ | ||
|
|
||
| "a{color:red} | ||
| b{color:blue}" | ||
| , | ||
| ], | ||
| "version": 3, | ||
| } | ||
| `; |
No description provided.