Skip to content

Commit 311d380

Browse files
committed
chore: Refactor some promise chains into await statements.
1 parent 5e515e3 commit 311d380

File tree

4 files changed

+60
-67
lines changed

4 files changed

+60
-67
lines changed

Diff for: packages/@css-blocks/core/src/BlockParser/BlockParser.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ export class BlockParser {
4343
this.factory = factory;
4444
}
4545

46-
public parseSource(source: ParsedSource): Promise<Block> {
46+
public async parseSource(source: ParsedSource): Promise<Block> {
4747
let root = source.parseResult;
48-
49-
return this.parse(root, source.identifier, source.defaultName).then(block => {
50-
source.dependencies.forEach(block.addDependency);
51-
return block;
52-
});
48+
let block = await this.parse(root, source.identifier, source.defaultName);
49+
for (let dependency of source.dependencies) {
50+
block.addDependency(dependency);
51+
}
52+
return block;
5353
}
5454

5555
/**

Diff for: packages/@css-blocks/core/src/BlockParser/features/export-blocks.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,6 @@ export async function exportBlocks(block: Block, factory: BlockFactory, file: st
103103
});
104104

105105
// After all export promises have resolved, resolve the decorated Block.
106-
return Promise.all(exportPromises).then(() => block);
106+
await Promise.all(exportPromises);
107+
return block;
107108
}

Diff for: packages/@css-blocks/core/test/attribute-container-test.ts

+49-54
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,17 @@ import { setupImporting } from "./util/setupImporting";
1111

1212
@suite("Attribute container")
1313
export class AttributeContainerTest extends BEMProcessor {
14-
assertError(errorType: typeof cssBlocks.CssBlockError, message: string, promise: postcss.LazyResult) {
15-
return promise.then(
16-
() => {
17-
assert(false, `Error ${errorType.name} was not raised.`);
18-
},
19-
(reason) => {
20-
assert(reason instanceof errorType, reason.toString());
21-
assert.deepEqual(reason.message, message);
22-
});
14+
async assertError(errorType: typeof cssBlocks.CssBlockError, message: string, promise: postcss.LazyResult) {
15+
try {
16+
await promise;
17+
assert(false, `Error ${errorType.name} was not raised.`);
18+
} catch (reason) {
19+
assert(reason instanceof errorType, reason.toString());
20+
assert.deepEqual(reason.message, message);
21+
}
2322
}
2423

25-
@test "finds boolean attributes"() {
24+
@test async "finds boolean attributes"() {
2625
let { imports, importer, config, factory } = setupImporting();
2726
let filename = "foo/bar/a-block.css";
2827
imports.registerSource(
@@ -32,22 +31,21 @@ export class AttributeContainerTest extends BEMProcessor {
3231
.foo[state|small] { font-size: 5px; }`,
3332
);
3433

35-
return factory.getBlock(importer.identifier(null, filename, config)).then(block => {
36-
let attr = block.rootClass.getAttributeValue("[state|large]");
37-
typedAssert.isNotNull(attr).and((attr) => {
38-
assert.equal(attr.isPresenceRule, true);
39-
});
40-
let classObj = block.getClass("foo");
41-
typedAssert.isNotNull(classObj).and(classObj => {
42-
let classAttr = classObj.getAttributeValue("[state|small]");
43-
typedAssert.isNotNull(classAttr).and(classAttr => {
44-
assert.equal(classAttr.isPresenceRule, true);
45-
});
34+
let block = await factory.getBlock(importer.identifier(null, filename, config));
35+
let attr = block.rootClass.getAttributeValue("[state|large]");
36+
typedAssert.isNotNull(attr).and((attr) => {
37+
assert.equal(attr.isPresenceRule, true);
38+
});
39+
let classObj = block.getClass("foo");
40+
typedAssert.isNotNull(classObj).and(classObj => {
41+
let classAttr = classObj.getAttributeValue("[state|small]");
42+
typedAssert.isNotNull(classAttr).and(classAttr => {
43+
assert.equal(classAttr.isPresenceRule, true);
4644
});
4745
});
4846
}
4947

50-
@test "finds attribute groups"() {
48+
@test async "finds attribute groups"() {
5149
let { imports, importer, config, factory } = setupImporting();
5250
let filename = "foo/bar/a-block.css";
5351
imports.registerSource(
@@ -59,26 +57,24 @@ export class AttributeContainerTest extends BEMProcessor {
5957
.foo[state|mode=minimized] { display: block; max-height: 100px; }
6058
.foo[state|mode=expanded] { display: block; }`,
6159
);
62-
63-
return factory.getBlock(importer.identifier(null, filename, config)).then(block => {
64-
let sizeGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]");
65-
assert.equal(sizeGroup.length, 2);
66-
assert.includeMembers(sizeGroup.map(s => s.value), ["large", "small"]);
67-
let attrGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]", "large");
68-
assert.equal(attrGroup.length, 1);
69-
assert.includeMembers(attrGroup.map(s => s.value), ["large"]);
70-
let missingGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|asdf]");
71-
assert.equal(missingGroup.length, 0);
72-
let noAttr: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]", "tiny");
73-
assert.equal(noAttr.length, 0);
74-
typedAssert.isNotNull(block.getClass("foo")).and(classObj => {
75-
let modeGroup: Array<AttrValue> = classObj.getAttributeValues("[state|mode]");
76-
assert.equal(modeGroup.length, 3);
77-
assert.includeMembers(modeGroup.map(s => s.value), ["collapsed", "minimized", "expanded"]);
78-
});
60+
let block = await factory.getBlock(importer.identifier(null, filename, config));
61+
let sizeGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]");
62+
assert.equal(sizeGroup.length, 2);
63+
assert.includeMembers(sizeGroup.map(s => s.value), ["large", "small"]);
64+
let attrGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]", "large");
65+
assert.equal(attrGroup.length, 1);
66+
assert.includeMembers(attrGroup.map(s => s.value), ["large"]);
67+
let missingGroup: Array<AttrValue> = block.rootClass.getAttributeValues("[state|asdf]");
68+
assert.equal(missingGroup.length, 0);
69+
let noAttr: Array<AttrValue> = block.rootClass.getAttributeValues("[state|size]", "tiny");
70+
assert.equal(noAttr.length, 0);
71+
typedAssert.isNotNull(block.getClass("foo")).and(classObj => {
72+
let modeGroup: Array<AttrValue> = classObj.getAttributeValues("[state|mode]");
73+
assert.equal(modeGroup.length, 3);
74+
assert.includeMembers(modeGroup.map(s => s.value), ["collapsed", "minimized", "expanded"]);
7975
});
8076
}
81-
@test "resolves inherited attribute groups"() {
77+
@test async "resolves inherited attribute groups"() {
8278
let { imports, importer, config, factory } = setupImporting();
8379
let filename = "foo/bar/sub-block.block.css";
8480
imports.registerSource(
@@ -98,20 +94,19 @@ export class AttributeContainerTest extends BEMProcessor {
9894
.foo[state|mode=minimized] { display: block; max-height: 200px; }`,
9995
);
10096

101-
return factory.getBlock(importer.identifier(null, filename, config)).then(block => {
102-
let sizeGroup = block.rootClass.resolveAttributeValues("[state|size]");
103-
assert.equal(sizeGroup.size, 3);
104-
assert.includeMembers([...sizeGroup.keys()], ["large", "small", "tiny"]);
105-
typedAssert.isNotNull(block.getClass("foo")).and(classObj => {
106-
let modeGroup = classObj.resolveAttributeValues("[state|mode]");
107-
assert.equal(modeGroup.size, 3);
108-
typedAssert.isDefined(modeGroup).and(modeGroup => {
109-
typedAssert.isDefined(modeGroup.get("collapsed")).and(attr => {
110-
assert.equal(attr.block, block.base);
111-
});
112-
typedAssert.isDefined(modeGroup.get("minimized")).and(attr => {
113-
assert.equal(attr.block, block);
114-
});
97+
let block = await factory.getBlock(importer.identifier(null, filename, config));
98+
let sizeGroup = block.rootClass.resolveAttributeValues("[state|size]");
99+
assert.equal(sizeGroup.size, 3);
100+
assert.includeMembers([...sizeGroup.keys()], ["large", "small", "tiny"]);
101+
typedAssert.isNotNull(block.getClass("foo")).and(classObj => {
102+
let modeGroup = classObj.resolveAttributeValues("[state|mode]");
103+
assert.equal(modeGroup.size, 3);
104+
typedAssert.isDefined(modeGroup).and(modeGroup => {
105+
typedAssert.isDefined(modeGroup.get("collapsed")).and(attr => {
106+
assert.equal(attr.block, block.base);
107+
});
108+
typedAssert.isDefined(modeGroup.get("minimized")).and(attr => {
109+
assert.equal(attr.block, block);
115110
});
116111
});
117112
});

Diff for: packages/@css-blocks/jsx/src/Analyzer/visitors/importer.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,12 @@ export function importVisitor(
142142
}
143143

144144
// When block parsing is done, add to analysis object.
145-
res.then((block): Block => {
145+
let blockPromise = res.then((block): Block => {
146146
analysis.addBlock(localName, block);
147147
return block;
148-
})
149-
150-
// Failures handled upstream by Promise.all() in `parseWith` method. Swallow error.
151-
.catch(() => {});
148+
});
152149

153-
blockPromises.push(res);
150+
blockPromises.push(blockPromise);
154151

155152
},
156153

0 commit comments

Comments
 (0)