Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit",
"source.eslint.fixAll": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"eslint.rules.customizations": [{ "rule": "*", "severity": "warn" }],
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,
"[prisma]": {
"editor.defaultFormatter": "Prisma.prisma"
},
"[typescript]": {
"editor.defaultFormatter": "biomejs.biome"
}
}
1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ COPY --from=build /app/package.json .
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/src/prisma/* ./src/prisma/
COPY --from=build /app/dist ./dist
COPY --from=build /app/scripts ./dist/scripts

# Replace the schema path in the package.json file
RUN sed -i 's_"schema": "./src/prisma/schema.prisma"_"schema": "./dist/prisma/schema.prisma"_g' package.json
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"dev:run": "npx nodemon --watch 'src/**/*.ts' --exec 'npx tsx ./src/index.ts' --files src/index.ts",
"build": "rm -rf dist && tsc -p ./tsconfig.json --outDir dist",
"build:docker": "docker build . -f Dockerfile -t prod",
"generate:sdk": "npx tsx ./scripts/generate-sdk && cd ./sdk && yarn build",
"prisma:setup:dev": "npx tsx ./scripts/setup-db.ts",
"generate:sdk": "npx tsx ./src/scripts/generate-sdk && cd ./sdk && yarn build",
"prisma:setup:dev": "npx tsx ./src/scripts/setup-db.ts",
"prisma:setup:prod": "npx tsx ./dist/scripts/setup-db.js",
"start": "yarn prisma:setup:prod && yarn start:migrations && yarn start:run",
"start:migrations": "npx tsx ./dist/scripts/apply-migrations.js",
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Prisma } from "@prisma/client";
import type { PrismaTransaction } from "../../schemas/prisma";
import type { PrismaTransaction } from "../../schema/prisma";
import { getPrismaWithPostgresTx } from "../client";

