summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-x.github/scripts/announce.mjs64
-rw-r--r--.github/scripts/bundle-size.mjs52
-rw-r--r--.github/scripts/utils.mjs86
-rw-r--r--biome.jsonc20
-rw-r--r--scripts/deps/update-example-versions.js2
5 files changed, 114 insertions, 110 deletions
diff --git a/.github/scripts/announce.mjs b/.github/scripts/announce.mjs
index 346e0f112..27a3c7101 100755
--- a/.github/scripts/announce.mjs
+++ b/.github/scripts/announce.mjs
@@ -18,34 +18,34 @@ const descriptors = [
'updates',
];
const verbs = [
- "just went out!",
- "just launched!",
- "now available!",
- "in the wild!",
- "now live!",
- "hit the registry!",
- "to share!",
- "for you!",
- "for y’all! 🤠",
- "comin’ your way!",
- "comin’ atcha!",
- "comin’ in hot!",
- "freshly minted on the blockchain! (jk)",
- "[is] out (now with 100% more reticulated splines!)",
- "(as seen on TV!)",
- "just dropped!",
- "– artisanally hand-crafted just for you.",
- "– oh happy day!",
- "– enjoy!",
- "now out. Be the first on your block to download!",
- "made with love 💕",
- "[is] out! Our best [version] yet!",
- "[is] here. DOWNLOAD! DOWNLOAD! DOWNLOAD!",
- "... HUZZAH!",
- "[has] landed!",
- "landed! The internet just got a little more fun.",
- "– from our family to yours.",
- "– go forth and build!"
+ 'just went out!',
+ 'just launched!',
+ 'now available!',
+ 'in the wild!',
+ 'now live!',
+ 'hit the registry!',
+ 'to share!',
+ 'for you!',
+ 'for y’all! 🤠',
+ 'comin’ your way!',
+ 'comin’ atcha!',
+ 'comin’ in hot!',
+ 'freshly minted on the blockchain! (jk)',
+ '[is] out (now with 100% more reticulated splines!)',
+ '(as seen on TV!)',
+ 'just dropped!',
+ '– artisanally hand-crafted just for you.',
+ '– oh happy day!',
+ '– enjoy!',
+ 'now out. Be the first on your block to download!',
+ 'made with love 💕',
+ '[is] out! Our best [version] yet!',
+ '[is] here. DOWNLOAD! DOWNLOAD! DOWNLOAD!',
+ '... HUZZAH!',
+ '[has] landed!',
+ 'landed! The internet just got a little more fun.',
+ '– from our family to yours.',
+ '– go forth and build!',
];
const extraVerbs = [
'new',
@@ -72,7 +72,7 @@ const plurals = new Map([
function pluralize(text) {
return text.replace(/(\[([^\]]+)\])/gm, (_, _full, match) =>
- plurals.has(match) ? plurals.get(match) : `${match}s`
+ plurals.has(match) ? plurals.get(match) : `${match}s`,
);
}
@@ -91,7 +91,7 @@ async function generatePackageMap() {
const pkgFile = fileURLToPath(new URL(pkg, packageRoot));
const content = await readFile(pkgFile).then((res) => JSON.parse(res.toString()));
packageMap.set(content.name, `./packages/${pkg.replace('/package.json', '')}`);
- })
+ }),
);
}
@@ -110,7 +110,7 @@ async function generateMessage() {
version,
url: new URL(`${p}/CHANGELOG.md#${version.replace(/\./g, '')}`, baseUrl).toString(),
};
- })
+ }),
);
const emoji = item(emojis);
@@ -122,7 +122,7 @@ async function generateMessage() {
if (packages.length === 1) {
const { name, version, url } = packages[0];
message += `${emoji} \`${name}@${version}\` ${singularlize(
- verb
+ verb,
)}\nRead the [release notes →](<${url}>)\n`;
} else {
message += `${emoji} Some ${descriptor} ${pluralize(verb)}\n\n`;
diff --git a/.github/scripts/bundle-size.mjs b/.github/scripts/bundle-size.mjs
index 690d6e928..b5ef31b48 100644
--- a/.github/scripts/bundle-size.mjs
+++ b/.github/scripts/bundle-size.mjs
@@ -4,15 +4,15 @@ import { existsSync } from 'node:fs';
const CLIENT_RUNTIME_PATH = 'packages/astro/src/runtime/client/';
function formatBytes(bytes, decimals = 2) {
- if (bytes === 0) return '0 B';
+ if (bytes === 0) return '0 B';
- const k = 1024;
- const dm = decimals < 0 ? 0 : decimals;
- const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+ const k = 1024;
+ const dm = decimals < 0 ? 0 : decimals;
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
- const i = Math.floor(Math.log(bytes) / Math.log(k));
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
- return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
export default async function checkBundleSize({ github, context }) {
@@ -24,7 +24,7 @@ export default async function checkBundleSize({ github, context }) {
pull_number: PR_NUM,
});
const clientRuntimeFiles = files.filter((file) => {
- return file.filename.startsWith(CLIENT_RUNTIME_PATH) && file.status !== 'removed'
+ return file.filename.startsWith(CLIENT_RUNTIME_PATH) && file.status !== 'removed';
});
if (clientRuntimeFiles.length === 0) return;
@@ -35,17 +35,24 @@ export default async function checkBundleSize({ github, context }) {
const output = await bundle(clientRuntimeFiles);
for (let [filename, { oldSize, newSize, sourceFile }] of Object.entries(output)) {
- filename = ['idle', 'load', 'media', 'only', 'visible'].includes(filename) ? `client:${filename}` : filename;
- const prefix = (newSize - oldSize) === 0 ? '' : (newSize - oldSize) > 0 ? '+ ' : '- ';
+ filename = ['idle', 'load', 'media', 'only', 'visible'].includes(filename)
+ ? `client:${filename}`
+ : filename;
+ const prefix = newSize - oldSize === 0 ? '' : newSize - oldSize > 0 ? '+ ' : '- ';
const change = `${prefix}${formatBytes(newSize - oldSize)}`;
- table.push(`| [\`${filename}\`](https://github.com/${context.repo.owner}/${context.repo.repo}/tree/${context.payload.pull_request.head.ref}/${sourceFile}) | ${formatBytes(oldSize)} | ${formatBytes(newSize)} | ${change} |`);
+ table.push(
+ `| [\`${filename}\`](https://github.com/${context.repo.owner}/${context.repo.repo}/tree/${context.payload.pull_request.head.ref}/${sourceFile}) | ${formatBytes(oldSize)} | ${formatBytes(newSize)} | ${change} |`,
+ );
}
const { data: comments } = await github.rest.issues.listComments({
...context.repo,
- issue_number: PR_NUM
- })
- const comment = comments.find(comment => comment.user.login === 'github-actions[bot]' && comment.body.includes('Bundle Size Check'));
+ issue_number: PR_NUM,
+ });
+ const comment = comments.find(
+ (comment) =>
+ comment.user.login === 'github-actions[bot]' && comment.body.includes('Bundle Size Check'),
+ );
const method = comment ? 'updateComment' : 'createComment';
const payload = comment ? { comment_id: comment.id } : { issue_number: PR_NUM };
await github.rest.issues[method]({
@@ -60,9 +67,11 @@ ${table.join('\n')}`,
}
async function bundle(files) {
-
const { metafile } = await build({
- entryPoints: [...files.map(({ filename }) => filename), ...files.map(({ filename }) => `main/${filename}`).filter(f => existsSync(f))],
+ entryPoints: [
+ ...files.map(({ filename }) => filename),
+ ...files.map(({ filename }) => `main/${filename}`).filter((f) => existsSync(f)),
+ ],
bundle: true,
minify: true,
sourcemap: false,
@@ -70,17 +79,24 @@ async function bundle(files) {
outdir: 'out',
external: ['astro:*', 'aria-query', 'axobject-query'],
metafile: true,
- })
+ });
return Object.entries(metafile.outputs).reduce((acc, [filename, info]) => {
filename = filename.slice('out/'.length);
if (filename.startsWith('main/')) {
filename = filename.slice('main/'.length).replace(CLIENT_RUNTIME_PATH, '').replace('.js', '');
const oldSize = info.bytes;
- return Object.assign(acc, { [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, { oldSize }) });
+ return Object.assign(acc, {
+ [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, { oldSize }),
+ });
}
filename = filename.replace(CLIENT_RUNTIME_PATH, '').replace('.js', '');
const newSize = info.bytes;
- return Object.assign(acc, { [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, { newSize, sourceFile: Object.keys(info.inputs).find(src => src.endsWith('.ts')) }) });
+ return Object.assign(acc, {
+ [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, {
+ newSize,
+ sourceFile: Object.keys(info.inputs).find((src) => src.endsWith('.ts')),
+ }),
+ });
}, {});
}
diff --git a/.github/scripts/utils.mjs b/.github/scripts/utils.mjs
index da5befc2c..9aaa383d8 100644
--- a/.github/scripts/utils.mjs
+++ b/.github/scripts/utils.mjs
@@ -1,59 +1,53 @@
-import * as fs from 'node:fs'
-import * as os from 'node:os'
-import * as crypto from 'node:crypto'
+import * as fs from 'node:fs';
+import * as os from 'node:os';
+import * as crypto from 'node:crypto';
/** Based on https://github.com/actions/toolkit/blob/4e3b068ce116d28cb840033c02f912100b4592b0/packages/core/src/file-command.ts */
export function setOutput(key, value) {
- const filePath = process.env['GITHUB_OUTPUT'] || ''
- if (filePath) {
- return issueFileCommand('OUTPUT', prepareKeyValueMessage(key, value))
- }
- process.stdout.write(os.EOL)
+ const filePath = process.env['GITHUB_OUTPUT'] || '';
+ if (filePath) {
+ return issueFileCommand('OUTPUT', prepareKeyValueMessage(key, value));
+ }
+ process.stdout.write(os.EOL);
}
function issueFileCommand(command, message) {
- const filePath = process.env[`GITHUB_${command}`]
- if (!filePath) {
- throw new Error(
- `Unable to find environment variable for file command ${command}`
- )
- }
- if (!fs.existsSync(filePath)) {
- throw new Error(`Missing file at path: ${filePath}`)
- }
-
- fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {
- encoding: 'utf8'
- })
+ const filePath = process.env[`GITHUB_${command}`];
+ if (!filePath) {
+ throw new Error(`Unable to find environment variable for file command ${command}`);
+ }
+ if (!fs.existsSync(filePath)) {
+ throw new Error(`Missing file at path: ${filePath}`);
+ }
+
+ fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {
+ encoding: 'utf8',
+ });
}
function prepareKeyValueMessage(key, value) {
- const delimiter = `gh-delimiter-${crypto.randomUUID()}`
- const convertedValue = toCommandValue(value)
-
- // These should realistically never happen, but just in case someone finds a
- // way to exploit uuid generation let's not allow keys or values that contain
- // the delimiter.
- if (key.includes(delimiter)) {
- throw new Error(
- `Unexpected input: name should not contain the delimiter "${delimiter}"`
- )
- }
-
- if (convertedValue.includes(delimiter)) {
- throw new Error(
- `Unexpected input: value should not contain the delimiter "${delimiter}"`
- )
- }
-
- return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`
+ const delimiter = `gh-delimiter-${crypto.randomUUID()}`;
+ const convertedValue = toCommandValue(value);
+
+ // These should realistically never happen, but just in case someone finds a
+ // way to exploit uuid generation let's not allow keys or values that contain
+ // the delimiter.
+ if (key.includes(delimiter)) {
+ throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`);
+ }
+
+ if (convertedValue.includes(delimiter)) {
+ throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`);
+ }
+
+ return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;
}
function toCommandValue(input) {
- if (input === null || input === undefined) {
- return ''
- } else if (typeof input === 'string' || input instanceof String) {
- return input
- }
- return JSON.stringify(input)
+ if (input === null || input === undefined) {
+ return '';
+ } else if (typeof input === 'string' || input instanceof String) {
+ return input;
+ }
+ return JSON.stringify(input);
}
diff --git a/biome.jsonc b/biome.jsonc
index edd0ea871..adadd8f59 100644
--- a/biome.jsonc
+++ b/biome.jsonc
@@ -1,19 +1,13 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.3/schema.json",
"files": {
- "ignore": [
- "vendor",
- "**/dist/**",
- "**/smoke/**",
- "**/fixtures/**",
- "**/_temp-fixtures/**",
- "**/vendor/**",
- "**/.vercel/**",
- "benchmark/projects/",
- "benchmark/results/",
- "benchmark/bench/_template.js",
- ],
- "include": ["test/**", "e2e/**", "packages/**", "/scripts/**", "benchmark/bench"],
+ "ignore": ["**/smoke/**", "**/fixtures/**", "**/_temp-fixtures/**", "**/vendor/**"],
+ "include": ["test/**", "e2e/**", "packages/**", "scripts/**", "benchmark/bench"],
+ },
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true,
},
"formatter": {
"indentStyle": "tab",
diff --git a/scripts/deps/update-example-versions.js b/scripts/deps/update-example-versions.js
index 077c12b97..93b8b7140 100644
--- a/scripts/deps/update-example-versions.js
+++ b/scripts/deps/update-example-versions.js
@@ -26,7 +26,7 @@ for (const workspaceDir of workspaceDirs) {
const packageJson = await readAndParsePackageJson(packageJsonPath);
if (!packageJson) continue;
- if (packageJson.private === true) continue
+ if (packageJson.private === true) continue;
if (!packageJson.name) {
throw new Error(`${packageJsonPath} does not contain a "name" field.`);