From df6813e7368fa50e62aa6329bf9fc8283fa4ce99 Mon Sep 17 00:00:00 2001 From: KONFeature Date: Fri, 13 Dec 2024 18:25:42 +0100 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Upgrade=20ponder=20to=20v0?= =?UTF-8?q?.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 280629 -> 280612 bytes infra/utils.ts | 2 ++ packages/ponder/config/configBuilder.ts | 15 ++++---- packages/ponder/package.json | 2 +- packages/ponder/ponder-env.d.ts | 34 ++++++------------ packages/ponder/ponder.schema.ts | 2 +- packages/ponder/src/api/admin.ts | 8 ++--- packages/ponder/src/api/campaign.ts | 6 ++-- packages/ponder/src/api/index.ts | 2 +- packages/ponder/src/api/interactions.ts | 8 ++--- packages/ponder/src/api/members.ts | 20 +++++------ packages/ponder/src/api/products.ts | 8 ++--- packages/ponder/src/api/rewards.ts | 8 ++--- packages/ponder/src/api/stats.ts | 6 ++-- packages/ponder/src/api/tokens.ts | 6 ++-- packages/ponder/src/campaign/campaignBank.ts | 4 +-- .../ponder/src/campaign/campaignCreation.ts | 4 +-- .../src/campaign/campaignInteractionLink.ts | 7 ++-- packages/ponder/src/campaign/campaignReset.ts | 4 +-- .../ponder/src/campaign/campaignReward.ts | 8 ++--- packages/ponder/src/interactionDeployments.ts | 4 +-- .../src/interactions/pressInteractions.ts | 4 +-- .../src/interactions/purchaseInteractions.ts | 4 +-- .../src/interactions/referralInteractions.ts | 4 +-- packages/ponder/src/interactions/stats.ts | 10 +++--- .../src/interactions/webshopInteractions.ts | 4 +-- packages/ponder/src/product.ts | 4 +-- packages/ponder/src/productAdministrator.ts | 4 +-- packages/ponder/src/token.ts | 4 +-- 29 files changed, 92 insertions(+), 104 deletions(-) diff --git a/bun.lockb b/bun.lockb index 8430dfad10b1ae31e3b77bba069c40b718f71623..830c6d676509c5921877b59fac6fe097f4c4fe82 100755 GIT binary patch delta 25369 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 referralFeatureFacetAbi, purchaseFeatureFacetAbi, ]), - factory: { + address: factory({ address: deployedAddresses.productInteractionManager as Address, event: parseAbiItem( "event InteractionContractDeployed(uint256 indexed productId, address interactionContract)" ), parameter: "interactionContract", - }, + }), network: contractNetworkConfig, }, // The campaign factory @@ -236,13 +237,13 @@ export function createEnvConfig({ // Every campaigns Campaigns: { abi: mergeAbis([interactionCampaignAbi, referralCampaignAbi]), - factory: { + address: factory({ address: deployedAddresses.campaignFactory as Address, event: parseAbiItem( "event CampaignCreated(address campaign)" ), parameter: "campaign", - }, + }), network: contractNetworkConfig, }, // The campaign banks factory @@ -254,13 +255,13 @@ export function createEnvConfig({ // Every campaign banks CampaignBanks: { abi: campaignBankAbi, - factory: { + address: factory({ address: deployedAddresses.campaignBankFactory as Address, event: parseAbiItem( "event CampaignBankCreated(address campaignBank)" ), parameter: "campaignBank", - }, + }), network: contractNetworkConfig, }, }, diff --git a/packages/ponder/package.json b/packages/ponder/package.json index 4af5b27..f538ee1 100644 --- a/packages/ponder/package.json +++ b/packages/ponder/package.json @@ -21,9 +21,9 @@ "docker:run": "docker run -P ponder-dev" }, "dependencies": { - "@ponder/core": "0.7.17", "drizzle-orm": "0.36.4", "hono": "4.6.13", + "ponder": "^0.8.2", "viem": "^2.21.54" }, "devDependencies": { diff --git a/packages/ponder/ponder-env.d.ts b/packages/ponder/ponder-env.d.ts index e7f3009..b8c6a63 100644 --- a/packages/ponder/ponder-env.d.ts +++ b/packages/ponder/ponder-env.d.ts @@ -1,27 +1,15 @@ +/// + +declare module "ponder:internal" { + const config: typeof import("./ponder.config.ts"); + const schema: typeof import("./ponder.schema.ts"); +} + +declare module "ponder:schema" { + export * from "./ponder.schema.ts"; +} + // This file enables type checking and editor autocomplete for this Ponder project. // After upgrading, you may find that changes have been made to this file. // If this happens, please commit the changes. Do not manually edit this file. // See https://ponder.sh/docs/getting-started/installation#typescript for more information. - -declare module "@/generated" { - import type { Virtual } from "@ponder/core"; - - type config = typeof import("./ponder.config.ts").default; - type schema = typeof import("./ponder.schema.ts"); - - export const ponder: Virtual.Registry; - - export type EventNames = Virtual.EventNames; - export type Event = Virtual.Event< - config, - name - >; - export type Context = Virtual.Context< - config, - schema, - name - >; - export type ApiContext = Virtual.ApiContext; - export type IndexingFunctionArgs = - Virtual.IndexingFunctionArgs; -} diff --git a/packages/ponder/ponder.schema.ts b/packages/ponder/ponder.schema.ts index 945e692..8102538 100644 --- a/packages/ponder/ponder.schema.ts +++ b/packages/ponder/ponder.schema.ts @@ -1,4 +1,4 @@ -import { index, onchainEnum, onchainTable, primaryKey } from "@ponder/core"; +import { index, onchainEnum, onchainTable, primaryKey } from "ponder"; /* -------------------------------------------------------------------------- */ /* Product related stuff */ diff --git a/packages/ponder/src/api/admin.ts b/packages/ponder/src/api/admin.ts index 1b8e3aa..38d89ac 100644 --- a/packages/ponder/src/api/admin.ts +++ b/packages/ponder/src/api/admin.ts @@ -1,6 +1,4 @@ -import { ponder } from "@/generated"; -import { countDistinct, eq, inArray } from "@ponder/core"; -import { type Address, isAddress } from "viem"; +import { ponder } from "ponder:registry"; import { campaignTable, interactionEventTable, @@ -8,7 +6,9 @@ import { productInteractionContractTable, productTable, referralCampaignStatsTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { countDistinct, eq, inArray } from "ponder"; +import { type Address, isAddress } from "viem"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error diff --git a/packages/ponder/src/api/campaign.ts b/packages/ponder/src/api/campaign.ts index d7e9da3..1c3797e 100644 --- a/packages/ponder/src/api/campaign.ts +++ b/packages/ponder/src/api/campaign.ts @@ -1,7 +1,7 @@ -import { ponder } from "@/generated"; -import { eq } from "@ponder/core"; +import { ponder } from "ponder:registry"; +import { bankingContractTable, campaignTable } from "ponder:schema"; +import { eq } from "ponder"; import { type Address, type Hex, isAddress, isHex } from "viem"; -import { bankingContractTable, campaignTable } from "../../ponder.schema"; import { getTokens } from "./tokens"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/packages/ponder/src/api/index.ts b/packages/ponder/src/api/index.ts index c402444..9fa0fa9 100644 --- a/packages/ponder/src/api/index.ts +++ b/packages/ponder/src/api/index.ts @@ -1,4 +1,4 @@ -import { ponder } from "@/generated"; +import { ponder } from "ponder:registry"; ponder.get("/hello", async ({ text }) => { return text("Hello!"); diff --git a/packages/ponder/src/api/interactions.ts b/packages/ponder/src/api/interactions.ts index a31b58f..fc81031 100644 --- a/packages/ponder/src/api/interactions.ts +++ b/packages/ponder/src/api/interactions.ts @@ -1,11 +1,11 @@ -import { ponder } from "@/generated"; -import { desc, eq } from "@ponder/core"; -import { type Address, isAddress } from "viem"; +import { ponder } from "ponder:registry"; import { interactionEventTable, productInteractionContractTable, productTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { desc, eq } from "ponder"; +import { type Address, isAddress } from "viem"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error diff --git a/packages/ponder/src/api/members.ts b/packages/ponder/src/api/members.ts index c3332c3..6bf2310 100644 --- a/packages/ponder/src/api/members.ts +++ b/packages/ponder/src/api/members.ts @@ -1,4 +1,12 @@ -import { ponder } from "@/generated"; +import { ponder } from "ponder:registry"; +import { + interactionEventTable, + productAdministratorTable, + productInteractionContractTable, + productTable, + rewardTable, +} from "ponder:schema"; +import type { SQL } from "drizzle-orm"; import { and, asc, @@ -12,16 +20,8 @@ import { min, sql, sum, -} from "@ponder/core"; -import type { SQL } from "drizzle-orm"; +} from "ponder"; import { type Address, type Hex, isAddress } from "viem"; -import { - interactionEventTable, - productAdministratorTable, - productInteractionContractTable, - productTable, - rewardTable, -} from "../../ponder.schema"; /** * Params for the members fetching diff --git a/packages/ponder/src/api/products.ts b/packages/ponder/src/api/products.ts index 5ae470a..9da7ab7 100644 --- a/packages/ponder/src/api/products.ts +++ b/packages/ponder/src/api/products.ts @@ -1,6 +1,4 @@ -import { ponder } from "@/generated"; -import { eq, inArray } from "@ponder/core"; -import { type Hex, isHex, keccak256, toHex } from "viem"; +import { ponder } from "ponder:registry"; import { bankingContractTable, campaignTable, @@ -9,7 +7,9 @@ import { productTable, referralCampaignStatsTable, tokenTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { eq, inArray } from "ponder"; +import { type Hex, isHex, keccak256, toHex } from "viem"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error diff --git a/packages/ponder/src/api/rewards.ts b/packages/ponder/src/api/rewards.ts index 393f3f0..c316619 100644 --- a/packages/ponder/src/api/rewards.ts +++ b/packages/ponder/src/api/rewards.ts @@ -1,13 +1,13 @@ -import { ponder } from "@/generated"; -import { and, desc, eq, not } from "@ponder/core"; -import { type Address, isAddress } from "viem"; +import { ponder } from "ponder:registry"; import { bankingContractTable, productTable, rewardAddedEventTable, rewardClaimedEventTable, rewardTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { and, desc, eq, not } from "ponder"; +import { type Address, isAddress } from "viem"; import { getTokens } from "./tokens"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/packages/ponder/src/api/stats.ts b/packages/ponder/src/api/stats.ts index 909bed2..97c0695 100644 --- a/packages/ponder/src/api/stats.ts +++ b/packages/ponder/src/api/stats.ts @@ -1,10 +1,10 @@ -import { ponder } from "@/generated"; -import { count, countDistinct, eq, gte } from "@ponder/core"; +import { ponder } from "ponder:registry"; import { interactionEventTable, productInteractionContractTable, productTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { count, countDistinct, eq, gte } from "ponder"; /** * Get the overall system stats diff --git a/packages/ponder/src/api/tokens.ts b/packages/ponder/src/api/tokens.ts index 8a399ec..2f3b699 100644 --- a/packages/ponder/src/api/tokens.ts +++ b/packages/ponder/src/api/tokens.ts @@ -1,7 +1,7 @@ -import { type ApiContext, ponder } from "@/generated"; -import { eq, inArray } from "@ponder/core"; +import { type ApiContext, ponder } from "ponder:registry"; +import { tokenTable } from "ponder:schema"; +import { eq, inArray } from "ponder"; import { type Address, isAddress } from "viem"; -import { tokenTable } from "../../ponder.schema"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error diff --git a/packages/ponder/src/campaign/campaignBank.ts b/packages/ponder/src/campaign/campaignBank.ts index f23406b..67c590b 100644 --- a/packages/ponder/src/campaign/campaignBank.ts +++ b/packages/ponder/src/campaign/campaignBank.ts @@ -1,8 +1,8 @@ import * as console from "node:console"; -import { type Context, ponder } from "@/generated"; +import { type Context, ponder } from "ponder:registry"; +import { bankingContractTable, campaignTable } from "ponder:schema"; import { type Address, isAddressEqual } from "viem"; import { campaignBankAbi } from "../../abis/campaignAbis"; -import { bankingContractTable, campaignTable } from "../../ponder.schema"; import { upsertTokenIfNeeded } from "../token"; ponder.on( diff --git a/packages/ponder/src/campaign/campaignCreation.ts b/packages/ponder/src/campaign/campaignCreation.ts index 35577c6..2c655cf 100644 --- a/packages/ponder/src/campaign/campaignCreation.ts +++ b/packages/ponder/src/campaign/campaignCreation.ts @@ -1,10 +1,10 @@ -import { type Context, ponder } from "@/generated"; +import { type Context, ponder } from "ponder:registry"; +import { campaignTable, referralCampaignStatsTable } from "ponder:schema"; import type { Address } from "viem"; import { interactionCampaignAbi, referralCampaignAbi, } from "../../abis/campaignAbis"; -import { campaignTable, referralCampaignStatsTable } from "../../ponder.schema"; import { emptyCampaignStats } from "../interactions/stats"; import { bytesToString } from "../utils/format"; diff --git a/packages/ponder/src/campaign/campaignInteractionLink.ts b/packages/ponder/src/campaign/campaignInteractionLink.ts index 1af7bbb..3b28d9b 100644 --- a/packages/ponder/src/campaign/campaignInteractionLink.ts +++ b/packages/ponder/src/campaign/campaignInteractionLink.ts @@ -1,8 +1,5 @@ -import { ponder } from "@/generated"; -import { - campaignTable, - productInteractionContractTable, -} from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { campaignTable, productInteractionContractTable } from "ponder:schema"; import { upsertNewCampaign } from "./campaignCreation"; ponder.on("ProductInteraction:CampaignAttached", async ({ event, context }) => { diff --git a/packages/ponder/src/campaign/campaignReset.ts b/packages/ponder/src/campaign/campaignReset.ts index eb997a9..9ab33e2 100644 --- a/packages/ponder/src/campaign/campaignReset.ts +++ b/packages/ponder/src/campaign/campaignReset.ts @@ -1,5 +1,5 @@ -import { ponder } from "@/generated"; -import { campaignCapResetTable } from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { campaignCapResetTable } from "ponder:schema"; ponder.on( "Campaigns:DistributionCapReset", diff --git a/packages/ponder/src/campaign/campaignReward.ts b/packages/ponder/src/campaign/campaignReward.ts index 4825719..f697b22 100644 --- a/packages/ponder/src/campaign/campaignReward.ts +++ b/packages/ponder/src/campaign/campaignReward.ts @@ -1,10 +1,10 @@ -import { ponder } from "@/generated"; +import { ponder } from "ponder:registry"; import { bankingContractTable, rewardAddedEventTable, rewardClaimedEventTable, rewardTable, -} from "../../ponder.schema"; +} from "ponder:schema"; import { safeIncreaseCampaignsStats } from "../interactions/stats"; ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { @@ -49,7 +49,7 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { user: event.args.user, emitter: event.args.emitter, amount: event.args.amount, - txHash: event.log.transactionHash, + txHash: event.transaction.hash, timestamp: event.block.timestamp, }); @@ -104,7 +104,7 @@ ponder.on("CampaignBanks:RewardClaimed", async ({ event, context: { db } }) => { contractId: bankingContract.id, user: event.args.user, amount: event.args.amount, - txHash: event.log.transactionHash, + txHash: event.transaction.hash, timestamp: event.block.timestamp, }); }); diff --git a/packages/ponder/src/interactionDeployments.ts b/packages/ponder/src/interactionDeployments.ts index 4c24e46..1821543 100644 --- a/packages/ponder/src/interactionDeployments.ts +++ b/packages/ponder/src/interactionDeployments.ts @@ -1,6 +1,6 @@ -import { ponder } from "@/generated"; +import { ponder } from "ponder:registry"; +import { productInteractionContractTable } from "ponder:schema"; import { productInteractionDiamondAbi } from "../abis/interactionAbis"; -import { productInteractionContractTable } from "../ponder.schema"; ponder.on( "ProductInteractionManager:InteractionContractDeployed", diff --git a/packages/ponder/src/interactions/pressInteractions.ts b/packages/ponder/src/interactions/pressInteractions.ts index 01940d0..fc716e8 100644 --- a/packages/ponder/src/interactions/pressInteractions.ts +++ b/packages/ponder/src/interactions/pressInteractions.ts @@ -1,5 +1,5 @@ -import { ponder } from "@/generated"; -import { interactionEventTable } from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { interactionEventTable } from "ponder:schema"; import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:ArticleRead", async ({ event, context }) => { diff --git a/packages/ponder/src/interactions/purchaseInteractions.ts b/packages/ponder/src/interactions/purchaseInteractions.ts index 1ecc377..c2dbb6a 100644 --- a/packages/ponder/src/interactions/purchaseInteractions.ts +++ b/packages/ponder/src/interactions/purchaseInteractions.ts @@ -1,5 +1,5 @@ -import { ponder } from "@/generated"; -import { interactionEventTable } from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { interactionEventTable } from "ponder:schema"; import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:PurchaseStarted", async ({ event, context }) => { diff --git a/packages/ponder/src/interactions/referralInteractions.ts b/packages/ponder/src/interactions/referralInteractions.ts index e8a4478..5a560ae 100644 --- a/packages/ponder/src/interactions/referralInteractions.ts +++ b/packages/ponder/src/interactions/referralInteractions.ts @@ -1,5 +1,5 @@ -import { ponder } from "@/generated"; -import { interactionEventTable } from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { interactionEventTable } from "ponder:schema"; import { safeIncreaseCampaignsStats } from "./stats"; ponder.on( diff --git a/packages/ponder/src/interactions/stats.ts b/packages/ponder/src/interactions/stats.ts index 5015a71..b7544b6 100644 --- a/packages/ponder/src/interactions/stats.ts +++ b/packages/ponder/src/interactions/stats.ts @@ -1,12 +1,12 @@ -import type { Context } from "@/generated"; -import { and, desc, eq } from "@ponder/core"; -import type { Address } from "viem"; -import { interactionCampaignAbi } from "../../abis/campaignAbis"; +import type { Context } from "ponder:registry"; import { campaignTable, productInteractionContractTable, referralCampaignStatsTable, -} from "../../ponder.schema"; +} from "ponder:schema"; +import { and, desc, eq } from "ponder"; +import type { Address } from "viem"; +import { interactionCampaignAbi } from "../../abis/campaignAbis"; /** * Default campaign stats diff --git a/packages/ponder/src/interactions/webshopInteractions.ts b/packages/ponder/src/interactions/webshopInteractions.ts index 4720fa8..880ebf7 100644 --- a/packages/ponder/src/interactions/webshopInteractions.ts +++ b/packages/ponder/src/interactions/webshopInteractions.ts @@ -1,5 +1,5 @@ -import { ponder } from "@/generated"; -import { interactionEventTable } from "../../ponder.schema"; +import { ponder } from "ponder:registry"; +import { interactionEventTable } from "ponder:schema"; import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:WebShopOpenned", async ({ event, context }) => { diff --git a/packages/ponder/src/product.ts b/packages/ponder/src/product.ts index 4e30820..d21e95c 100644 --- a/packages/ponder/src/product.ts +++ b/packages/ponder/src/product.ts @@ -1,6 +1,6 @@ -import { ponder } from "@/generated"; +import { ponder } from "ponder:registry"; +import { productTable } from "ponder:schema"; import { productRegistryAbi } from "../abis/registryAbis"; -import { productTable } from "../ponder.schema"; import { bytesToString } from "./utils/format"; ponder.on("ProductRegistry:ProductMinted", async ({ event, context }) => { diff --git a/packages/ponder/src/productAdministrator.ts b/packages/ponder/src/productAdministrator.ts index 1d293ab..8bcb663 100644 --- a/packages/ponder/src/productAdministrator.ts +++ b/packages/ponder/src/productAdministrator.ts @@ -1,6 +1,6 @@ -import { type Context, ponder } from "@/generated"; +import { type Context, ponder } from "ponder:registry"; +import { productAdministratorTable } from "ponder:schema"; import { isAddressEqual, zeroAddress } from "viem"; -import { productAdministratorTable } from "../ponder.schema"; /* * Handle transfer stuff diff --git a/packages/ponder/src/token.ts b/packages/ponder/src/token.ts index e1180f9..f049b72 100644 --- a/packages/ponder/src/token.ts +++ b/packages/ponder/src/token.ts @@ -1,7 +1,7 @@ import console from "node:console"; -import type { Context } from "@/generated"; +import type { Context } from "ponder:registry"; +import { tokenTable } from "ponder:schema"; import { type Address, erc20Abi } from "viem"; -import { tokenTable } from "../ponder.schema"; export async function upsertTokenIfNeeded({ address,