From 48ab85b939a5e9d96e93e34d3812cfd8efd41fc8 Mon Sep 17 00:00:00 2001 From: Wingy Date: Sat, 17 Aug 2024 06:04:33 -0400 Subject: [PATCH] Use prettier --- .prettierrc.json | 4 ++ bun.lockb | Bin 2674 -> 3050 bytes package.json | 3 +- src/index.ts | 161 +++++++++++++++++++++++++---------------------- 4 files changed, 93 insertions(+), 75 deletions(-) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..2eed64c --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "semi": false, + "singleQuote": true +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 7f5780b360025fb85ff54da75851e87f02d8633c..be400ab830183b45346bb7a1ed9076c175e197a3 100755 GIT binary patch delta 789 zcmew)@=APyp62I|`iV>TzG!oLAnReXZ?D0p6XjuUn-J;c3!oZiAPvS7AF5AQVB}y7nykra&p2UnCXl>8c_pJglPcrnSB!RyX_GaX ztbs~c5}6>zF@R{GRbc%fHY=3R2Bbj%M1$l(03=VezR5e8N*ubgolSW8o^+kD-d8>K z*Ima6b8Z=*<&AtB?z#VWk79@UwM?V=1~&xX@_aF2Z#)0<;)*!6=l`1Y&CWmmnIw0& zOn7oGv&3XwW^YF3$(79ElQmd)C*K9~SSM?;gfp^DZe&RYc}4&hn81K!5C8_qU?lRd8@jKF4Op2MPiU4v-`RLkLJn zO$|AeKq0~c#2{rLx&x}zj&pJlyOuvt1RSBK*fjTg8#I35V2m@=Gt@I*1P zzRj^$fwOi4WlZ&q%=Ancu1x;TF3HsaOj97x!8uuu!+~oDlpDl7IfFw%9wO&ZQdy8% ute;exmz0^O4|Anna@OSY95S*nzP>J8O4nEq1WVGZCSTx?-n^FMC?f#u0KGi` delta 536 zcmaDQ{z+tlp61K93#&4D4wRZ^E)4d%vX;$2U76{8zX|)#?PrXt%eB}ZaWa4b+r)5r zraZQZA4PPy7#JGtfr3Dph8`fz4WusuX&xZm3>61bU@-AS0VCJsN=AD|kI6fMy z@(pI*$+j%sjLefeS;8lGu<%ZP3*@m*wq#A7oWM3^vJ2Zct_^HpgBgynO)h1(k^1)^ z0ziTwi$6f6S=c9^V>jb6V27yo0CAO+V9o%kWCmi8(?N6vRGA3J4)#ySf40)?LF10grqset!BC+%vnn+|O$W$I f%*jm8%TMESD5)$+E!Iye&6_O8t+ZK(Yab&3dqQpY diff --git a/package.json b/package.json index f471dfe..9e594b7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "devDependencies": { - "@types/bun": "^1.1.6" + "@types/bun": "^1.1.6", + "prettier": "^3.3.3" } } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 344aa34..d102cb8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,102 +5,115 @@ import { spawn } from 'child_process' const SOURCE_ROOTS = ['Core', 'Secret'] type RojoSourcemap = { - name: string - className: string - filePaths?: string[] - children?: RojoSourcemap[] + name: string + className: string + filePaths?: string[] + children?: RojoSourcemap[] } const sourcemapCache = new Map() function getSourcemap(root: string): Promise { - const cached = sourcemapCache.get(root) - if (cached) { - return Promise.resolve(cached) - } - return new Promise((resolve, reject) => { - let stdout = '' - let stderr = '' - const rojo = spawn('rojo', ['sourcemap', root]) - rojo.stdout.on('data', (data) => { - stdout += data.toString() - }) - rojo.stderr.on('data', (data) => { - stderr += data.toString() - }) - rojo.on('close', (code) => { - if (code === 0) { - try { - const sourcemap = JSON.parse(stdout) - sourcemapCache.set(root, sourcemap) - resolve(sourcemap) - } catch { - reject(new Error(`Failed to parse sourcemap: ${stdout}`)) - } - } else { - reject(stderr) - } - }) + const cached = sourcemapCache.get(root) + if (cached) { + return Promise.resolve(cached) + } + return new Promise((resolve, reject) => { + let stdout = '' + let stderr = '' + const rojo = spawn('rojo', ['sourcemap', root]) + rojo.stdout.on('data', (data) => { + stdout += data.toString() }) + rojo.stderr.on('data', (data) => { + stderr += data.toString() + }) + rojo.on('close', (code) => { + if (code === 0) { + try { + const sourcemap = JSON.parse(stdout) + sourcemapCache.set(root, sourcemap) + resolve(sourcemap) + } catch { + reject(new Error(`Failed to parse sourcemap: ${stdout}`)) + } + } else { + reject(stderr) + } + }) + }) } -function prefixSourcemap(sourcemap: RojoSourcemap, prefix: string): RojoSourcemap { - return { - name: sourcemap.name, - className: sourcemap.className, - filePaths: sourcemap.filePaths?.map(path => `${prefix}/${path}`), - children: sourcemap.children?.map(child => prefixSourcemap(child, prefix)), - } +function prefixSourcemap( + sourcemap: RojoSourcemap, + prefix: string, +): RojoSourcemap { + return { + name: sourcemap.name, + className: sourcemap.className, + filePaths: sourcemap.filePaths?.map((path) => `${prefix}/${path}`), + children: sourcemap.children?.map((child) => + prefixSourcemap(child, prefix), + ), + } } async function getPrefixedSourcemap(root: string): Promise { - const sourcemap = await getSourcemap(root) - const prefixed = prefixSourcemap(sourcemap, root) - return prefixed + const sourcemap = await getSourcemap(root) + const prefixed = prefixSourcemap(sourcemap, root) + return prefixed } function mergeSourcemaps(sourcemaps: RojoSourcemap[]): RojoSourcemap { - const merged: Required = { - name: '', - className: '', - filePaths: [], - children: [] - }; + const merged: Required = { + name: '', + className: '', + filePaths: [], + children: [], + } - for (const sourcemap of sourcemaps) { - merged.name = sourcemap.name; - merged.className = sourcemap.className; + for (const sourcemap of sourcemaps) { + merged.name = sourcemap.name + merged.className = sourcemap.className - if (sourcemap.filePaths) { - merged.filePaths = sourcemap.filePaths; - } - - for (const child of sourcemap.children ?? []) { - const existingChild = merged.children.findIndex(oldChild => oldChild.name === child.name); - if (existingChild !== -1) { - merged.children[existingChild] = mergeSourcemaps([merged.children[existingChild], child]); - } else { - merged.children.push(child); - } - } + if (sourcemap.filePaths) { + merged.filePaths = sourcemap.filePaths } - return merged; + for (const child of sourcemap.children ?? []) { + const existingChild = merged.children.findIndex( + (oldChild) => oldChild.name === child.name, + ) + if (existingChild !== -1) { + merged.children[existingChild] = mergeSourcemaps([ + merged.children[existingChild], + child, + ]) + } else { + merged.children.push(child) + } + } + } + + return merged } async function rebuild() { - const sourcemaps = await Promise.all([ - getPrefixedSourcemap('Secret'), - getPrefixedSourcemap('Core'), - ]) - const sourcemap = mergeSourcemaps(sourcemaps) - await fs.promises.writeFile('sourcemap.json', JSON.stringify(sourcemap, null, 2)) + const sourcemaps = await Promise.all([ + getPrefixedSourcemap('Secret'), + getPrefixedSourcemap('Core'), + ]) + const sourcemap = mergeSourcemaps(sourcemaps) + await fs.promises.writeFile( + 'sourcemap.json', + JSON.stringify(sourcemap, null, 2), + ) } for (const root of SOURCE_ROOTS) { - fs.watch(root, {recursive:true}, () => { - sourcemapCache.delete(root) - rebuild() - }) + fs.watch(root, { recursive: true }, () => { + sourcemapCache.delete(root) + rebuild() + }) } -rebuild() \ No newline at end of file +rebuild()