File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -43,6 +43,18 @@ export default function register(bench) {
4343 }
4444 } ) ;
4545
46+ bench . add ( "original-source: buffers() (from string)" , ( ) => {
47+ for ( let i = 0 ; i < 50 ; i ++ ) {
48+ new sources . OriginalSource ( fixtureCode , "fixture.js" ) . buffers ( ) ;
49+ }
50+ } ) ;
51+
52+ bench . add ( "original-source: buffers() (from buffer)" , ( ) => {
53+ for ( let i = 0 ; i < 50 ; i ++ ) {
54+ new sources . OriginalSource ( fixtureBuffer , "fixture.js" ) . buffers ( ) ;
55+ }
56+ } ) ;
57+
4658 bench . add ( "original-source: size()" , ( ) => {
4759 for ( let i = 0 ; i < 50 ; i ++ ) {
4860 new sources . OriginalSource ( fixtureCode , "fixture.js" ) . size ( ) ;
Original file line number Diff line number Diff line change @@ -68,6 +68,14 @@ export default function register(bench) {
6868 for ( let i = 0 ; i < 10 ; i ++ ) ps . buffer ( ) ;
6969 } ) ;
7070
71+ bench . add ( "prefix-source: buffers()" , ( ) => {
72+ const ps = new sources . PrefixSource (
73+ "\t" ,
74+ new sources . RawSource ( fixtureCode ) ,
75+ ) ;
76+ for ( let i = 0 ; i < 10 ; i ++ ) ps . buffers ( ) ;
77+ } ) ;
78+
7179 bench . add ( "prefix-source: size()" , ( ) => {
7280 const ps = new sources . PrefixSource (
7381 "\t" ,
Original file line number Diff line number Diff line change @@ -43,6 +43,19 @@ export default function register(bench) {
4343 for ( let i = 0 ; i < 50 ; i ++ ) new sources . RawSource ( fixtureBuffer ) . buffer ( ) ;
4444 } ) ;
4545
46+ bench . add ( "raw-source: buffers() (from string)" , ( ) => {
47+ for ( let i = 0 ; i < 50 ; i ++ ) new sources . RawSource ( fixtureCode ) . buffers ( ) ;
48+ } ) ;
49+
50+ bench . add ( "raw-source: buffers() (from buffer)" , ( ) => {
51+ for ( let i = 0 ; i < 50 ; i ++ ) new sources . RawSource ( fixtureBuffer ) . buffers ( ) ;
52+ } ) ;
53+
54+ bench . add ( "raw-source: buffers() cached" , ( ) => {
55+ const src = new sources . RawSource ( fixtureBuffer ) ;
56+ for ( let i = 0 ; i < 500 ; i ++ ) src . buffers ( ) ;
57+ } ) ;
58+
4659 bench . add ( "raw-source: size()" , ( ) => {
4760 for ( let i = 0 ; i < 50 ; i ++ ) new sources . RawSource ( fixtureCode ) . size ( ) ;
4861 } ) ;
Original file line number Diff line number Diff line change @@ -96,6 +96,16 @@ export default function register(bench) {
9696 buildManyReplacements ( 1000 ) . buffer ( ) ;
9797 } ) ;
9898
99+ bench . add ( "replace-source: buffers() (no replacements)" , ( ) => {
100+ for ( let i = 0 ; i < 100 ; i ++ ) {
101+ new sources . ReplaceSource ( new sources . RawSource ( fixtureCode ) ) . buffers ( ) ;
102+ }
103+ } ) ;
104+
105+ bench . add ( "replace-source: buffers() (1000 small replacements)" , ( ) => {
106+ buildManyReplacements ( 1000 ) . buffers ( ) ;
107+ } ) ;
108+
99109 bench . add ( "replace-source: map() (no replacements)" , ( ) => {
100110 for ( let i = 0 ; i < 10 ; i ++ ) {
101111 new sources . ReplaceSource (
Original file line number Diff line number Diff line change @@ -44,6 +44,17 @@ export default function register(bench) {
4444 }
4545 } ) ;
4646
47+ bench . add ( "size-only-source: buffers() (throws)" , ( ) => {
48+ const src = new sources . SizeOnlySource ( 1024 ) ;
49+ for ( let i = 0 ; i < 100 ; i ++ ) {
50+ try {
51+ src . buffers ( ) ;
52+ } catch {
53+ // expected
54+ }
55+ }
56+ } ) ;
57+
4758 bench . add ( "size-only-source: map() (throws)" , ( ) => {
4859 const src = new sources . SizeOnlySource ( 1024 ) ;
4960 for ( let i = 0 ; i < 100 ; i ++ ) {
Original file line number Diff line number Diff line change @@ -66,6 +66,26 @@ export default function register(bench) {
6666 }
6767 } ) ;
6868
69+ bench . add ( "source-map-source: buffers() (from string)" , ( ) => {
70+ for ( let i = 0 ; i < 50 ; i ++ ) {
71+ new sources . SourceMapSource (
72+ fixtureCode ,
73+ "fixture.js" ,
74+ fixtureMap ,
75+ ) . buffers ( ) ;
76+ }
77+ } ) ;
78+
79+ bench . add ( "source-map-source: buffers() (from buffer)" , ( ) => {
80+ for ( let i = 0 ; i < 50 ; i ++ ) {
81+ new sources . SourceMapSource (
82+ fixtureBuffer ,
83+ "fixture.js" ,
84+ fixtureMap ,
85+ ) . buffers ( ) ;
86+ }
87+ } ) ;
88+
6989 bench . add ( "source-map-source: size()" , ( ) => {
7090 for ( let i = 0 ; i < 50 ; i ++ ) {
7191 new sources . SourceMapSource ( fixtureCode , "fixture.js" , fixtureMap ) . size ( ) ;
Original file line number Diff line number Diff line change @@ -46,6 +46,9 @@ class Source {
4646 throw new Error ( "Abstract" ) ;
4747 }
4848
49+ /**
50+ * @returns {Buffer } buffer
51+ */
4952 buffer ( ) {
5053 const source = this . source ( ) ;
5154 if ( Buffer . isBuffer ( source ) ) return source ;
@@ -56,7 +59,9 @@ class Source {
5659 * @returns {Buffer[] } buffers
5760 */
5861 buffers ( ) {
59- return [ this . buffer ( ) ] ;
62+ const source = this . source ( ) ;
63+ if ( Buffer . isBuffer ( source ) ) return [ source ] ;
64+ return [ Buffer . from ( source , "utf8" ) ] ;
6065 }
6166
6267 size ( ) {
Original file line number Diff line number Diff line change @@ -86,4 +86,17 @@ describe("source", () => {
8686 expect ( buffers ) . toHaveLength ( 1 ) ;
8787 expect ( buffers [ 0 ] ) . toEqual ( Buffer . from ( "dummy" , "utf8" ) ) ;
8888 } ) ;
89+
90+ it ( "should return the buffer directly from buffers() when source is a buffer" , ( ) => {
91+ const buffer = Buffer . from ( [ 1 , 2 , 3 ] ) ;
92+ class DummySource extends Source {
93+ source ( ) {
94+ return buffer ;
95+ }
96+ }
97+ const source = new DummySource ( ) ;
98+ const buffers = source . buffers ( ) ;
99+ expect ( buffers ) . toHaveLength ( 1 ) ;
100+ expect ( buffers [ 0 ] ) . toBe ( buffer ) ;
101+ } ) ;
89102} ) ;
You can’t perform that action at this time.
0 commit comments