interface GetLastIndexedBlockParams {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { PrismaTransaction } from "../../schemas/prisma";
import type { PrismaTransaction } from "../../schema/prisma";
import { getPrismaWithPostgresTx } from "../client";

interface UpsertChainIndexerParams {
Expand Down
6 changes: 3 additions & 3 deletions src/shared/db/client.ts → src/db/client.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { PrismaClient } from "@prisma/client";
import pg, { type Knex } from "knex";
import type { PrismaTransaction } from "../schemas/prisma";
import pg, { Knex } from "knex";
import { PrismaTransaction } from "../schema/prisma";
import { env } from "../utils/env";

export const prisma = new PrismaClient({
Expand All @@ -26,7 +26,7 @@ export const isDatabaseReachable = async () => {
try {
await prisma.walletDetails.findFirst();
return true;
} catch {
} catch (error) {
return false;
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import type {
AwsWalletConfiguration,
GcpWalletConfiguration,
ParsedConfig,
} from "../../schemas/config";
import { WalletType } from "../../schemas/wallet";
import { mandatoryAllowedCorsUrls } from "../../../server/utils/cors-urls";
} from "../../schema/config";
import { WalletType } from "../../schema/wallet";
import { mandatoryAllowedCorsUrls } from "../../server/utils/cors-urls";
import type { networkResponseSchema } from "../../utils/cache/getSdk";
import { decrypt } from "../../utils/crypto";
import { env } from "../../utils/env";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ContractEventLogs, Prisma } from "@prisma/client";
import type { PrismaTransaction } from "../../schemas/prisma";
import { ContractEventLogs, Prisma } from "@prisma/client";
import { PrismaTransaction } from "../../schema/prisma";
import { getPrismaWithPostgresTx } from "../client";

export interface BulkInsertContractLogsParams {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ContractTransactionReceipts, Prisma } from "@prisma/client";
import { PrismaTransaction } from "../../schemas/prisma";
import { PrismaTransaction } from "../../schema/prisma";
import { getPrismaWithPostgresTx } from "../client";

export interface BulkInsertContractLogsParams {
Expand Down
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions src/shared/db/keypair/insert.ts → src/db/keypair/insert.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Keypairs } from "@prisma/client";
import { createHash } from "node:crypto";
import type { KeypairAlgorithm } from "../../schemas/keypair";
import { Keypairs } from "@prisma/client";
import { createHash } from "crypto";
import { KeypairAlgorithm } from "../../server/schemas/keypairs";
import { prisma } from "../client";

export const insertKeypair = async ({
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Permission } from "../../schemas/auth";
import { Permission } from "../../server/schemas/auth";
import { env } from "../../utils/env";
import { prisma } from "../client";

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import type { DeployTransaction, Transaction } from "@thirdweb-dev/sdk";
import type { ERC4337EthersSigner } from "@thirdweb-dev/wallets/dist/declarations/src/evm/connectors/smart-wallet/lib/erc4337-signer";
import { ZERO_ADDRESS, type Address } from "thirdweb";
import type { ContractExtension } from "../../schemas/extension";
import type { ContractExtension } from "../../schema/extension";
import { parseTransactionOverrides } from "../../server/utils/transactionOverrides";
import { maybeBigInt, normalizeAddress } from "../../utils/primitiveTypes";
import { insertTransaction } from "../../utils/transaction/insertTransaction";
import type { InsertedTransaction } from "../../utils/transaction/types";
import { parseTransactionOverrides } from "../../../server/utils/transactionOverrides";

interface QueueTxParams {
// we should move away from Transaction type (v4 SDK)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Address } from "thirdweb";
import type { PrismaTransaction } from "../../schemas/prisma";
import type { PrismaTransaction } from "../../schema/prisma";
import { encrypt } from "../../utils/crypto";
import { getPrismaWithPostgresTx } from "../client";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PrismaTransaction } from "../../schemas/prisma";
import { PrismaTransaction } from "../../schema/prisma";
import { getPrismaWithPostgresTx } from "../client";

interface GetAllWalletsParams {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { getAddress } from "thirdweb";
import { z } from "zod";
import type { PrismaTransaction } from "../../schemas/prisma";
import type { PrismaTransaction } from "../../schema/prisma";
import { getConfig } from "../../utils/cache/getConfig";
import { decrypt } from "../../utils/crypto";
import { env } from "../../utils/env";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Address } from "thirdweb";
import { Address } from "thirdweb";
import { env } from "../../utils/env";
import { normalizeAddress } from "../../utils/primitiveTypes";
import { redis } from "../../utils/redis/redis";
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Webhooks } from "@prisma/client";
import { createHash, randomBytes } from "crypto";
import { WebhooksEventTypes } from "../../schemas/webhooks";
import { WebhooksEventTypes } from "../../schema/webhooks";
import { prisma } from "../client";

interface CreateWebhooksParams {
Expand Down
File renamed without changes.
7 changes: 3 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import "./polyfill";
import "./tracer";

import { initServer } from "./server";
import { env } from "./shared/utils/env";
import { logger } from "./shared/utils/logger";
import { env } from "./utils/env";
import { logger } from "./utils/logger";
import "./utils/tracer";
import { initWorker } from "./worker";
import { CancelRecycledNoncesQueue } from "./worker/queues/cancelRecycledNoncesQueue";
import { MigratePostgresTransactionsQueue } from "./worker/queues/migratePostgresTransactionsQueue";
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/polyfill.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as crypto from "node:crypto";
import * as crypto from "crypto";

if (typeof globalThis.crypto === "undefined") {
(globalThis as any).crypto = crypto;
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
10 changes: 3 additions & 7 deletions scripts/apply-migrations.ts → src/scripts/apply-migrations.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { logger } from "../src/shared/utils/logger";
import {
acquireLock,
releaseLock,
waitForLock,
} from "../src/shared/utils/redis/lock";
import { redis } from "../src/shared/utils/redis/redis";
import { logger } from "../utils/logger";
import { acquireLock, releaseLock, waitForLock } from "../utils/redis/lock";
import { redis } from "../utils/redis/redis";

const MIGRATION_LOCK_TTL_SECONDS = 60;

Expand Down
File renamed without changes.
8 changes: 4 additions & 4 deletions scripts/setup-db.ts → src/scripts/setup-db.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { execSync } from "node:child_process";
import { prisma } from "../src/shared/db/client";
import { execSync } from "child_process";
import { prisma } from "../db/client";

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

const schema =
process.env.NODE_ENV === "production"
? "./dist/prisma/schema.prisma"
: "./src/prisma/schema.prisma";
? `./dist/prisma/schema.prisma`
: `./src/prisma/schema.prisma`;

if (hasWalletsTable) {
execSync(`yarn prisma migrate reset --force --schema ${schema}`, {
Expand Down
10 changes: 5 additions & 5 deletions src/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import fastify, { type FastifyInstance } from "fastify";
import * as fs from "node:fs";
import path from "node:path";
import { URL } from "node:url";
import { clearCacheCron } from "../shared/utils/cron/clearCacheCron";
import { env } from "../shared/utils/env";
import { logger } from "../shared/utils/logger";
import { metricsServer } from "../shared/utils/prometheus";
import { withServerUsageReporting } from "../shared/utils/usage";
import { clearCacheCron } from "../utils/cron/clearCacheCron";
import { env } from "../utils/env";
import { logger } from "../utils/logger";
import { metricsServer } from "../utils/prometheus";
import { withServerUsageReporting } from "../utils/usage";
import { updateTxListener } from "./listeners/updateTxListener";
import { withAdminRoutes } from "./middleware/adminRoutes";
import { withAuth } from "./middleware/auth";
Expand Down
6 changes: 3 additions & 3 deletions src/server/listeners/updateTxListener.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { knex } from "../../shared/db/client";
import { TransactionDB } from "../../shared/db/transactions/db";
import { logger } from "../../shared/utils/logger";
import { knex } from "../../db/client";
import { TransactionDB } from "../../db/transactions/db";
import { logger } from "../../utils/logger";
import { toTransactionSchema } from "../schemas/transaction";
import { subscriptionsData } from "../schemas/websocket";
import {
Expand Down
2 changes: 1 addition & 1 deletion src/server/middleware/adminRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { Queue } from "bullmq";
import type { FastifyInstance } from "fastify";
import { StatusCodes } from "http-status-codes";
import { timingSafeEqual } from "node:crypto";
import { env } from "../../shared/utils/env";
import { env } from "../../utils/env";
import { CancelRecycledNoncesQueue } from "../../worker/queues/cancelRecycledNoncesQueue";
import { MigratePostgresTransactionsQueue } from "../../worker/queues/migratePostgresTransactionsQueue";
import { MineTransactionQueue } from "../../worker/queues/mineTransactionQueue";
Expand Down
30 changes: 15 additions & 15 deletions src/server/middleware/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,25 @@ import {
type ThirdwebAuthUser,
} from "@thirdweb-dev/auth/fastify";
import { AsyncWallet } from "@thirdweb-dev/wallets/evm/wallets/async";
import { createHash } from "node:crypto";
import { createHash } from "crypto";
import type { FastifyInstance } from "fastify";
import type { FastifyRequest } from "fastify/types/request";
import jsonwebtoken, { type JwtPayload } from "jsonwebtoken";
import { validate as uuidValidate } from "uuid";
import { getPermissions } from "../../shared/db/permissions/getPermissions";
import { createToken } from "../../shared/db/tokens/createToken";
import { revokeToken } from "../../shared/db/tokens/revokeToken";
import { WebhooksEventTypes } from "../../shared/schemas/webhooks";
import { THIRDWEB_DASHBOARD_ISSUER, handleSiwe } from "../../shared/utils/auth";
import { getAccessToken } from "../../shared/utils/cache/accessToken";
import { getAuthWallet } from "../../shared/utils/cache/authWallet";
import { getConfig } from "../../shared/utils/cache/getConfig";
import { getWebhooksByEventType } from "../../shared/utils/cache/getWebhook";
import { getKeypair } from "../../shared/utils/cache/keypair";
import { env } from "../../shared/utils/env";
import { logger } from "../../shared/utils/logger";
import { sendWebhookRequest } from "../../shared/utils/webhook";
import { Permission } from "../../shared/schemas/auth";
import { getPermissions } from "../../db/permissions/getPermissions";
import { createToken } from "../../db/tokens/createToken";
import { revokeToken } from "../../db/tokens/revokeToken";
import { WebhooksEventTypes } from "../../schema/webhooks";
import { THIRDWEB_DASHBOARD_ISSUER, handleSiwe } from "../../utils/auth";
import { getAccessToken } from "../../utils/cache/accessToken";
import { getAuthWallet } from "../../utils/cache/authWallet";
import { getConfig } from "../../utils/cache/getConfig";
import { getWebhooksByEventType } from "../../utils/cache/getWebhook";
import { getKeypair } from "../../utils/cache/keypair";
import { env } from "../../utils/env";
import { logger } from "../../utils/logger";
import { sendWebhookRequest } from "../../utils/webhook";
import { Permission } from "../schemas/auth";
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";
import { OPENAPI_ROUTES } from "./openApi";

Expand Down
2 changes: 1 addition & 1 deletion src/server/middleware/cors.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FastifyInstance } from "fastify";
import { getConfig } from "../../shared/utils/cache/getConfig";
import { getConfig } from "../../utils/cache/getConfig";
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";

const STANDARD_METHODS = "GET,POST,DELETE,PUT,PATCH,HEAD,PUT,PATCH,POST,DELETE";
Expand Down
2 changes: 1 addition & 1 deletion src/server/middleware/engineMode.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FastifyInstance } from "fastify";
import { env } from "../../shared/utils/env";
import { env } from "../../utils/env";

export function withEnforceEngineMode(server: FastifyInstance) {
if (env.ENGINE_MODE === "sandbox") {
Expand Down
4 changes: 2 additions & 2 deletions src/server/middleware/error.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { FastifyInstance } from "fastify";
import { ReasonPhrases, StatusCodes } from "http-status-codes";
import { ZodError } from "zod";
import { env } from "../../shared/utils/env";
import { parseEthersError } from "../../shared/utils/ethers";
import { env } from "../../utils/env";
import { parseEthersError } from "../../utils/ethers";

export type CustomError = {
message: string;
Expand Down
2 changes: 1 addition & 1 deletion src/server/middleware/logs.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { FastifyInstance } from "fastify";
import { stringify } from "thirdweb/utils";
import { logger } from "../../shared/utils/logger";
import { logger } from "../../utils/logger";
import { ADMIN_QUEUES_BASEPATH } from "./adminRoutes";
import { OPENAPI_ROUTES } from "./openApi";

Expand Down
4 changes: 2 additions & 2 deletions src/server/middleware/prometheus.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { env } from "../../shared/utils/env";
import { recordMetrics } from "../../shared/utils/prometheus";
import { env } from "../../utils/env";
import { recordMetrics } from "../../utils/prometheus";

export function withPrometheus(server: FastifyInstance) {
if (!env.METRICS_ENABLED) {
Expand Down
4 changes: 2 additions & 2 deletions src/server/middleware/rateLimit.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { FastifyInstance } from "fastify";
import { StatusCodes } from "http-status-codes";
import { env } from "../../shared/utils/env";
import { redis } from "../../shared/utils/redis/redis";
import { env } from "../../utils/env";
import { redis } from "../../utils/redis/redis";
import { createCustomError } from "./error";
import { OPENAPI_ROUTES } from "./openApi";

Expand Down
2 changes: 1 addition & 1 deletion src/server/middleware/websocket.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import WebSocketPlugin from "@fastify/websocket";
import type { FastifyInstance } from "fastify";
import { logger } from "../../shared/utils/logger";
import { logger } from "../../utils/logger";

export async function withWebSocket(server: FastifyInstance) {
await server.register(WebSocketPlugin, {
Expand Down
14 changes: 7 additions & 7 deletions src/server/routes/admin/nonces.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { type Static, Type } from "@sinclair/typebox";
import type { FastifyInstance } from "fastify";
import { Static, Type } from "@sinclair/typebox";
import { FastifyInstance } from "fastify";
import { StatusCodes } from "http-status-codes";
import {
type Address,
Address,
eth_getTransactionCount,
getAddress,
getRpcClient,
Expand All @@ -12,10 +12,10 @@ import {
lastUsedNonceKey,
recycledNoncesKey,
sentNoncesKey,
} from "../../../shared/db/wallets/walletNonce";
import { getChain } from "../../../shared/utils/chain";
import { redis } from "../../../shared/utils/redis/redis";
import { thirdwebClient } from "../../../shared/utils/sdk";
} from "../../../db/wallets/walletNonce";
import { getChain } from "../../../utils/chain";
import { redis } from "../../../utils/redis/redis";
import { thirdwebClient } from "../../../utils/sdk";
import { AddressSchema } from "../../schemas/address";
import { standardResponseSchema } from "../../schemas/sharedApiSchemas";
import { walletWithAddressParamSchema } from "../../schemas/wallet";
Expand Down
14 changes: 7 additions & 7 deletions src/server/routes/admin/transaction.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { type Static, Type } from "@sinclair/typebox";
import type { Queue } from "bullmq";
import type { FastifyInstance } from "fastify";
import { Static, Type } from "@sinclair/typebox";
import { Queue } from "bullmq";
import { FastifyInstance } from "fastify";
import { StatusCodes } from "http-status-codes";
import { stringify } from "thirdweb/utils";
import { TransactionDB } from "../../../shared/db/transactions/db";
import { getConfig } from "../../../shared/utils/cache/getConfig";
import { maybeDate } from "../../../shared/utils/primitiveTypes";
import { redis } from "../../../shared/utils/redis/redis";
import { TransactionDB } from "../../../db/transactions/db";
import { getConfig } from "../../../utils/cache/getConfig";
import { maybeDate } from "../../../utils/primitiveTypes";
import { redis } from "../../../utils/redis/redis";
import { MineTransactionQueue } from "../../../worker/queues/mineTransactionQueue";
import { SendTransactionQueue } from "../../../worker/queues/sendTransactionQueue";
import { createCustomError } from "../../middleware/error";
Expand Down
Loading
Loading