create.ts
1 import { mkdir } from "node:fs/promises"; 2 import { join } from "node:path"; 3 4 const api = join(__dirname, "../src-new/api"); 5 const name = prompt("endpoint name>"); 6 if (!name) process.exit(1); 7 8 const entry = join(api, name); 9 await mkdir(entry, { recursive: true }); 10 11 await Bun.write(join(entry, "request.ts"), ` 12 export interface ${name}RequestData { 13 } 14 15 export interface ${name}RequestSignature { 16 } 17 `.trimStart()); 18 19 await Bun.write(join(entry, "response.ts"), ` 20 export class ${name}ResponseModel { 21 } 22 23 export class ${name}ResponseSignature { 24 } 25 `.trimStart()); 26 27 await Bun.write(join(entry, "index.ts"), ` 28 import { ResponseFunction } from "../../models/ResponseFunction"; 29 import { RequestFunction } from "../../models/RequestFunction"; 30 import { Session } from "../../models/Session"; 31 32 import { ${name}ResponseModel, ${name}ResponseSignature } from "./response"; 33 import { ${name}RequestData, ${name}RequestSignature } from "./request"; 34 35 export class ${name} extends RequestFunction<${name}RequestData, ${name}RequestSignature> { 36 private static readonly name = "${name}"; 37 38 private readonly decoder = new ResponseFunction( 39 this.session, 40 ${name}ResponseModel, 41 ${name}ResponseSignature 42 ); 43 44 public constructor(session: Session) { 45 super(session, ${name}.name); 46 } 47 } 48 `.trimStart()); 49 50 console.log("[*] done! have fun with this api", entry);