abse/smart-ring-flex
A tscircuit package created by abse.
- Version
- 0.0.24
- License
- unset
- Stars
- 0
scripts/build-cloud.mjs
import {existsSync} from 'node:fs';
import {readFile,writeFile,copyFile,readdir} from 'node:fs/promises';
import {gunzipSync} from 'node:zlib';
import {createHash} from 'node:crypto';
import {mkdir} from 'node:fs/promises';
const baselineParts=(await readdir('baseline/transport-chunks')).filter(n=>n.startsWith('part-')).sort();
const baselineEncoded=(await Promise.all(baselineParts.map(n=>readFile('baseline/transport-chunks/'+n,'utf8')))).join('');
const baselineBytes=gunzipSync(Buffer.from(baselineEncoded,'base64'));
if(createHash('sha256').update(baselineBytes).digest('hex')!=="918fc3a7b903f8cc194effcab686ba2ef876ce2b3fcb86f34a5f43c88d826b28")throw new Error('Historical baseline transport checksum mismatch');
await writeFile('baseline/v20-cloud-index.circuit.json',baselineBytes);
const args=['build','--disable-parts-engine','--concurrency','1','--site','--pcb-svgs','--schematic-svgs','--use-cdn-javascript'];
const local='node_modules/@tscircuit/cli/dist/cli/main.js';
const command=existsSync(local)?[process.execPath,local,...args]:['tscircuit',...args];
const exit=await Bun.spawn(command,{stdout:'inherit',stderr:'inherit'}).exited;
if(exit!==0)process.exit(exit);
const index=await readFile('dist/index.html','utf8');
await writeFile('dist/index.html',index.replaceAll('https://cdn.jsdelivr.net/npm/tscircuit@','https://unpkg.com/tscircuit@'));
const parts=(await readdir('review/portable-viewer')).filter(n=>n.startsWith('part-')&&n.endsWith('.txt')).sort();
const viewer=(await Promise.all(parts.map(n=>readFile('review/portable-viewer/'+n,'utf8')))).join('');
await writeFile('dist/docked-preview.html',viewer);
console.log('Eight strict Circuit JSON builds; index contains the real flat PCB and separately selectable current folded assembly parts.');