@@ -29,7 +29,7 @@ export async function exportBlocks(block: Block, factory: BlockFactory, file: st
29
29
30
30
// For each `@block` expression, read in the block file, parse and
31
31
// push to block references Promise array.
32
- root . walkAtRules ( BLOCK_EXPORT , async ( atRule : postcss . AtRule ) => {
32
+ root . walkAtRules ( BLOCK_EXPORT , ( atRule : postcss . AtRule ) => {
33
33
let exports = atRule . params ;
34
34
35
35
let [ exportList = "" , blockPath = "" ] = exports . split ( FROM_EXPR ) ;
@@ -50,54 +50,63 @@ export async function exportBlocks(block: Block, factory: BlockFactory, file: st
50
50
51
51
// Validate our imported block name is a valid CSS identifier.
52
52
const blockNames = parseBlockNames ( exportList , ! ! blockPath ) ;
53
- const exportPromise = srcBlockPromise . then ( ( srcBlock ) => {
54
- for ( let remoteName of Object . keys ( blockNames ) ) {
55
- if ( remoteNames . has ( remoteName ) ) {
56
- block . addError ( new errors . InvalidBlockSyntax (
57
- `Cannot have duplicate Block export of same name: "${ remoteName } ".` ,
58
- sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
59
- ) ) ;
60
- } else {
61
- let localName = blockNames [ remoteName ] ;
62
- if ( ! CLASS_NAME_IDENT . test ( localName ) ) {
63
- block . addError ( new errors . InvalidBlockSyntax (
64
- `Illegal block name in export. "${ localName } " is not a legal CSS identifier.` ,
65
- sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
66
- ) ) ;
67
- }
68
- else if ( ! CLASS_NAME_IDENT . test ( remoteName ) ) {
69
- block . addError ( new errors . InvalidBlockSyntax (
70
- `Illegal block name in import. "${ remoteName } " is not a legal CSS identifier.` ,
71
- sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
72
- ) ) ;
73
- }
74
- else if ( localName === DEFAULT_EXPORT && remoteName === DEFAULT_EXPORT ) {
53
+ const exportPromise = srcBlockPromise . then (
54
+ ( srcBlock ) => {
55
+ for ( let remoteName of Object . keys ( blockNames ) ) {
56
+ if ( remoteNames . has ( remoteName ) ) {
75
57
block . addError ( new errors . InvalidBlockSyntax (
76
- `Unnecessary re- export of default Block .` ,
58
+ `Cannot have duplicate Block export of same name: " ${ remoteName } " .` ,
77
59
sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
78
60
) ) ;
79
- }
61
+ } else {
62
+ let localName = blockNames [ remoteName ] ;
63
+ if ( ! CLASS_NAME_IDENT . test ( localName ) ) {
64
+ block . addError ( new errors . InvalidBlockSyntax (
65
+ `Illegal block name in export. "${ localName } " is not a legal CSS identifier.` ,
66
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
67
+ ) ) ;
68
+ }
69
+ else if ( ! CLASS_NAME_IDENT . test ( remoteName ) ) {
70
+ block . addError ( new errors . InvalidBlockSyntax (
71
+ `Illegal block name in import. "${ remoteName } " is not a legal CSS identifier.` ,
72
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
73
+ ) ) ;
74
+ }
75
+ else if ( localName === DEFAULT_EXPORT && remoteName === DEFAULT_EXPORT ) {
76
+ block . addError ( new errors . InvalidBlockSyntax (
77
+ `Unnecessary re-export of default Block.` ,
78
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
79
+ ) ) ;
80
+ }
80
81
81
- else if ( RESERVED_BLOCK_NAMES . has ( remoteName ) ) {
82
- block . addError ( new errors . InvalidBlockSyntax (
83
- `Cannot export "${ localName } " as reserved word "${ remoteName } "` ,
84
- sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
85
- ) ) ;
86
- }
82
+ else if ( RESERVED_BLOCK_NAMES . has ( remoteName ) ) {
83
+ block . addError ( new errors . InvalidBlockSyntax (
84
+ `Cannot export "${ localName } " as reserved word "${ remoteName } "` ,
85
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
86
+ ) ) ;
87
+ }
87
88
88
- let referencedBlock = srcBlock . getReferencedBlock ( localName ) ;
89
- if ( ! referencedBlock ) {
90
- block . addError ( new errors . InvalidBlockSyntax (
91
- `Cannot export Block "${ localName } ". No Block named "${ localName } " in "${ file } ".` ,
92
- sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
93
- ) ) ;
94
- } else {
95
- // Save exported blocks
96
- block . addBlockExport ( remoteName , referencedBlock ) ;
89
+ let referencedBlock = srcBlock . getReferencedBlock ( localName ) ;
90
+ if ( ! referencedBlock ) {
91
+ block . addError ( new errors . InvalidBlockSyntax (
92
+ `Cannot export Block "${ localName } ". No Block named "${ localName } " in "${ file } ".` ,
93
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
94
+ ) ) ;
95
+ } else {
96
+ // Save exported blocks
97
+ block . addBlockExport ( remoteName , referencedBlock ) ;
98
+ }
97
99
}
98
100
}
101
+ } ,
102
+ ( error ) => {
103
+ block . addError ( new errors . CascadingError (
104
+ `Error in exported block "${ blockPath } "` ,
105
+ error ,
106
+ sourceRange ( factory . configuration , block . stylesheet , file , atRule ) ,
107
+ ) ) ;
99
108
}
100
- } ) ;
109
+ ) ;
101
110
102
111
exportPromises . push ( exportPromise ) ;
103
112
0 commit comments