2023-08-25 08:00:51 -05:00
|
|
|
import { createRequire } from 'node:module';
|
|
|
|
import path from 'node:path';
|
2023-03-01 03:46:06 -05:00
|
|
|
|
2023-08-25 08:00:51 -05:00
|
|
|
const astroPkgPath = createRequire(import.meta.url).resolve('astro/package.json');
|
|
|
|
|
|
|
|
export const astroBin = path.resolve(astroPkgPath, '../astro.js');
|
2023-07-10 10:43:01 -05:00
|
|
|
|
|
|
|
/** @typedef {{ avg: number, stdev: number, max: number }} Stat */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {number[]} numbers
|
|
|
|
* @returns {Stat}
|
|
|
|
*/
|
|
|
|
export function calculateStat(numbers) {
|
|
|
|
const avg = numbers.reduce((a, b) => a + b, 0) / numbers.length;
|
|
|
|
const stdev = Math.sqrt(
|
2024-11-06 07:33:14 -05:00
|
|
|
numbers.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / numbers.length,
|
2023-07-10 10:43:01 -05:00
|
|
|
);
|
|
|
|
const max = Math.max(...numbers);
|
|
|
|
return { avg, stdev, max };
|
|
|
|
}
|
2024-12-03 12:03:24 -05:00
|
|
|
|
|
|
|
export async function makeProject(name) {
|
|
|
|
console.log('Making project:', name);
|
|
|
|
const projectDir = new URL(`../projects/${name}/`, import.meta.url);
|
|
|
|
|
|
|
|
const makeProjectMod = await import(`../make-project/${name}.js`);
|
|
|
|
await makeProjectMod.run(projectDir);
|
|
|
|
|
|
|
|
console.log('Finished making project:', name);
|
|
|
|
return projectDir;
|
|
|
|
}
|