Browse Source

ensure external modules stay in sequence

gh-669
Rich-Harris 9 years ago
parent
commit
884803d1f4
  1. 5
      src/Bundle.js
  2. 16
      src/utils/promise.js

5
src/Bundle.js

@ -10,6 +10,7 @@ import { load, makeOnwarn, resolveId } from './utils/defaults.js';
import getExportMode from './utils/getExportMode.js';
import getIndentString from './utils/getIndentString.js';
import { unixizePath } from './utils/normalizePlatform.js';
import { mapSequence } from './utils/promise.js';
import transform from './utils/transform.js';
import transformBundle from './utils/transformBundle.js';
import collapseSourcemaps from './utils/collapseSourcemaps.js';
@ -175,7 +176,7 @@ export default class Bundle {
}
fetchAllDependencies ( module ) {
const promises = module.sources.map( source => {
return mapSequence( module.sources, source => {
return this.resolveId( source, module.id )
.then( resolvedId => {
// If the `resolvedId` is supposed to be external, make it so.
@ -205,8 +206,6 @@ export default class Bundle {
}
});
});
return Promise.all( promises );
}
render ( options = {} ) {

16
src/utils/promise.js

@ -0,0 +1,16 @@
import Promise from 'es6-promise/lib/es6-promise/promise.js';
export function mapSequence ( array, fn ) {
let results = [];
let promise = Promise.resolve();
function next ( member, i ) {
return fn( member ).then( value => results[i] = value );
}
for ( let i = 0; i < array.length; i += 1 ) {
promise = promise.then( () => next( array[i], i ) );
}
return promise.then( () => results );
}
Loading…
Cancel
Save