1- import { encode } from '@jridgewell/sourcemap-codec' ;
21import { readFile } from 'fs/promises' ;
2+ import MagicString from 'magic-string' ;
33import type { Plugin } from 'rollup' ;
44import { collectGmApi , getMetadata } from './util' ;
55
@@ -32,7 +32,7 @@ export default (transform?: (metadata: string) => string): Plugin => {
3232 * Use `renderChunk` instead of `banner` to preserve the metadata after minimization.
3333 * Note that this plugin must be put after `@rollup/plugin-terser`.
3434 */
35- async renderChunk ( code , chunk , options ) {
35+ async renderChunk ( code , chunk ) {
3636 const metadataFile =
3737 chunk . isEntry &&
3838 [ chunk . facadeModuleId , ...Object . keys ( chunk . modules ) ]
@@ -51,27 +51,11 @@ export default (transform?: (metadata: string) => string): Plugin => {
5151 }
5252 metadata = getMetadata ( metadata , grantSet ) ;
5353 if ( transform ) metadata = transform ( metadata ) ;
54- let map = null ;
55-
56- if ( options . sourcemap ) {
57- const mappings = [
58- ...Array . from ( metadata . split ( '\n' ) , ( ) => [ ] ) ,
59- [ ] ,
60- ...Array . from ( code . split ( '\n' ) , ( ) => [ [ 0 , 0 , 0 , 0 ] ] ) ,
61- ] ;
62- map = {
63- version : 3 ,
64- file : chunk . fileName ,
65- sources : [ chunk . fileName ] ,
66- sourcesContent : [ code ] ,
67- names : [ ] ,
68- mappings : encode ( mappings ) ,
69- } ;
70- }
71-
54+ const s = new MagicString ( code ) ;
55+ s . prepend ( `${ metadata } \n\n` ) ;
7256 return {
73- code : ` ${ metadata } \n\n ${ code } ` ,
74- map,
57+ code : s . toString ( ) ,
58+ map : s . generateMap ( { hires : 'boundary' } ) . toString ( ) ,
7559 } ;
7660 } ,
7761 } ;
0 commit comments