Skip to content

Commit f9b4f6d

Browse files
committed
perf: use sync fs IO
19.99s → 12.87s
1 parent a3d33a1 commit f9b4f6d

21 files changed

Lines changed: 82 additions & 82 deletions

‎index.mjs‎

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import fs from 'node:fs/promises';
1+
import fs from 'node:fs';
22
import path from 'node:path';
33
import { fileURLToPath } from 'node:url';
44
import jsesc from 'jsesc';
@@ -28,11 +28,11 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
2828

2929
const templatePath = path.resolve(__dirname, 'templates');
3030
const staticPath = path.resolve(__dirname, 'static');
31-
const compileReadMe = template(await fs.readFile(
31+
const compileReadMe = template(fs.readFileSync(
3232
path.resolve(templatePath, 'README.md'),
3333
'utf-8'
3434
));
35-
const compilePackage = template(await fs.readFile(
35+
const compilePackage = template(fs.readFileSync(
3636
path.resolve(templatePath, 'package.json'),
3737
'utf-8'
3838
));
@@ -42,7 +42,7 @@ const generateData = async (version) => {
4242
const dirMap = {};
4343
console.log('Generating data for Unicode v%s…', version);
4444
console.log('Parsing Unicode v%s categories…', version);
45-
utils.extend(dirMap, await utils.writeFiles({
45+
utils.extend(dirMap, utils.writeFiles({
4646
'version': version,
4747
'map': await parsers.parseDerivedGeneralCategory(version),
4848
'type': (category) => {
@@ -53,162 +53,162 @@ const generateData = async (version) => {
5353
},
5454
}));
5555
console.log('Parsing Unicode v%s `Bidi_Class`', version);
56-
utils.extend(dirMap, await utils.writeFiles({
56+
utils.extend(dirMap, utils.writeFiles({
5757
'version': version,
5858
'map': await parseBidiClass(version),
5959
'type': 'Bidi_Class',
6060
}));
6161
console.log('Parsing Unicode v%s `Script`…', version);
6262
const scriptsMap = await parsers.parseScripts(version);
63-
utils.extend(dirMap, await utils.writeFiles({
63+
utils.extend(dirMap, utils.writeFiles({
6464
'version': version,
6565
'map': scriptsMap,
6666
'type': 'Script',
6767
}));
6868
console.log('Parsing Unicode v%s `Script_Extensions`…', version);
69-
utils.extend(dirMap, await utils.writeFiles({
69+
utils.extend(dirMap, utils.writeFiles({
7070
'version': version,
7171
'map': await parseScriptExtensions(version, scriptsMap),
7272
'type': 'Script_Extensions',
7373
}));
7474
console.log('Parsing Unicode v%s properties…', version);
75-
utils.extend(dirMap, await utils.writeFiles({
75+
utils.extend(dirMap, utils.writeFiles({
7676
'version': version,
7777
'map': await parsers.parseProperties(version),
7878
'type': 'Binary_Property',
7979
}));
8080
console.log('Parsing Unicode v%s derived core properties…', version);
81-
utils.extend(dirMap, await utils.writeFiles({
81+
utils.extend(dirMap, utils.writeFiles({
8282
'version': version,
8383
'map': await parsers.parseDerivedCoreProperties(version),
8484
'type': 'Binary_Property',
8585
}));
8686
console.log('Parsing Unicode v%s derived binary properties…', version);
87-
utils.extend(dirMap, await utils.writeFiles({
87+
utils.extend(dirMap, utils.writeFiles({
8888
'version': version,
8989
'map': await parsers.parseDerivedBinaryProperties(version),
9090
'type': 'Binary_Property',
9191
}));
9292
console.log('Parsing Unicode v%s derived normalization properties…', version);
93-
utils.extend(dirMap, await utils.writeFiles({
93+
utils.extend(dirMap, utils.writeFiles({
9494
'version': version,
9595
'map': await parsers.parseDerivedNormalizationProperties(version),
9696
'type': 'Binary_Property',
9797
}));
9898
console.log('Parsing Unicode v%s composition exclusions…', version);
99-
utils.extend(dirMap, await utils.writeFiles({
99+
utils.extend(dirMap, utils.writeFiles({
100100
'version': version,
101101
'map': await parseCompositionExclusions(version),
102102
'type': 'Binary_Property',
103103
}));
104104
console.log('Parsing Unicode v%s `Case_Folding`…', version);
105-
utils.extend(dirMap, await utils.writeFiles({
105+
utils.extend(dirMap, utils.writeFiles({
106106
'version': version,
107107
'map': await parseCaseFolding(version),
108108
'type': 'Case_Folding',
109109
}));
110110
console.log('Parsing Unicode v%s `Block`…', version);
111-
utils.extend(dirMap, await utils.writeFiles({
111+
utils.extend(dirMap, utils.writeFiles({
112112
'version': version,
113113
'map': await parsers.parseBlocks(version),
114114
'type': 'Block',
115115
}));
116116
console.log('Parsing Unicode v%s `Bidi_Mirroring_Glyph`', version);
117-
utils.extend(dirMap, await utils.writeFiles({
117+
utils.extend(dirMap, utils.writeFiles({
118118
'version': version,
119119
'map': await parsers.parseMirroring(version),
120120
'type': 'Bidi_Mirroring_Glyph',
121121
}));
122122
console.log('Parsing Unicode v%s bidi brackets…', version);
123-
utils.extend(dirMap, await utils.writeFiles({
123+
utils.extend(dirMap, utils.writeFiles({
124124
'version': version,
125125
'map': await parseBidiBrackets(version),
126126
'type': 'Bidi_Paired_Bracket_Type',
127127
}));
128128
{
129129
const InPCName = +version.split('.')[0] >= 8 ? 'Indic_Positional_Category' : 'Indic_Matra_Category';
130130
console.log('Parsing Unicode v%s `%s`…', version, InPCName);
131-
utils.extend(dirMap, await utils.writeFiles({
131+
utils.extend(dirMap, utils.writeFiles({
132132
'version': version,
133133
'map': await parseIndicPositionalCategory(version),
134134
'type': InPCName,
135135
}));
136136
}
137137
console.log('Parsing Unicode v%s `Indic_Syllabic_Category`…', version);
138-
utils.extend(dirMap, await utils.writeFiles({
138+
utils.extend(dirMap, utils.writeFiles({
139139
'version': version,
140140
'map': await parseIndicSyllabicCategory(version),
141141
'type': 'Indic_Syllabic_Category',
142142
}));
143143
console.log('Parsing Unicode v%s `Line_Break`…', version);
144-
utils.extend(dirMap, await utils.writeFiles({
144+
utils.extend(dirMap, utils.writeFiles({
145145
'version': version,
146146
'map': await parseLineBreak(version),
147147
'type': 'Line_Break',
148148
}));
149149
console.log('Parsing Unicode v%s `Grapheme_Cluster_Break`…', version);
150-
utils.extend(dirMap, await utils.writeFiles({
150+
utils.extend(dirMap, utils.writeFiles({
151151
'version': version,
152152
'map': await parseGraphemeWordSentenceBreak(version, 'grapheme-cluster-break'),
153153
'type': 'Grapheme_Cluster_Break',
154154
}));
155155
console.log('Parsing Unicode v%s `Word_Break`…', version);
156-
utils.extend(dirMap, await utils.writeFiles({
156+
utils.extend(dirMap, utils.writeFiles({
157157
'version': version,
158158
'map': await parseGraphemeWordSentenceBreak(version, 'word-break'),
159159
'type': 'Word_Break',
160160
}));
161161
console.log('Parsing Unicode v%s `Sentence_Break`…', version);
162-
utils.extend(dirMap, await utils.writeFiles({
162+
utils.extend(dirMap, utils.writeFiles({
163163
'version': version,
164164
'map': await parseGraphemeWordSentenceBreak(version, 'sentence-break'),
165165
'type': 'Sentence_Break',
166166
}));
167167
console.log('Parsing Unicode v%s `Vertical_Orientation`…', version);
168-
utils.extend(dirMap, await utils.writeFiles({
168+
utils.extend(dirMap, utils.writeFiles({
169169
'version': version,
170170
'map': await parseVerticalOrientation(version),
171171
'type': 'Vertical_Orientation',
172172
}));
173173
console.log('Parsing Unicode v%s `Joining_Type`…', version);
174-
utils.extend(dirMap, await utils.writeFiles({
174+
utils.extend(dirMap, utils.writeFiles({
175175
'version': version,
176176
'map': await parseArabicShaping(version),
177177
'type': 'Joining_Type',
178178
}));
179179
console.log('Parsing Unicode v%s binary emoji properties…', version);
180-
utils.extend(dirMap, await utils.writeFiles({
180+
utils.extend(dirMap, utils.writeFiles({
181181
'version': version,
182182
'map': await parseEmoji(version),
183183
'type': 'Binary_Property',
184184
}));
185185
console.log('Parsing Unicode v%s emoji sequence properties…', version);
186-
utils.extend(dirMap, await utils.writeFiles({
186+
utils.extend(dirMap, utils.writeFiles({
187187
'version': version,
188188
'map': await parseEmojiSequences(version),
189189
'type': 'Sequence_Property',
190190
}));
191191
console.log('Parsing Unicode v%s `Names`…', version);
192-
utils.extend(dirMap, await utils.writeFiles({
192+
utils.extend(dirMap, utils.writeFiles({
193193
'version': version,
194194
'map': await parseNames(version),
195195
'type': 'Names',
196196
}));
197197
console.log('Parsing Unicode v%s Aliases…', version);
198-
utils.extend(dirMap, await utils.writeFiles({
198+
utils.extend(dirMap, utils.writeFiles({
199199
'version': version,
200200
'map': await parseNameAliases(version),
201201
'type': 'Names',
202202
'subType': 'name-aliases',
203203
}));
204204
console.log('Parsing Unicode v%s simple case mappings…', version);
205-
utils.extend(dirMap, await utils.writeFiles({
205+
utils.extend(dirMap, utils.writeFiles({
206206
'version': version,
207207
'map': await parseSimpleCaseMapping(version),
208208
'type': 'Simple_Case_Mapping',
209209
}));
210210
console.log('Parsing Unicode v%s `Special_Casing`…', version);
211-
utils.extend(dirMap, await utils.writeFiles({
211+
utils.extend(dirMap, utils.writeFiles({
212212
'version': version,
213213
'map': await parseSpecialCasing(version),
214214
'type': 'Special_Casing',
@@ -219,29 +219,29 @@ const generateData = async (version) => {
219219
dirMap[property] = dirMap[property].sort();
220220
}
221221
}
222-
await fs.writeFile(
222+
fs.writeFileSync(
223223
path.resolve(__dirname, `output/unicode-${version}/README.md`),
224224
compileReadMe({
225225
'version': version,
226226
'dirs': dirMap,
227227
'regenerateExample': '<%= set.toString() %>',
228228
})
229229
);
230-
await fs.writeFile(
230+
fs.writeFileSync(
231231
path.resolve(__dirname, `output/unicode-${version}/index.mjs`),
232232
compileIndex({ 'version': version, 'data': jsesc(dirMap) })
233233
);
234-
await fs.writeFile(
234+
fs.writeFileSync(
235235
path.resolve(__dirname, `output/unicode-${version}/index.d.mts`),
236236
Object.keys(dirMap)
237237
.map((key) => `export const ${key}: string[];`)
238238
.join('\n')
239239
);
240-
await fs.writeFile(
240+
fs.writeFileSync(
241241
path.resolve(__dirname, `output/unicode-${version}/package.json`),
242242
compilePackage({ 'version': version })
243243
);
244-
await fs.mkdir(
244+
fs.mkdirSync(
245245
path.resolve(__dirname, `output/unicode-${version}/.github/workflows`),
246246
{
247247
recursive: true,
@@ -258,7 +258,7 @@ const generateData = async (version) => {
258258
'decode-ranges.d.mts',
259259
];
260260
for (const file of staticFiles) {
261-
await fs.copyFile(
261+
fs.copyFileSync(
262262
path.resolve(staticPath, file),
263263
path.resolve(__dirname, `output/unicode-${version}/${file}`)
264264
);

‎scripts/download.mjs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import fs from 'node:fs/promises';
1+
import fs from 'node:fs';
22
import path from 'node:path';
33
import { fileURLToPath } from 'node:url';
44
import resources from '../data/resources.mjs';
@@ -17,7 +17,7 @@ const download = async (url, version, type) => {
1717
if (!res.ok) {
1818
throw new Error(`Failed to download ${url}: ${res.status} ${res.statusText}`);
1919
}
20-
await fs.writeFile(file, Buffer.from(await res.arrayBuffer()));
20+
fs.writeFileSync(file, Buffer.from(await res.arrayBuffer()));
2121
};
2222

2323
const parallelLimit = async (tasks, limit) => {

‎scripts/parse-arabic-shaping.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const findCanonicalName = (shortName) => {
1313
};
1414

1515
const parseArabicShaping = async (version) => {
16-
const source = await utils.readDataFile(version, 'arabic-shaping');
16+
const source = utils.readDataFile(version, 'arabic-shaping');
1717
if (!source) {
1818
return;
1919
}

‎scripts/parse-bidi-brackets.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const parseBidiBrackets = async (version) => {
1313
'Close': regenerate(),
1414
'None': regenerate().addRange(0, 0x10FFFF),
1515
};
16-
const source = await utils.readDataFile(version, 'bidi-brackets');
16+
const source = utils.readDataFile(version, 'bidi-brackets');
1717
if (!source) {
1818
return;
1919
}

‎scripts/parse-bidi-class.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import regenerate from 'regenerate';
55
const bidiAliases = valueAliases.get('Bidi_Class');
66

77
const parseBidiClass = async (version) => {
8-
const source = await utils.readDataFile(version, 'database');
8+
const source = utils.readDataFile(version, 'database');
99
if (!source) {
1010
return;
1111
}

‎scripts/parse-blocks-scripts-properties.mjs‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const initialMapForType = (type) => {
3333
*/
3434
const parseBlocksScriptsProperties = async (type, version) => {
3535
const map = initialMapForType(type);
36-
const source = await utils.readDataFile(version, type);
36+
const source = utils.readDataFile(version, type);
3737
if (!source) {
3838
return;
3939
}
@@ -106,7 +106,7 @@ const parseDerivedBinaryProperties = async (version) => {
106106
if (version === '3.1.1' || version === '3.1.0' || version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) {
107107
// Unicode <= 3.1.1 does not provide derived-binary-properties,
108108
// so we should derive Bidi_Mirrored from the UnicodeData.
109-
const source = await utils.readDataFile(version, 'database');
109+
const source = utils.readDataFile(version, 'database');
110110
if (!source) {
111111
return;
112112
}
@@ -137,7 +137,7 @@ const parseDerivedGeneralCategory = async (version) => {
137137
) {
138138
// Unicode <= 3.0.1 does not provide derived-general-category,
139139
// so we should derive General_Category from the UnicodeData.
140-
const source = await utils.readDataFile(version, 'database');
140+
const source = utils.readDataFile(version, 'database');
141141
if (!source) {
142142
return;
143143
}
@@ -257,7 +257,7 @@ const parseDerivedGeneralCategory = async (version) => {
257257

258258
const parseBlocks = async (version) => {
259259
if (version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) {
260-
const source = await utils.readDataFile(version, 'blocks');
260+
const source = utils.readDataFile(version, 'blocks');
261261
if (!source) {
262262
return;
263263
}
@@ -285,7 +285,7 @@ const parseProperties = async (version) => {
285285
version === '3.0.0' ||
286286
parseInt(version.split('.')[0], 10) < 3
287287
) {
288-
const source = await utils.readDataFile(version, 'properties');
288+
const source = utils.readDataFile(version, 'properties');
289289
if (!source) {
290290
return;
291291
}

‎scripts/parse-case-folding.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import utils from './utils.mjs';
22

33
const parseCaseFolding = async (version) => {
44
const caseFoldingMap = {};
5-
const source = await utils.readDataFile(version, 'case-folding');
5+
const source = utils.readDataFile(version, 'case-folding');
66
if (!source) {
77
return;
88
}

‎scripts/parse-composition-exclusions.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import regenerate from 'regenerate';
22
import utils from './utils.mjs';
33

44
const parseCompositionExclusions = async (version) => {
5-
const source = await utils.readDataFile(version, 'composition-exclusions');
5+
const source = utils.readDataFile(version, 'composition-exclusions');
66
if (!source) {
77
return;
88
}

‎scripts/parse-emoji-sequences.mjs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import utils from './utils.mjs';
22

33
const parseEmojiSequencesWithId = async ({ version, id }) => {
4-
const source = await utils.readDataFile(version, id);
4+
const source = utils.readDataFile(version, id);
55
if (!source) {
66
return;
77
}
@@ -47,7 +47,7 @@ const parseEmojiSequencesWithId = async ({ version, id }) => {
4747
};
4848

4949
const parseEmojiTestData = async ({ version }) => {
50-
const source = await utils.readDataFile(version, 'emoji-test');
50+
const source = utils.readDataFile(version, 'emoji-test');
5151
if (!source) {
5252
return;
5353
}

‎scripts/parse-emoji.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import utils from './utils.mjs';
22

33
const parseEmoji = async (version) => {
4-
const source = await utils.readDataFile(version, 'emoji');
4+
const source = utils.readDataFile(version, 'emoji');
55
if (!source) {
66
return;
77
}

0 commit comments

Comments
 (0)