Skip to content

Commit 5d405f0

Browse files
authored
refactor: clearer folder organization (#792)
1 parent af85f61 commit 5d405f0

File tree

449 files changed

+978
-1000
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

449 files changed

+978
-1000
lines changed

.vscode/settings.json

Lines changed: 0 additions & 17 deletions
This file was deleted.

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ COPY --from=build /app/package.json .
6464
COPY --from=build /app/node_modules ./node_modules
6565
COPY --from=build /app/src/prisma/* ./src/prisma/
6666
COPY --from=build /app/dist ./dist
67+
COPY --from=build /app/scripts ./dist/scripts
6768

6869
# Replace the schema path in the package.json file
6970
RUN sed -i 's_"schema": "./src/prisma/schema.prisma"_"schema": "./dist/prisma/schema.prisma"_g' package.json

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
"dev:run": "npx nodemon --watch 'src/**/*.ts' --exec 'npx tsx ./src/index.ts' --files src/index.ts",
1414
"build": "rm -rf dist && tsc -p ./tsconfig.json --outDir dist",
1515
"build:docker": "docker build . -f Dockerfile -t prod",
16-
"generate:sdk": "npx tsx ./src/scripts/generate-sdk && cd ./sdk && yarn build",
17-
"prisma:setup:dev": "npx tsx ./src/scripts/setup-db.ts",
16+
"generate:sdk": "npx tsx ./scripts/generate-sdk && cd ./sdk && yarn build",
17+
"prisma:setup:dev": "npx tsx ./scripts/setup-db.ts",
1818
"prisma:setup:prod": "npx tsx ./dist/scripts/setup-db.js",
1919
"start": "yarn prisma:setup:prod && yarn start:migrations && yarn start:run",
2020
"start:migrations": "npx tsx ./dist/scripts/apply-migrations.js",

src/scripts/apply-migrations.ts renamed to scripts/apply-migrations.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import { logger } from "../utils/logger";
2-
import { acquireLock, releaseLock, waitForLock } from "../utils/redis/lock";
3-
import { redis } from "../utils/redis/redis";
1+
import { logger } from "../src/shared/utils/logger";
2+
import {
3+
acquireLock,
4+
releaseLock,
5+
waitForLock,
6+
} from "../src/shared/utils/redis/lock";
7+
import { redis } from "../src/shared/utils/redis/redis";
48

59
const MIGRATION_LOCK_TTL_SECONDS = 60;
610

File renamed without changes.

src/scripts/setup-db.ts renamed to scripts/setup-db.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { execSync } from "child_process";
2-
import { prisma } from "../db/client";
1+
import { execSync } from "node:child_process";
2+
import { prisma } from "../src/shared/db/client";
33

44
const main = async () => {
55
const [{ exists: hasWalletsTable }]: [{ exists: boolean }] =
@@ -14,8 +14,8 @@ const main = async () => {
1414

1515
const schema =
1616
process.env.NODE_ENV === "production"
17-
? `./dist/prisma/schema.prisma`
18-
: `./src/prisma/schema.prisma`;
17+
? "./dist/prisma/schema.prisma"
18+
: "./src/prisma/schema.prisma";
1919

2020
if (hasWalletsTable) {
2121
execSync(`yarn prisma migrate reset --force --schema ${schema}`, {

src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import "./polyfill";
2+
import "./tracer";
3+
24
import { initServer } from "./server";
3-
import { env } from "./utils/env";
4-
import { logger } from "./utils/logger";
5-
import "./utils/tracer";
5+
import { env } from "./shared/utils/env";
6+
import { logger } from "./shared/utils/logger";
67
import { initWorker } from "./worker";
78
import { CancelRecycledNoncesQueue } from "./worker/queues/cancelRecycledNoncesQueue";
89
import { MigratePostgresTransactionsQueue } from "./worker/queues/migratePostgresTransactionsQueue";

src/polyfill.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as crypto from "crypto";
1+
import * as crypto from "node:crypto";
22

33
if (typeof globalThis.crypto === "undefined") {
44
(globalThis as any).crypto = crypto;

src/server/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import fastify, { type FastifyInstance } from "fastify";
33
import * as fs from "node:fs";
44
import path from "node:path";
55
import { URL } from "node:url";
6-
import { clearCacheCron } from "../utils/cron/clearCacheCron";
7-
import { env } from "../utils/env";
8-
import { logger } from "../utils/logger";
9-
import { metricsServer } from "../utils/prometheus";
10-
import { withServerUsageReporting } from "../utils/usage";
6+
import { clearCacheCron } from "../shared/utils/cron/clearCacheCron";
7+
import { env } from "../shared/utils/env";
8+
import { logger } from "../shared/utils/logger";
9+
import { metricsServer } from "../shared/utils/prometheus";
10+
import { withServerUsageReporting } from "../shared/utils/usage";
1111
import { updateTxListener } from "./listeners/updateTxListener";
1212
import { withAdminRoutes } from "./middleware/adminRoutes";
1313
import { withAuth } from "./middleware/auth";

src/server/listeners/updateTxListener.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { knex } from "../../db/client";
2-
import { TransactionDB } from "../../db/transactions/db";
3-
import { logger } from "../../utils/logger";
1+
import { knex } from "../../shared/db/client";
2+
import { TransactionDB } from "../../shared/db/transactions/db";
3+
import { logger } from "../../shared/utils/logger";
44
import { toTransactionSchema } from "../schemas/transaction";
55
import { subscriptionsData } from "../schemas/websocket";
66
import {

src/server/middleware/adminRoutes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { Queue } from "bullmq";
55
import type { FastifyInstance } from "fastify";
66
import { StatusCodes } from "http-status-codes";
77
import { timingSafeEqual } from "node:crypto";
8-
import { env } from "../../utils/env";
8+
import { env } from "../../shared/utils/env";
99
import { CancelRecycledNoncesQueue } from "../../worker/queues/cancelRecycledNoncesQueue";
1010
import { MigratePostgresTransactionsQueue } from "../../worker/queues/migratePostgresTransactionsQueue";
1111
import { MineTransactionQueue } from "../../worker/queues/mineTransactionQueue";

src/server/middleware/auth.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,25 @@ import {
55
type ThirdwebAuthUser,
66
} from "@thirdweb-dev/auth/fastify";
77
import { AsyncWallet } from "@thirdweb-dev/wallets/evm/wallets/async";
8-
import { createHash } from "crypto";
8+
import { createHash } from "node:crypto";
99
import type { FastifyInstance } from "fastify";
1010
import type { FastifyRequest } from "fastify/types/request";
1111
import jsonwebtoken, { type JwtPayload } from "jsonwebtoken";
1212
import { validate as uuidValidate } from "uuid";
13-
import { getPermissions } from "../../db/permissions/getPermissions";
14-
import { createToken } from "../../db/tokens/createToken";
15-
import { revokeToken } from "../../db/tokens/revokeToken";
16-
import { WebhooksEventTypes } from "../../schema/webhooks";
17-
import { THIRDWEB_DASHBOARD_ISSUER, handleSiwe } from "../../utils/auth";
18-
import { getAccessToken } from "../../utils/cache/accessToken";
19-
import { getAuthWallet } from "../../utils/cache/authWallet";
20-
import { getConfig } from "../../utils/cache/getConfig";
21-
import { getWebhooksByEventType } from "../../utils/cache/getWebhook";
22-
import { getKeypair } from "../../utils/cache/keypair";
23-
import { env } from "../../utils/env";
24-
import { logger } from "../../utils/logger";
25-
import { sendWebhookRequest } from "../../utils/webhook";
26-
import { Permission } from "../schemas/auth";
13+
import { getPermissions } from "../../shared/db/permissions/getPermissions";
14+
import { createToken } from "../../shared/db/tokens/createToken";
15+
import { revokeToken } from "../../shared/db/tokens/revokeToken";
16+
import { WebhooksEventTypes } from "../../shared/schemas/webhooks";
17+
import { THIRDWEB_DASHBOARD_ISSUER, handleSiwe } from "../../shared/utils/auth";
18+
import { getAccessToken } from "../../shared/utils/cache/accessToken";
19+
import { getAuthWallet } from "../../shared/utils/cache/authWallet";
20+
import { getConfig } from "../../shared/utils/cache/getConfig";
21+
import { getWebhooksByEventType } from "../../shared/utils/cache/getWebhook";
22+
import { getKeypair } from "../../shared/utils/cache/keypair";
23+
import { env } from "../../shared/utils/env";
24+
import { logger } from "../../shared/utils/logger";
25+
import { sendWebhookRequest } from "../../shared/utils/webhook";
26+
import { Permission } from "../../shared/schemas/auth";
2727
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";
2828
import { OPENAPI_ROUTES } from "./openApi";
2929

src/server/middleware/cors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { FastifyInstance } from "fastify";
2-
import { getConfig } from "../../utils/cache/getConfig";
2+
import { getConfig } from "../../shared/utils/cache/getConfig";
33
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";
44

55
const STANDARD_METHODS = "GET,POST,DELETE,PUT,PATCH,HEAD,PUT,PATCH,POST,DELETE";

src/server/middleware/engineMode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { FastifyInstance } from "fastify";
2-
import { env } from "../../utils/env";
2+
import { env } from "../../shared/utils/env";
33

44
export function withEnforceEngineMode(server: FastifyInstance) {
55
if (env.ENGINE_MODE === "sandbox") {

src/server/middleware/error.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { FastifyInstance } from "fastify";
22
import { ReasonPhrases, StatusCodes } from "http-status-codes";
33
import { ZodError } from "zod";
4-
import { env } from "../../utils/env";
5-
import { parseEthersError } from "../../utils/ethers";
4+
import { env } from "../../shared/utils/env";
5+
import { parseEthersError } from "../../shared/utils/ethers";
66

77
export type CustomError = {
88
message: string;

src/server/middleware/logs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { FastifyInstance } from "fastify";
22
import { stringify } from "thirdweb/utils";
3-
import { logger } from "../../utils/logger";
3+
import { logger } from "../../shared/utils/logger";
44
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";
55
import { OPENAPI_ROUTES } from "./openApi";
66

src/server/middleware/prometheus.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
2-
import { env } from "../../utils/env";
3-
import { recordMetrics } from "../../utils/prometheus";
2+
import { env } from "../../shared/utils/env";
3+
import { recordMetrics } from "../../shared/utils/prometheus";
44

55
export function withPrometheus(server: FastifyInstance) {
66
if (!env.METRICS_ENABLED) {

src/server/middleware/rateLimit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { FastifyInstance } from "fastify";
22
import { StatusCodes } from "http-status-codes";
3-
import { env } from "../../utils/env";
4-
import { redis } from "../../utils/redis/redis";
3+
import { env } from "../../shared/utils/env";
4+
import { redis } from "../../shared/utils/redis/redis";
55
import { createCustomError } from "./error";
66
import { OPENAPI_ROUTES } from "./openApi";
77

src/server/middleware/websocket.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import WebSocketPlugin from "@fastify/websocket";
22
import type { FastifyInstance } from "fastify";
3-
import { logger } from "../../utils/logger";
3+
import { logger } from "../../shared/utils/logger";
44

55
export async function withWebSocket(server: FastifyInstance) {
66
await server.register(WebSocketPlugin, {

src/server/routes/admin/nonces.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Static, Type } from "@sinclair/typebox";
2-
import { FastifyInstance } from "fastify";
1+
import { type Static, Type } from "@sinclair/typebox";
2+
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
44
import {
5-
Address,
5+
type Address,
66
eth_getTransactionCount,
77
getAddress,
88
getRpcClient,
@@ -12,10 +12,10 @@ import {
1212
lastUsedNonceKey,
1313
recycledNoncesKey,
1414
sentNoncesKey,
15-
} from "../../../db/wallets/walletNonce";
16-
import { getChain } from "../../../utils/chain";
17-
import { redis } from "../../../utils/redis/redis";
18-
import { thirdwebClient } from "../../../utils/sdk";
15+
} from "../../../shared/db/wallets/walletNonce";
16+
import { getChain } from "../../../shared/utils/chain";
17+
import { redis } from "../../../shared/utils/redis/redis";
18+
import { thirdwebClient } from "../../../shared/utils/sdk";
1919
import { AddressSchema } from "../../schemas/address";
2020
import { standardResponseSchema } from "../../schemas/sharedApiSchemas";
2121
import { walletWithAddressParamSchema } from "../../schemas/wallet";

src/server/routes/admin/transaction.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { Static, Type } from "@sinclair/typebox";
2-
import { Queue } from "bullmq";
3-
import { FastifyInstance } from "fastify";
1+
import { type Static, Type } from "@sinclair/typebox";
2+
import type { Queue } from "bullmq";
3+
import type { FastifyInstance } from "fastify";
44
import { StatusCodes } from "http-status-codes";
55
import { stringify } from "thirdweb/utils";
6-
import { TransactionDB } from "../../../db/transactions/db";
7-
import { getConfig } from "../../../utils/cache/getConfig";
8-
import { maybeDate } from "../../../utils/primitiveTypes";
9-
import { redis } from "../../../utils/redis/redis";
6+
import { TransactionDB } from "../../../shared/db/transactions/db";
7+
import { getConfig } from "../../../shared/utils/cache/getConfig";
8+
import { maybeDate } from "../../../shared/utils/primitiveTypes";
9+
import { redis } from "../../../shared/utils/redis/redis";
1010
import { MineTransactionQueue } from "../../../worker/queues/mineTransactionQueue";
1111
import { SendTransactionQueue } from "../../../worker/queues/sendTransactionQueue";
1212
import { createCustomError } from "../../middleware/error";

src/server/routes/auth/access-tokens/create.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { buildJWT } from "@thirdweb-dev/auth";
33
import { LocalWallet } from "@thirdweb-dev/wallets";
44
import type { FastifyInstance } from "fastify";
55
import { StatusCodes } from "http-status-codes";
6-
import { updateConfiguration } from "../../../../db/configuration/updateConfiguration";
7-
import { createToken } from "../../../../db/tokens/createToken";
8-
import { accessTokenCache } from "../../../../utils/cache/accessToken";
9-
import { getConfig } from "../../../../utils/cache/getConfig";
10-
import { env } from "../../../../utils/env";
6+
import { updateConfiguration } from "../../../../shared/db/configuration/updateConfiguration";
7+
import { createToken } from "../../../../shared/db/tokens/createToken";
8+
import { accessTokenCache } from "../../../../shared/utils/cache/accessToken";
9+
import { getConfig } from "../../../../shared/utils/cache/getConfig";
10+
import { env } from "../../../../shared/utils/env";
1111
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
1212
import { AccessTokenSchema } from "./getAll";
1313

src/server/routes/auth/access-tokens/getAll.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Type, type Static } from "@sinclair/typebox";
22
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { getAccessTokens } from "../../../../db/tokens/getAccessTokens";
4+
import { getAccessTokens } from "../../../../shared/db/tokens/getAccessTokens";
55
import { AddressSchema } from "../../../schemas/address";
66
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
77

src/server/routes/auth/access-tokens/revoke.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Type, type Static } from "@sinclair/typebox";
22
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { revokeToken } from "../../../../db/tokens/revokeToken";
5-
import { accessTokenCache } from "../../../../utils/cache/accessToken";
4+
import { revokeToken } from "../../../../shared/db/tokens/revokeToken";
5+
import { accessTokenCache } from "../../../../shared/utils/cache/accessToken";
66
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
77

88
const requestBodySchema = Type.Object({

src/server/routes/auth/access-tokens/update.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Type, type Static } from "@sinclair/typebox";
22
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { updateToken } from "../../../../db/tokens/updateToken";
5-
import { accessTokenCache } from "../../../../utils/cache/accessToken";
4+
import { updateToken } from "../../../../shared/db/tokens/updateToken";
5+
import { accessTokenCache } from "../../../../shared/utils/cache/accessToken";
66
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
77

88
const requestBodySchema = Type.Object({

src/server/routes/auth/keypair/add.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
import { Keypairs, Prisma } from "@prisma/client";
2-
import { Static, Type } from "@sinclair/typebox";
3-
import { FastifyInstance } from "fastify";
1+
import { type Keypairs, Prisma } from "@prisma/client";
2+
import { type Static, Type } from "@sinclair/typebox";
3+
import type { FastifyInstance } from "fastify";
44
import { StatusCodes } from "http-status-codes";
5-
import { insertKeypair } from "../../../../db/keypair/insert";
6-
import { isWellFormedPublicKey } from "../../../../utils/crypto";
5+
import { insertKeypair } from "../../../../shared/db/keypair/insert";
6+
import { isWellFormedPublicKey } from "../../../../shared/utils/crypto";
77
import { createCustomError } from "../../../middleware/error";
88
import {
99
KeypairAlgorithmSchema,
1010
KeypairSchema,
1111
toKeypairSchema,
12-
} from "../../../schemas/keypairs";
12+
} from "../../../../shared/schemas/keypair";
1313
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
1414

1515
const requestBodySchema = Type.Object({

src/server/routes/auth/keypair/list.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
import { Static, Type } from "@sinclair/typebox";
2-
import { FastifyInstance } from "fastify";
1+
import { type Static, Type } from "@sinclair/typebox";
2+
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { listKeypairs } from "../../../../db/keypair/list";
5-
import { KeypairSchema, toKeypairSchema } from "../../../schemas/keypairs";
4+
import { listKeypairs } from "../../../../shared/db/keypair/list";
5+
import {
6+
KeypairSchema,
7+
toKeypairSchema,
8+
} from "../../../../shared/schemas/keypair";
69
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
710

811
const responseBodySchema = Type.Object({

src/server/routes/auth/keypair/remove.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Static, Type } from "@sinclair/typebox";
2-
import { FastifyInstance } from "fastify";
1+
import { type Static, Type } from "@sinclair/typebox";
2+
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { deleteKeypair } from "../../../../db/keypair/delete";
5-
import { keypairCache } from "../../../../utils/cache/keypair";
4+
import { deleteKeypair } from "../../../../shared/db/keypair/delete";
5+
import { keypairCache } from "../../../../shared/utils/cache/keypair";
66
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
77

88
const requestBodySchema = Type.Object({

src/server/routes/auth/permissions/getAll.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Type, type Static } from "@sinclair/typebox";
22
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { prisma } from "../../../../db/client";
4+
import { prisma } from "../../../../shared/db/client";
55
import { AddressSchema } from "../../../schemas/address";
66
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
77

src/server/routes/auth/permissions/grant.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { Type, type Static } from "@sinclair/typebox";
22
import type { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
4-
import { updatePermissions } from "../../../../db/permissions/updatePermissions";
4+
import { updatePermissions } from "../../../../shared/db/permissions/updatePermissions";
55
import { AddressSchema } from "../../../schemas/address";
6-
import { permissionsSchema } from "../../../schemas/auth";
6+
import { permissionsSchema } from "../../../../shared/schemas/auth";
77
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
88

99
const requestBodySchema = Type.Object({

0 commit comments

Comments
 (0)