1
- import { encode } from '@jridgewell/sourcemap-codec' ;
2
1
import { readFile } from 'fs/promises' ;
2
+ import MagicString from 'magic-string' ;
3
3
import type { Plugin } from 'rollup' ;
4
4
import { collectGmApi , getMetadata } from './util' ;
5
5
@@ -32,7 +32,7 @@ export default (transform?: (metadata: string) => string): Plugin => {
32
32
* Use `renderChunk` instead of `banner` to preserve the metadata after minimization.
33
33
* Note that this plugin must be put after `@rollup/plugin-terser`.
34
34
*/
35
- async renderChunk ( code , chunk , options ) {
35
+ async renderChunk ( code , chunk ) {
36
36
const metadataFile =
37
37
chunk . isEntry &&
38
38
[ chunk . facadeModuleId , ...Object . keys ( chunk . modules ) ]
@@ -51,27 +51,11 @@ export default (transform?: (metadata: string) => string): Plugin => {
51
51
}
52
52
metadata = getMetadata ( metadata , grantSet ) ;
53
53
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` ) ;
72
56
return {
73
- code : ` ${ metadata } \n\n ${ code } ` ,
74
- map,
57
+ code : s . toString ( ) ,
58
+ map : s . generateMap ( { hires : 'boundary' } ) . toString ( ) ,
75
59
} ;
76
60
} ,
77
61
} ;
0 commit comments