/ scripts / create.ts
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);