Skip to content
This repository was archived by the owner on Aug 4, 2021. It is now read-only.

Commit f0b8010

Browse files
guybedfordlukastaegert
authored andcommitted
dataToEsm compact option
1 parent b669268 commit f0b8010

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/dataToEsm.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,32 @@ import makeLegalIdentifier from './makeLegalIdentifier';
22
import tosource from 'tosource';
33

44
// convert data object into separate named exports (and default)
5-
export default function dataToNamedExports ( obj ) {
5+
export default function dataToNamedExports ( obj, compact ) {
6+
const _ = compact ? '' : ' ';
7+
const nl = compact ? '' : '\n';
68
let output = '';
7-
let defaultExports = '\n';
9+
let defaultExports = compact ? '' : nl;
810
const usedLegalKeys = Object.create( null );
911
let index = 0;
1012
const keys = Object.keys( obj );
1113
for ( let i = 0; i < keys.length; i++ ) {
1214
const key = keys[i];
1315
const legalKey = makeLegalIdentifier( key );
14-
output += `export const ${ legalKey } = ${tosource( obj[key] )};\n`;
16+
let serialized = tosource( obj[key], null, compact ? false : ' ' );
17+
output += `export const ${ legalKey }${ _ }=${ _ }${ serialized };${ nl }`;
1518
while ( usedLegalKeys[legalKey + (index || '')] )
1619
index++;
1720
index = 0;
1821
usedLegalKeys[legalKey + ( index || '' )] = true;
1922
if ( defaultExports.length > 1 )
20-
defaultExports += ',\n';
23+
defaultExports += `,${ nl }`;
2124
if ( key === legalKey )
22-
defaultExports += ` ${ key }`;
25+
defaultExports += `${ _ }${ _ }${ key }`;
2326
else
24-
defaultExports += ` ${ `'${ key }'` }: ${ legalKey }`;
27+
defaultExports += `${ _ }${ _ }${ `'${ key }'` }:${ _ }${ legalKey }`;
2528
}
2629
if ( defaultExports.length > 3 )
27-
defaultExports += '\n';
28-
output += `export default {${ defaultExports }};`;
30+
defaultExports += nl;
31+
output += `export default${_}{${ defaultExports }};`;
2932
return output;
3033
};

test/test.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,16 +447,21 @@ describe( 'rollup-pluginutils', function () {
447447
var dataToEsm = utils.dataToEsm;
448448

449449
it( 'outputs treeshakable data', function () {
450-
assert.equal( dataToEsm({ some: 'data', another: 'data' }), 'export const some = "data";\nexport const another = "data";\nexport default {\n some,\n another\n};' );
450+
assert.equal( dataToEsm( { some: 'data', another: 'data' } ), 'export const some = "data";\nexport const another = "data";\nexport default {\n some,\n another\n};' );
451451
});
452452

453453
it( 'handles illegal identifiers', function () {
454-
assert.equal( dataToEsm({ '1': 'data', 'default': 'data' }), 'export const _1 = "data";\nexport const _default = "data";\nexport default {\n \'1\': _1,\n \'default\': _default\n};' );
454+
assert.equal( dataToEsm( { '1': 'data', 'default': 'data' } ), 'export const _1 = "data";\nexport const _default = "data";\nexport default {\n \'1\': _1,\n \'default\': _default\n};' );
455455
});
456456

457457
it( 'supports non-JSON data', function () {
458458
const date = new Date();
459-
assert.equal( dataToEsm({ inf: Infinity, date: date }), 'export const inf = Infinity;\nexport const date = new Date(' + date.getTime() + ');\nexport default {\n inf,\n date\n};' );
459+
assert.equal( dataToEsm( { inf: Infinity, date: date } ), 'export const inf = Infinity;\nexport const date = new Date(' + date.getTime() + ');\nexport default {\n inf,\n date\n};' );
460+
});
461+
462+
it( 'supports a compact argument', function () {
463+
assert.equal( dataToEsm( { some: 'data', another: 'data' }, true ), 'export const some="data";export const another="data";export default{some,another};' );
464+
assert.equal( dataToEsm( { some: { deep: { object: 'definition', here: 'here' } }, another: 'data' }, true ), 'export const some={deep:{object:"definition",here:"here"}};export const another="data";export default{some,another};' );
460465
});
461466
});
462467
});

0 commit comments

Comments
 (0)