mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 00:18:19 +01:00
fix(build): 🐛 Modify CLI to properly bundle
This commit is contained in:
parent
0d278e4fa9
commit
6b17b91235
|
|
@ -1,18 +0,0 @@
|
|||
const timeBefore = performance.now();
|
||||
|
||||
const requests: Promise<Response>[] = [];
|
||||
|
||||
// Repeat 1000 times
|
||||
for (let i = 0; i < 1000; i++) {
|
||||
requests.push(
|
||||
fetch("https://mastodon.social", {
|
||||
method: "GET",
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
await Promise.all(requests);
|
||||
|
||||
const timeAfter = performance.now();
|
||||
|
||||
console.log(`Time taken: ${timeAfter - timeBefore}ms`);
|
||||
|
|
@ -1 +0,0 @@
|
|||
//
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
/**
|
||||
* Usage: TOKEN=your_token_here bun benchmark:timeline <request_count>
|
||||
*/
|
||||
|
||||
import chalk from "chalk";
|
||||
import { config } from "config-manager";
|
||||
|
||||
const token = process.env.TOKEN;
|
||||
const requestCount = Number(process.argv[2]) || 100;
|
||||
|
||||
if (!token) {
|
||||
console.log(
|
||||
`${chalk.red(
|
||||
"✗",
|
||||
)} No token provided. Provide one via the TOKEN environment variable.`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const fetchTimeline = () =>
|
||||
fetch(new URL("/api/v1/timelines/home", config.http.base_url), {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
}).then((res) => res.ok);
|
||||
|
||||
const timeNow = performance.now();
|
||||
|
||||
const requests = Array.from({ length: requestCount }, () => fetchTimeline());
|
||||
|
||||
Promise.all(requests)
|
||||
.then((results) => {
|
||||
const timeTaken = performance.now() - timeNow;
|
||||
if (results.every((t) => t)) {
|
||||
console.log(`${chalk.green("✓")} All requests succeeded`);
|
||||
} else {
|
||||
console.log(
|
||||
`${chalk.red("✗")} ${
|
||||
results.filter((t) => !t).length
|
||||
} requests failed`,
|
||||
);
|
||||
}
|
||||
console.log(
|
||||
`${chalk.green("✓")} ${
|
||||
requests.length
|
||||
} requests fulfilled in ${chalk.bold(
|
||||
(timeTaken / 1000).toFixed(5),
|
||||
)}s`,
|
||||
);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(`${chalk.red("✗")} ${err}`);
|
||||
process.exit(1);
|
||||
});
|
||||
1
build.ts
1
build.ts
|
|
@ -10,7 +10,6 @@ await $`rm -rf dist && mkdir dist`;
|
|||
await Bun.build({
|
||||
entrypoints: [
|
||||
"index.ts",
|
||||
"cli.ts",
|
||||
"cli/index.ts",
|
||||
// Force Bun to include endpoints
|
||||
...Object.values(routes),
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import { Command } from "@oclif/core";
|
||||
import { setupDatabase } from "~drizzle/db";
|
||||
import { consoleLogger } from "@loggers";
|
||||
|
||||
export abstract class BaseCommand<T extends typeof Command> extends Command {
|
||||
protected async init(): Promise<void> {
|
||||
await super.init();
|
||||
|
||||
const { setupDatabase } = await import("~drizzle/db");
|
||||
const { consoleLogger } = await import("@loggers");
|
||||
|
||||
(async () => {
|
||||
await setupDatabase(consoleLogger, false);
|
||||
})();
|
||||
await setupDatabase(consoleLogger, false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { Args, type Command, Flags, type Interfaces } from "@oclif/core";
|
|||
import chalk from "chalk";
|
||||
import { and, eq, like } from "drizzle-orm";
|
||||
import { Users } from "~drizzle/schema";
|
||||
import type { User } from "~packages/database-interface/user";
|
||||
import { User } from "~packages/database-interface/user";
|
||||
import { BaseCommand } from "./base";
|
||||
|
||||
export type FlagsType<T extends typeof Command> = Interfaces.InferredFlags<
|
||||
|
|
@ -81,8 +81,6 @@ export abstract class UserFinderCommand<
|
|||
? this.args.identifier.replace(/\*/g, "%")
|
||||
: this.args.identifier;
|
||||
|
||||
const { User } = await import("~packages/database-interface/user");
|
||||
|
||||
return await User.manyFromSql(
|
||||
and(
|
||||
this.flags.type === "id"
|
||||
|
|
|
|||
12
cli/index.ts
12
cli/index.ts
|
|
@ -1,13 +1,15 @@
|
|||
import { execute } from "@oclif/core";
|
||||
import EmojiAdd from "./commands/emoji/add";
|
||||
import UserCreate from "./commands/user/create";
|
||||
import UserDelete from "./commands/user/delete";
|
||||
import UserList from "./commands/user/list";
|
||||
import UserReset from "./commands/user/reset";
|
||||
|
||||
// Use "explicit" oclif strategy to avoid issues with oclif's module resolver and bundling
|
||||
export const commands = {
|
||||
"user list": UserList,
|
||||
"user delete": UserDelete,
|
||||
"user create": UserCreate,
|
||||
"user reset": UserReset,
|
||||
"emoji add": EmojiAdd,
|
||||
"user:list": UserList,
|
||||
"user:delete": UserDelete,
|
||||
"user:create": UserCreate,
|
||||
"user:reset": UserReset,
|
||||
"emoji:add": EmojiAdd,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
"dollarSign": "white",
|
||||
"flag": "white",
|
||||
"flagDefaultValue": "blue",
|
||||
"flagOptions": "white",
|
||||
"flagOptions": "green",
|
||||
"flagRequired": "red",
|
||||
"flagSeparator": "white",
|
||||
"sectionDescription": "white",
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ case "$1" in
|
|||
"cli")
|
||||
# Start the CLI
|
||||
shift 1
|
||||
bun run ./cli.js "$@"
|
||||
bun run ./cli/index.js "$@"
|
||||
;;
|
||||
*)
|
||||
# Run custom commands
|
||||
|
|
|
|||
Loading…
Reference in a new issue