Skip to content

Commit

Permalink
Use "top-level-await"
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Mar 30, 2022
1 parent 3ec1262 commit c49e9ad
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 117 deletions.
11 changes: 10 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ const { isCI } = require("ci-info");
module.exports = {
root: true,
env: {
es2021: true,
es2022: true,
node: true,
},
parserOptions: {
ecmaVersion: "latest",
},
reportUnusedDisableDirectives: true,
extends: ["eslint:recommended", "prettier"],
plugins: [
Expand Down Expand Up @@ -167,6 +170,12 @@ module.exports = {
"no-console": "off",
},
},
{
files: ["scripts/**/*.mjs"],
rules: {
"unicorn/prefer-top-level-await": "error",
},
},
{
files: [
"**/*.mjs",
Expand Down
5 changes: 1 addition & 4 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
overrides:
- files: "**/*.{js,mjs}"
options:
parser: meriyah
{}
24 changes: 11 additions & 13 deletions scripts/build-website.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -86,19 +86,17 @@ async function buildPlaygroundFiles() {
);
}

(async () => {
if (IS_PULL_REQUEST) {
console.log("Building prettier...");
await buildPrettier();
}
if (IS_PULL_REQUEST) {
console.log("Building prettier...");
await buildPrettier();
}

console.log("Preparing files for playground...");
await buildPlaygroundFiles();
console.log("Preparing files for playground...");
await buildPlaygroundFiles();

// --- Site ---
console.log("Installing website dependencies...");
await runYarn("install", [], { cwd: WEBSITE_DIR });
// --- Site ---
console.log("Installing website dependencies...");
await runYarn("install", [], { cwd: WEBSITE_DIR });

console.log("Building website...");
await runYarn("build", [], { cwd: WEBSITE_DIR });
})();
console.log("Building website...");
await runYarn("build", [], { cwd: WEBSITE_DIR });
21 changes: 3 additions & 18 deletions scripts/build/build.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,6 @@ import saveLicenses from "./save-licenses.mjs";

const { require } = createEsmUtils(import.meta);

// Errors in promises should be fatal.
const loggedErrors = new Set();
process.on("unhandledRejection", (err) => {
// No need to print it twice.
if (!loggedErrors.has(err)) {
console.error(err);
}
process.exit(1);
});

const statusConfig = [
{ color: "bgGreen", text: "DONE" },
{ color: "bgRed", text: "FAIL" },
Expand Down Expand Up @@ -147,16 +137,11 @@ async function createBundle(bundleConfig, options) {
}
} catch (error) {
console.log(status.FAIL + "\n");
handleError(error);
console.error(error);
throw error;
}
}

function handleError(error) {
loggedErrors.add(error);
console.error(error);
throw error;
}

async function preparePackage() {
const packageJson = await readJson(path.join(PROJECT_ROOT, "package.json"));
packageJson.bin = "./bin-prettier.js";
Expand Down Expand Up @@ -270,7 +255,7 @@ async function run(params) {
}
}

run(
await run(
minimist(process.argv.slice(2), {
boolean: [
"playground",
Expand Down
15 changes: 5 additions & 10 deletions scripts/check-deps.mjs
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
import fs from "node:fs/promises";
import chalk from "chalk";

(async () => {
const packageJson = JSON.parse(
await fs.readFile(new URL("../package.json", import.meta.url))
);
const packageJson = JSON.parse(
await fs.readFile(new URL("../package.json", import.meta.url))
);

validateDependencyObject(packageJson.dependencies);
validateDependencyObject(packageJson.devDependencies);
})().catch((error) => {
console.error(error);
process.exit(1);
});
validateDependencyObject(packageJson.dependencies);
validateDependencyObject(packageJson.devDependencies);

function validateDependencyObject(object) {
for (const key of Object.keys(object)) {
Expand Down
87 changes: 41 additions & 46 deletions scripts/clean-cspell.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,55 +15,50 @@ const runSpellcheck = (options) => {
return execa("yarn", [...yarnArgs, "lint:spellcheck", ...args], execaOptions);
};

(async () => {
console.log("Empty words ...");
const config = JSON.parse(await fs.readFile(CSPELL_CONFIG_FILE));
const original = config.words;
await updateConfig({ ...config, words: [] });
console.log("Empty words ...");
const config = JSON.parse(await fs.readFile(CSPELL_CONFIG_FILE));
const original = config.words;
await updateConfig({ ...config, words: [] });

console.log("Running spellcheck with empty words ...");
const { stdout } = await runSpellcheck({
yarnArgs: ["--silent"],
args: ["--words-only", "--unique"],
execaOptions: { reject: false },
});
console.log("Running spellcheck with empty words ...");
const { stdout } = await runSpellcheck({
yarnArgs: ["--silent"],
args: ["--words-only", "--unique"],
execaOptions: { reject: false },
});

const words = stdout
.split("\n")
// Remove upper case word, if lower case one already exists
.filter((word, _, words) => {
const lowerCased = word.toLowerCase();
return lowerCased === word || !words.includes(lowerCased);
})
// Compare function from https://github.com/streetsidesoftware/vscode-spell-checker/blob/2fde3bc5c658ee51da5a56580aa1370bf8174070/packages/client/src/settings/CSpellSettings.ts#L78
.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
config.words = words;
const words = stdout
.split("\n")
// Remove upper case word, if lower case one already exists
.filter((word, _, words) => {
const lowerCased = word.toLowerCase();
return lowerCased === word || !words.includes(lowerCased);
})
// Compare function from https://github.com/streetsidesoftware/vscode-spell-checker/blob/2fde3bc5c658ee51da5a56580aa1370bf8174070/packages/client/src/settings/CSpellSettings.ts#L78
.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
config.words = words;

const removed = original.filter((word) => !words.includes(word));
if (removed.length > 0) {
console.log(
`${removed.length} words removed: \n${removed
.map((word) => ` - ${word}`)
.join("\n")}`
);
}
const added = words.filter((word) => !original.includes(word));
if (added.length > 0) {
console.log(
`${added.length} words added: \n${added
.map((word) => ` - ${word}`)
.join("\n")}`
);
}
const removed = original.filter((word) => !words.includes(word));
if (removed.length > 0) {
console.log(
`${removed.length} words removed: \n${removed
.map((word) => ` - ${word}`)
.join("\n")}`
);
}
const added = words.filter((word) => !original.includes(word));
if (added.length > 0) {
console.log(
`${added.length} words added: \n${added
.map((word) => ` - ${word}`)
.join("\n")}`
);
}

console.log("Updating words ...");
await updateConfig(config);
console.log("Updating words ...");
await updateConfig(config);

console.log("Running spellcheck with new words ...");
await runSpellcheck({ execaOptions: { stdout: "inherit" } });
console.log("Running spellcheck with new words ...");
await runSpellcheck({ execaOptions: { stdout: "inherit" } });

console.log("CSpell config file updated.");
})().catch((error) => {
console.error(error);
process.exit(1);
});
console.log("CSpell config file updated.");
46 changes: 22 additions & 24 deletions scripts/generate-changelog.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,34 +18,32 @@ import { CHANGELOG_CATEGORIES } from "./utils/changelog-categories.mjs";

const { __dirname } = createEsmUtils(import.meta);

(async () => {
const prNumberPrompt = new enquirer.NumberPrompt({
message: "Input your Pull Request number:",
});
const prNumber = await prNumberPrompt.run();

const categoryPrompt = new enquirer.AutoComplete({
message: "Input category of your Pull Request:",
limit: CHANGELOG_CATEGORIES.length,
// The array passed to `choices` will be broken, so copy it.
choices: [...CHANGELOG_CATEGORIES],
});
const category = (await categoryPrompt.run()).trim();

if (!prNumber || !category) {
throw new Error("Two args are required.");
}
assertCategory(category);
const prNumberPrompt = new enquirer.NumberPrompt({
message: "Input your Pull Request number:",
});
const prNumber = await prNumberPrompt.run();

const categoryPrompt = new enquirer.AutoComplete({
message: "Input category of your Pull Request:",
limit: CHANGELOG_CATEGORIES.length,
// The array passed to `choices` will be broken, so copy it.
choices: [...CHANGELOG_CATEGORIES],
});
const category = (await categoryPrompt.run()).trim();

if (!prNumber || !category) {
throw new Error("Two args are required.");
}
assertCategory(category);

const { title, user } = await getPr(prNumber);
const { title, user } = await getPr(prNumber);

const newChangelog = await createChangelog(title, user, prNumber, category);
const newChangelog = await createChangelog(title, user, prNumber, category);

const changelogPath = await addNewChangelog(prNumber, category, newChangelog);
const changelogPath = await addNewChangelog(prNumber, category, newChangelog);

const relativePath = path.relative(path.join(__dirname, ".."), changelogPath);
console.log("Generated changelog file: " + relativePath);
})();
const relativePath = path.relative(path.join(__dirname, ".."), changelogPath);
console.log("Generated changelog file: " + relativePath);

/**
* @param {number} prNumber
Expand Down
2 changes: 1 addition & 1 deletion scripts/vendors/bundle-vendors.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,4 @@ async function main() {
console.log("`README.md` file saved");
}

main();
await main();

0 comments on commit c49e9ad

Please sign in to comment.