@@ -255,23 +255,31 @@ function readAtImport(
255255 addInputToPath ( options )
256256
257257 return Promise . resolve ( ) . then ( function ( ) {
258- if ( options . resolve ) {
259- return options . resolve ( parsedAtImport . uri , dir , options )
260- }
261- return resolveId ( parsedAtImport . uri , dir , options . path )
258+ var resolver = options . resolve ? options . resolve : resolveId
259+ return resolver ( parsedAtImport . uri , dir , options )
262260 } ) . then ( function ( resolved ) {
263- parsedAtImport . file = resolved
264- return readImportedContent (
265- result ,
266- parsedAtImport ,
267- assign ( { } , options ) ,
268- state ,
269- media ,
270- processor
271- )
261+ if ( ! Array . isArray ( resolved ) ) {
262+ resolved = [ resolved ]
263+ }
264+ return Promise . all ( resolved . map ( function ( file ) {
265+ return readImportedContent (
266+ result ,
267+ parsedAtImport ,
268+ file ,
269+ assign ( { } , options ) ,
270+ state ,
271+ media ,
272+ processor
273+ )
274+ } ) )
272275 } ) . then ( function ( ignored ) {
273276 compoundInstance ( parsedAtImport )
274- return ignored
277+ return ignored . reduce ( function ( ignored , instance ) {
278+ if ( instance ) {
279+ return ignored . concat ( instance )
280+ }
281+ return ignored
282+ } , [ ] )
275283 } ) . catch ( function ( err ) {
276284 result . warn ( err . message , { node : atRule } )
277285 } )
@@ -288,12 +296,12 @@ function readAtImport(
288296function readImportedContent (
289297 result ,
290298 parsedAtImport ,
299+ resolvedFilename ,
291300 options ,
292301 state ,
293302 media ,
294303 processor
295304) {
296- var resolvedFilename = parsedAtImport . file
297305 var atRule = parsedAtImport . node
298306 if ( options . skipDuplicates ) {
299307 // skip files already imported at the same scope
@@ -366,7 +374,15 @@ function readImportedContent(
366374 ) . then ( function ( ignored ) {
367375 return processor . process ( newStyles ) . then ( function ( newResult ) {
368376 result . messages = result . messages . concat ( newResult . messages )
369- parsedAtImport . styles = newStyles
377+ var nodes = parsedAtImport . importedNodes
378+ var importedNodes = newStyles . nodes
379+ if ( ! nodes ) {
380+ parsedAtImport . importedNodes = importedNodes
381+ }
382+ else if ( importedNodes . length ) {
383+ importedNodes [ 0 ] . raws . before = importedNodes [ 0 ] . raws . before || "\n"
384+ parsedAtImport . importedNodes = nodes . concat ( importedNodes )
385+ }
370386 return ignored
371387 } )
372388 } )
@@ -380,17 +396,13 @@ function readImportedContent(
380396 * @param {Object } newStyles
381397 */
382398function compoundInstance ( instance ) {
383- if (
384- ! instance . styles ||
385- ! instance . styles . nodes ||
386- ! instance . styles . nodes . length
387- ) {
399+ var nodes = instance . importedNodes
400+
401+ if ( ! nodes || ! nodes . length ) {
388402 instance . node . remove ( )
389403 return
390404 }
391405
392- var nodes = instance . styles . nodes
393-
394406 // save styles
395407 nodes . forEach ( function ( node ) {
396408 node . parent = undefined
0 commit comments