From 265d63111097de6941650a77d219ecad6ac1950c Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 13 Nov 2024 14:10:59 +0100 Subject: [PATCH 1/9] =?UTF-8?q?=F0=9F=9A=A7=20Startup=20ponder=200.7=20mig?= =?UTF-8?q?ration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lock cause foreign key isn't supported yet --- packages/ponder/package.json | 2 +- packages/ponder/ponder.config.ts | 14 + packages/ponder/ponder.schema-old.ts | 293 +++++++++++++++ packages/ponder/ponder.schema.ts | 539 +++++++++++++-------------- pnpm-lock.yaml | 102 ++++- 5 files changed, 665 insertions(+), 285 deletions(-) create mode 100644 packages/ponder/ponder.config.ts create mode 100644 packages/ponder/ponder.schema-old.ts diff --git a/packages/ponder/package.json b/packages/ponder/package.json index a827f75..71b97aa 100644 --- a/packages/ponder/package.json +++ b/packages/ponder/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@ponder/core": "0.6.24", - "drizzle-orm": "^0.31.4", + "drizzle-orm": "0.34.1", "hono": "4.6.8", "viem": "^2.21.40" }, diff --git a/packages/ponder/ponder.config.ts b/packages/ponder/ponder.config.ts new file mode 100644 index 0000000..0de07fa --- /dev/null +++ b/packages/ponder/ponder.config.ts @@ -0,0 +1,14 @@ +import { createEnvConfig } from "./config/configBuilder"; + +/** + * Default config, needed the file auto gen + * - waiting for this to be merged: https://github.com/ponder-sh/ponder/pull/1116 + */ +export default createEnvConfig({ + pgDatabase: "ponder_dev", + network: { + chainId: 421614, + deploymentBlock: 86607902, + }, + networkKey: "arbitrumSepolia", +}); diff --git a/packages/ponder/ponder.schema-old.ts b/packages/ponder/ponder.schema-old.ts new file mode 100644 index 0000000..5f5f7d0 --- /dev/null +++ b/packages/ponder/ponder.schema-old.ts @@ -0,0 +1,293 @@ +import { createSchema } from "@ponder/core"; + +export default createSchema((p) => ({ + /* -------------------------------------------------------------------------- */ + /* Product related stuff */ + /* -------------------------------------------------------------------------- */ + + Product: p.createTable({ + id: p.bigint(), + + domain: p.string(), + productTypes: p.bigint(), + name: p.string(), + + createTimestamp: p.bigint(), + lastUpdateTimestamp: p.bigint().optional(), + + metadataUrl: p.string().optional(), + + interactionContracts: p.many("ProductInteractionContract.productId"), + + campaigns: p.many("Campaign.productId"), + administrators: p.many("ProductAdministrator.productId"), + banks: p.many("BankingContract.productId"), + }), + + // Product related stuff + ProductAdministrator: p.createTable( + { + id: p.hex(), + + productId: p.bigint().references("Product.id"), + product: p.one("productId"), + + isOwner: p.boolean(), + roles: p.bigint(), + user: p.hex(), + + createdTimestamp: p.bigint(), + }, + { + productIndex: p.index("productId"), + userIndex: p.index("user"), + } + ), + + /* -------------------------------------------------------------------------- */ + /* Interaction related stuff */ + /* -------------------------------------------------------------------------- */ + + ProductInteractionContract: p.createTable( + { + id: p.hex(), // address + + productId: p.bigint().references("Product.id"), + product: p.one("productId"), + + referralTree: p.hex(), + + createdTimestamp: p.bigint(), + lastUpdateTimestamp: p.bigint().optional(), + removedTimestamp: p.bigint().optional(), + }, + { + productIndex: p.index("productId"), + } + ), + + InteractionEvent: p.createTable( + { + id: p.string(), + + interactionId: p.hex().references("ProductInteractionContract.id"), + interaction: p.one("interactionId"), + + user: p.hex(), + type: p.enum("InteractionEventType"), + data: p.json().optional(), + + timestamp: p.bigint(), + }, + { + interactionIndex: p.index("interactionId"), + userIndex: p.index("user"), + + userInteractionIndex: p.index(["user", "interactionId"]), + } + ), + + InteractionEventType: p.createEnum([ + // Referral type + "REFERRED", + "CREATE_REFERRAL_LINK", + // Press type + "OPEN_ARTICLE", + "READ_ARTICLE", + // Purchase type + "PURCHASE_STARTED", + "PURCHASE_COMPLETED", + // Webshop type + "WEBSHOP_OPENNED", + ]), + + /* -------------------------------------------------------------------------- */ + /* Campaign related stuff */ + /* -------------------------------------------------------------------------- */ + + Campaign: p.createTable( + { + id: p.hex(), + + type: p.string(), + name: p.string(), + version: p.string(), + + productId: p.bigint().references("Product.id"), + product: p.one("productId"), + + interactionContractId: p + .hex() + .references("ProductInteractionContract.id"), + interactionContract: p.one("interactionContractId"), + + attached: p.boolean(), + + attachTimestamp: p.bigint(), + detachTimestamp: p.bigint().optional(), + + bankingContractId: p + .hex() + .references("BankingContract.id") + .optional(), + bankingContract: p.one("bankingContractId"), + isAuthorisedOnBanking: p.boolean(), + + capResets: p.many("CampaignCapReset.campaignId"), + stats: p.many("ReferralCampaignStats.campaignId"), + }, + { + productIndex: p.index("productId"), + interactionContractIndex: p.index("interactionContractId"), + bankingContractIndex: p.index("bankingContractId"), + } + ), + ReferralCampaignStats: p.createTable( + { + id: p.hex(), + + campaignId: p.hex().references("Campaign.id"), + campaign: p.one("campaignId"), + + totalInteractions: p.bigint(), + + // Press related interactions + openInteractions: p.bigint(), + readInteractions: p.bigint(), + + // Referral related interactions + referredInteractions: p.bigint(), + createReferredLinkInteractions: p.bigint(), + + // purchase related interactions + purchaseStartedInteractions: p.bigint(), + purchaseCompletedInteractions: p.bigint(), + + // webshop related interactions + webshopOpenned: p.bigint(), + + totalRewards: p.bigint(), + }, + { + campaignIndex: p.index("campaignId"), + } + ), + CampaignCapReset: p.createTable( + { + id: p.string(), // campaign address + timestamp + + campaignId: p.hex().references("Campaign.id"), + campaign: p.one("campaignId"), + + timestamp: p.bigint(), + previousTimestamp: p.bigint(), + distributedAmount: p.bigint(), + }, + { + campaignIndex: p.index("campaignId"), + } + ), + + /* -------------------------------------------------------------------------- */ + /* Rewards related stuff */ + /* -------------------------------------------------------------------------- */ + Token: p.createTable({ + // Address of the token contract + id: p.hex(), + + // Token information + decimals: p.int(), + name: p.string(), + symbol: p.string(), + }), + BankingContract: p.createTable( + { + // Address of the rewarding contract + id: p.hex(), + + // Address of the token that will be distributed + tokenId: p.hex().references("Token.id"), + token: p.one("tokenId"), + + // Address of the product linked to this contract + productId: p.bigint().references("Product.id"), + product: p.one("productId"), + + // The total amount distributed and claimed + totalDistributed: p.bigint(), + totalClaimed: p.bigint(), + + // Is the bank still distributing? + isDistributing: p.boolean(), + + // All the rewards + rewards: p.many("Reward.contractId"), + + // All the attached cmapaigns + campaigns: p.many("Campaign.bankingContractId"), + }, + { + tokenIndex: p.index("tokenId"), + productIndex: p.index("productId"), + } + ), + Reward: p.createTable( + { + id: p.string(), // reward contract + user + + contractId: p.hex().references("BankingContract.id"), + contract: p.one("contractId"), + + user: p.hex(), + + pendingAmount: p.bigint(), + totalReceived: p.bigint(), + totalClaimed: p.bigint(), + + rewardAddedEvents: p.many("RewardAddedEvent.rewardId"), + rewardClaimedEvents: p.many("RewardClaimedEvent.rewardId"), + }, + { + userIndex: p.index("user"), + contractIndex: p.index("contractId"), + + userContractIndex: p.index(["user", "contractId"]), + } + ), + RewardAddedEvent: p.createTable( + { + id: p.string(), + + rewardId: p.string().references("Reward.id"), + reward: p.one("rewardId"), + + // Emitter of the reward (campaign sending it) + emitter: p.hex(), + + amount: p.bigint(), + + txHash: p.hex(), + timestamp: p.bigint(), + }, + { + rewardIndex: p.index("rewardId"), + emitterIndex: p.index("emitter"), + } + ), + RewardClaimedEvent: p.createTable( + { + id: p.string(), + + rewardId: p.string().references("Reward.id"), + reward: p.one("rewardId"), + + amount: p.bigint(), + + txHash: p.hex(), + timestamp: p.bigint(), + }, + { + rewardIndex: p.index("rewardId"), + } + ), +})); diff --git a/packages/ponder/ponder.schema.ts b/packages/ponder/ponder.schema.ts index 5f5f7d0..0dcb3ee 100644 --- a/packages/ponder/ponder.schema.ts +++ b/packages/ponder/ponder.schema.ts @@ -1,293 +1,268 @@ -import { createSchema } from "@ponder/core"; +import { index, onchainEnum, onchainTable } from "@ponder/core"; -export default createSchema((p) => ({ - /* -------------------------------------------------------------------------- */ - /* Product related stuff */ - /* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ +/* Product related stuff */ +/* -------------------------------------------------------------------------- */ - Product: p.createTable({ - id: p.bigint(), +export const productTable = onchainTable("Product", (t) => ({ + id: t.bigint().primaryKey(), - domain: p.string(), - productTypes: p.bigint(), - name: p.string(), + domain: t.varchar().notNull(), + productTypes: t.bigint().notNull(), + name: t.varchar().notNull(), - createTimestamp: p.bigint(), - lastUpdateTimestamp: p.bigint().optional(), + createTimestamp: t.bigint().notNull(), + lastUpdateTimestamp: t.bigint(), - metadataUrl: p.string().optional(), + metadataUrl: t.varchar(), +})); + +export const productAdministratorTable = onchainTable( + "ProductAdministrator", + (t) => ({ + id: t.hex().primaryKey(), + + productId: t + .bigint() + .notNull() + .references(() => productTable.id), - interactionContracts: p.many("ProductInteractionContract.productId"), + isOwner: t.boolean().notNull(), + roles: t.bigint().notNull(), + user: t.hex().notNull(), - campaigns: p.many("Campaign.productId"), - administrators: p.many("ProductAdministrator.productId"), - banks: p.many("BankingContract.productId"), + createdTimestamp: t.bigint().notNull(), + }), + (table) => ({ + productIdIdx: index().on(table.productId), + userIdx: index().on(table.user), + }) +); + +export const productInteractionContractTable = onchainTable( + "ProductInteractionContract", + (t) => ({ + id: t.hex().primaryKey(), + + productId: t + .bigint() + .notNull() + .references(() => productTable.id), + referralTree: t.hex().notNull(), + + createdTimestamp: t.bigint().notNull(), + lastUpdateTimestamp: t.bigint(), + removedTimestamp: t.bigint(), + }), + (table) => ({ + productIdIdx: index().on(table.productId), + }) +); + +/* -------------------------------------------------------------------------- */ +/* Interaction related stuff */ +/* -------------------------------------------------------------------------- */ + +export const interactionEventTypeEnum = onchainEnum("InteractionEventType", [ + // Referral type + "REFERRED", + "CREATE_REFERRAL_LINK", + // Press type + "OPEN_ARTICLE", + "READ_ARTICLE", + // Purchase type + "PURCHASE_STARTED", + "PURCHASE_COMPLETED", + // Webshop type + "WEBSHOP_OPENNED", +]); + +export const interactionEventTable = onchainTable( + "InteractionEvent", + (t) => ({ + id: t.varchar().primaryKey(), + + interactionId: t + .hex() + .notNull() + .references(() => productInteractionContractTable.id), + user: t.hex().notNull(), + type: interactionEventTypeEnum().notNull(), + data: t.json(), + + timestamp: t.bigint().notNull(), }), + (table) => ({ + interactionIdx: index().on(table.interactionId), + userIdx: index().on(table.user), + userInteractionIdx: index().on(table.user, table.interactionId), + }) +); + +/* -------------------------------------------------------------------------- */ +/* Campaign related stuff */ +/* -------------------------------------------------------------------------- */ + +export const campaignTable = onchainTable( + "Campaign", + (t) => ({ + id: t.hex().primaryKey(), + + type: t.varchar().notNull(), + name: t.varchar().notNull(), + version: t.varchar().notNull(), + + productId: t + .bigint() + .notNull() + .references(() => productTable.id), + interactionContractId: t + .hex() + .notNull() + .references(() => productInteractionContractTable.id), + attached: t.boolean().notNull(), + + attachTimestamp: t.bigint().notNull(), + detachTimestamp: t.bigint(), + + bankingContractId: t.hex().references(() => bankingContractTable.id), + isAuthorisedOnBanking: t.boolean().notNull(), + }), + (table) => ({ + productIdIdx: index().on(table.productId), + interactionContractIdx: index().on(table.interactionContractId), + bankingContractIdx: index().on(table.bankingContractId), + }) +); + +export const referralCampaignStatsTable = onchainTable( + "ReferralCampaignStats", + (t) => ({ + id: t.hex().primaryKey(), + + campaignId: t + .hex() + .notNull() + .references(() => campaignTable.id), + + totalInteractions: t.bigint().notNull(), - // Product related stuff - ProductAdministrator: p.createTable( - { - id: p.hex(), - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - isOwner: p.boolean(), - roles: p.bigint(), - user: p.hex(), - - createdTimestamp: p.bigint(), - }, - { - productIndex: p.index("productId"), - userIndex: p.index("user"), - } - ), - - /* -------------------------------------------------------------------------- */ - /* Interaction related stuff */ - /* -------------------------------------------------------------------------- */ - - ProductInteractionContract: p.createTable( - { - id: p.hex(), // address - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - referralTree: p.hex(), - - createdTimestamp: p.bigint(), - lastUpdateTimestamp: p.bigint().optional(), - removedTimestamp: p.bigint().optional(), - }, - { - productIndex: p.index("productId"), - } - ), - - InteractionEvent: p.createTable( - { - id: p.string(), - - interactionId: p.hex().references("ProductInteractionContract.id"), - interaction: p.one("interactionId"), - - user: p.hex(), - type: p.enum("InteractionEventType"), - data: p.json().optional(), - - timestamp: p.bigint(), - }, - { - interactionIndex: p.index("interactionId"), - userIndex: p.index("user"), - - userInteractionIndex: p.index(["user", "interactionId"]), - } - ), - - InteractionEventType: p.createEnum([ - // Referral type - "REFERRED", - "CREATE_REFERRAL_LINK", - // Press type - "OPEN_ARTICLE", - "READ_ARTICLE", - // Purchase type - "PURCHASE_STARTED", - "PURCHASE_COMPLETED", - // Webshop type - "WEBSHOP_OPENNED", - ]), - - /* -------------------------------------------------------------------------- */ - /* Campaign related stuff */ - /* -------------------------------------------------------------------------- */ - - Campaign: p.createTable( - { - id: p.hex(), - - type: p.string(), - name: p.string(), - version: p.string(), - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - interactionContractId: p - .hex() - .references("ProductInteractionContract.id"), - interactionContract: p.one("interactionContractId"), - - attached: p.boolean(), - - attachTimestamp: p.bigint(), - detachTimestamp: p.bigint().optional(), - - bankingContractId: p - .hex() - .references("BankingContract.id") - .optional(), - bankingContract: p.one("bankingContractId"), - isAuthorisedOnBanking: p.boolean(), - - capResets: p.many("CampaignCapReset.campaignId"), - stats: p.many("ReferralCampaignStats.campaignId"), - }, - { - productIndex: p.index("productId"), - interactionContractIndex: p.index("interactionContractId"), - bankingContractIndex: p.index("bankingContractId"), - } - ), - ReferralCampaignStats: p.createTable( - { - id: p.hex(), - - campaignId: p.hex().references("Campaign.id"), - campaign: p.one("campaignId"), - - totalInteractions: p.bigint(), - - // Press related interactions - openInteractions: p.bigint(), - readInteractions: p.bigint(), - - // Referral related interactions - referredInteractions: p.bigint(), - createReferredLinkInteractions: p.bigint(), - - // purchase related interactions - purchaseStartedInteractions: p.bigint(), - purchaseCompletedInteractions: p.bigint(), - - // webshop related interactions - webshopOpenned: p.bigint(), - - totalRewards: p.bigint(), - }, - { - campaignIndex: p.index("campaignId"), - } - ), - CampaignCapReset: p.createTable( - { - id: p.string(), // campaign address + timestamp - - campaignId: p.hex().references("Campaign.id"), - campaign: p.one("campaignId"), - - timestamp: p.bigint(), - previousTimestamp: p.bigint(), - distributedAmount: p.bigint(), - }, - { - campaignIndex: p.index("campaignId"), - } - ), - - /* -------------------------------------------------------------------------- */ - /* Rewards related stuff */ - /* -------------------------------------------------------------------------- */ - Token: p.createTable({ - // Address of the token contract - id: p.hex(), - - // Token information - decimals: p.int(), - name: p.string(), - symbol: p.string(), + openInteractions: t.bigint().notNull(), + readInteractions: t.bigint().notNull(), + + referredInteractions: t.bigint().notNull(), + createReferredLinkInteractions: t.bigint().notNull(), + + purchaseStartedInteractions: t.bigint().notNull(), + purchaseCompletedInteractions: t.bigint().notNull(), + + webshopOpenned: t.bigint().notNull(), + + totalRewards: t.bigint().notNull(), + }), + (table) => ({ + campaignIdx: index().on(table.campaignId), + }) +); + +export const campaignCapResetTable = onchainTable( + "CampaignCapReset", + (t) => ({ + id: t.varchar().primaryKey(), + + campaignId: t + .hex() + .notNull() + .references(() => campaignTable.id), + timestamp: t.bigint().notNull(), + previousTimestamp: t.bigint().notNull(), + distributedAmount: t.bigint().notNull(), }), - BankingContract: p.createTable( - { - // Address of the rewarding contract - id: p.hex(), - - // Address of the token that will be distributed - tokenId: p.hex().references("Token.id"), - token: p.one("tokenId"), - - // Address of the product linked to this contract - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - // The total amount distributed and claimed - totalDistributed: p.bigint(), - totalClaimed: p.bigint(), - - // Is the bank still distributing? - isDistributing: p.boolean(), - - // All the rewards - rewards: p.many("Reward.contractId"), - - // All the attached cmapaigns - campaigns: p.many("Campaign.bankingContractId"), - }, - { - tokenIndex: p.index("tokenId"), - productIndex: p.index("productId"), - } - ), - Reward: p.createTable( - { - id: p.string(), // reward contract + user - - contractId: p.hex().references("BankingContract.id"), - contract: p.one("contractId"), - - user: p.hex(), - - pendingAmount: p.bigint(), - totalReceived: p.bigint(), - totalClaimed: p.bigint(), - - rewardAddedEvents: p.many("RewardAddedEvent.rewardId"), - rewardClaimedEvents: p.many("RewardClaimedEvent.rewardId"), - }, - { - userIndex: p.index("user"), - contractIndex: p.index("contractId"), - - userContractIndex: p.index(["user", "contractId"]), - } - ), - RewardAddedEvent: p.createTable( - { - id: p.string(), - - rewardId: p.string().references("Reward.id"), - reward: p.one("rewardId"), - - // Emitter of the reward (campaign sending it) - emitter: p.hex(), - - amount: p.bigint(), - - txHash: p.hex(), - timestamp: p.bigint(), - }, - { - rewardIndex: p.index("rewardId"), - emitterIndex: p.index("emitter"), - } - ), - RewardClaimedEvent: p.createTable( - { - id: p.string(), - - rewardId: p.string().references("Reward.id"), - reward: p.one("rewardId"), - - amount: p.bigint(), - - txHash: p.hex(), - timestamp: p.bigint(), - }, - { - rewardIndex: p.index("rewardId"), - } - ), + (table) => ({ + campaignIdx: index().on(table.campaignId), + }) +); +/* -------------------------------------------------------------------------- */ +/* Rewards related stuff */ +/* -------------------------------------------------------------------------- */ + +export const tokenTable = onchainTable("Token", (t) => ({ + id: t.hex().primaryKey(), + decimals: t.integer().notNull(), + name: t.varchar().notNull(), + symbol: t.varchar().notNull(), })); +export const bankingContractTable = onchainTable( + "BankingContract", + (t) => ({ + id: t.hex().primaryKey(), + tokenId: t + .hex() + .notNull() + .references(() => tokenTable.id), + productId: t + .bigint() + .notNull() + .references(() => productTable.id), + totalDistributed: t.bigint().notNull(), + totalClaimed: t.bigint().notNull(), + isDistributing: t.boolean().notNull(), + }), + (table) => ({ + tokenIdIdx: index().on(table.tokenId), + productIdIdx: index().on(table.productId), + }) +); +export const rewardTable = onchainTable( + "Reward", + (t) => ({ + id: t.varchar().primaryKey(), + contractId: t + .hex() + .notNull() + .references(() => bankingContractTable.id), + user: t.hex().notNull(), + pendingAmount: t.bigint().notNull(), + totalReceived: t.bigint().notNull(), + totalClaimed: t.bigint().notNull(), + }), + (table) => ({ + userIdx: index().on(table.user), + contractIdx: index().on(table.contractId), + userContractIdx: index().on(table.user, table.contractId), + }) +); +export const rewardAddedEventTable = onchainTable( + "RewardAddedEvent", + (t) => ({ + id: t.varchar().primaryKey(), + rewardId: t + .varchar() + .notNull() + .references(() => rewardTable.id), + emitter: t.hex().notNull(), + amount: t.bigint().notNull(), + txHash: t.hex().notNull(), + timestamp: t.bigint().notNull(), + }), + (table) => ({ + rewardIdx: index().on(table.rewardId), + emitterIdx: index().on(table.emitter), + }) +); +export const rewardClaimedEventTable = onchainTable( + "RewardClaimedEvent", + (t) => ({ + id: t.varchar().primaryKey(), + rewardId: t + .varchar() + .notNull() + .references(() => rewardTable.id), + amount: t.bigint().notNull(), + txHash: t.hex().notNull(), + timestamp: t.bigint().notNull(), + }), + (table) => ({ + rewardIdx: index().on(table.rewardId), + }) +); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4537f2c..4aa6ac5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,8 +61,8 @@ importers: specifier: 0.6.24 version: 0.6.24(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(hono@4.6.8)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) drizzle-orm: - specifier: ^0.31.4 - version: 0.31.4(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) + specifier: 0.34.1 + version: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) hono: specifier: 4.6.8 version: 4.6.8 @@ -1841,6 +1841,95 @@ packages: sqlite3: optional: true + drizzle-orm@0.34.1: + resolution: {integrity: sha512-t+zCwyWWt8xTqtYV4doE/xYmT7hpv1L8pQ66zddEz+3VWyedBBtctjMAp22mAJPfyWurRQXUJ1nrTtqLq+DqNA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@electric-sql/pglite': '>=0.1.1' + '@libsql/client': '>=0.10.0' + '@neondatabase/serverless': '>=0.1' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=13.2.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -5668,6 +5757,15 @@ snapshots: pg: 8.13.1 react: 18.3.1 + drizzle-orm@0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1): + optionalDependencies: + '@aws-sdk/client-rds-data': 3.665.0(aws-crt@1.22.0) + '@opentelemetry/api': 1.9.0 + better-sqlite3: 11.5.0 + kysely: 0.26.3 + pg: 8.13.1 + react: 18.3.1 + dset@3.1.4: {} duplexify@3.7.1: From 1449a0d1395953cbc14d0dd5d891d442d84497da Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 20 Nov 2024 00:49:04 +0100 Subject: [PATCH 2/9] =?UTF-8?q?=F0=9F=90=9B=20Remove=20references=20from?= =?UTF-8?q?=20ponder=20schema=20defenition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/package.json | 4 +- packages/ponder/ponder-env.d.ts | 7 +- packages/ponder/ponder.schema.ts | 86 +-- packages/ponder/sst-env.d.ts | 21 +- pnpm-lock.yaml | 1067 ++++++++++++++++++++++-------- 5 files changed, 845 insertions(+), 340 deletions(-) diff --git a/packages/ponder/package.json b/packages/ponder/package.json index 71b97aa..7e5ca3e 100644 --- a/packages/ponder/package.json +++ b/packages/ponder/package.json @@ -18,9 +18,9 @@ "typecheck": "tsc" }, "dependencies": { - "@ponder/core": "0.6.24", + "@ponder/core": "0.7.7", "drizzle-orm": "0.34.1", - "hono": "4.6.8", + "hono": "4.6.10", "viem": "^2.21.40" }, "devDependencies": { diff --git a/packages/ponder/ponder-env.d.ts b/packages/ponder/ponder-env.d.ts index 6ca65e7..e7f3009 100644 --- a/packages/ponder/ponder-env.d.ts +++ b/packages/ponder/ponder-env.d.ts @@ -6,8 +6,8 @@ declare module "@/generated" { import type { Virtual } from "@ponder/core"; - type config = typeof import("./config/config-local.ts").default; - type schema = typeof import("./ponder.schema.ts").default; + type config = typeof import("./ponder.config.ts").default; + type schema = typeof import("./ponder.schema.ts"); export const ponder: Virtual.Registry; @@ -21,8 +21,7 @@ declare module "@/generated" { schema, name >; - export type ApiContext = Virtual.Drizzle; + export type ApiContext = Virtual.ApiContext; export type IndexingFunctionArgs = Virtual.IndexingFunctionArgs; - export type Schema = Virtual.Schema; } diff --git a/packages/ponder/ponder.schema.ts b/packages/ponder/ponder.schema.ts index 0dcb3ee..e46865e 100644 --- a/packages/ponder/ponder.schema.ts +++ b/packages/ponder/ponder.schema.ts @@ -4,28 +4,31 @@ import { index, onchainEnum, onchainTable } from "@ponder/core"; /* Product related stuff */ /* -------------------------------------------------------------------------- */ -export const productTable = onchainTable("Product", (t) => ({ - id: t.bigint().primaryKey(), +export const productTable = onchainTable( + "Product", + (t) => ({ + id: t.bigint().primaryKey(), - domain: t.varchar().notNull(), - productTypes: t.bigint().notNull(), - name: t.varchar().notNull(), + domain: t.varchar().notNull(), + productTypes: t.bigint().notNull(), + name: t.varchar().notNull(), - createTimestamp: t.bigint().notNull(), - lastUpdateTimestamp: t.bigint(), + createTimestamp: t.bigint().notNull(), + lastUpdateTimestamp: t.bigint(), - metadataUrl: t.varchar(), -})); + metadataUrl: t.varchar(), + }), + (table) => ({ + domainIdx: index().on(table.domain), + }) +); export const productAdministratorTable = onchainTable( "ProductAdministrator", (t) => ({ id: t.hex().primaryKey(), - productId: t - .bigint() - .notNull() - .references(() => productTable.id), + productId: t.bigint().notNull(), isOwner: t.boolean().notNull(), roles: t.bigint().notNull(), @@ -44,10 +47,7 @@ export const productInteractionContractTable = onchainTable( (t) => ({ id: t.hex().primaryKey(), - productId: t - .bigint() - .notNull() - .references(() => productTable.id), + productId: t.bigint().notNull(), referralTree: t.hex().notNull(), createdTimestamp: t.bigint().notNull(), @@ -82,10 +82,7 @@ export const interactionEventTable = onchainTable( (t) => ({ id: t.varchar().primaryKey(), - interactionId: t - .hex() - .notNull() - .references(() => productInteractionContractTable.id), + interactionId: t.hex().notNull(), user: t.hex().notNull(), type: interactionEventTypeEnum().notNull(), data: t.json(), @@ -112,20 +109,14 @@ export const campaignTable = onchainTable( name: t.varchar().notNull(), version: t.varchar().notNull(), - productId: t - .bigint() - .notNull() - .references(() => productTable.id), - interactionContractId: t - .hex() - .notNull() - .references(() => productInteractionContractTable.id), + productId: t.bigint().notNull(), + interactionContractId: t.hex().notNull(), attached: t.boolean().notNull(), attachTimestamp: t.bigint().notNull(), detachTimestamp: t.bigint(), - bankingContractId: t.hex().references(() => bankingContractTable.id), + bankingContractId: t.hex(), isAuthorisedOnBanking: t.boolean().notNull(), }), (table) => ({ @@ -140,10 +131,7 @@ export const referralCampaignStatsTable = onchainTable( (t) => ({ id: t.hex().primaryKey(), - campaignId: t - .hex() - .notNull() - .references(() => campaignTable.id), + campaignId: t.hex().notNull(), totalInteractions: t.bigint().notNull(), @@ -170,10 +158,7 @@ export const campaignCapResetTable = onchainTable( (t) => ({ id: t.varchar().primaryKey(), - campaignId: t - .hex() - .notNull() - .references(() => campaignTable.id), + campaignId: t.hex().notNull(), timestamp: t.bigint().notNull(), previousTimestamp: t.bigint().notNull(), distributedAmount: t.bigint().notNull(), @@ -196,14 +181,8 @@ export const bankingContractTable = onchainTable( "BankingContract", (t) => ({ id: t.hex().primaryKey(), - tokenId: t - .hex() - .notNull() - .references(() => tokenTable.id), - productId: t - .bigint() - .notNull() - .references(() => productTable.id), + tokenId: t.hex().notNull(), + productId: t.bigint().notNull(), totalDistributed: t.bigint().notNull(), totalClaimed: t.bigint().notNull(), isDistributing: t.boolean().notNull(), @@ -217,10 +196,7 @@ export const rewardTable = onchainTable( "Reward", (t) => ({ id: t.varchar().primaryKey(), - contractId: t - .hex() - .notNull() - .references(() => bankingContractTable.id), + contractId: t.hex().notNull(), user: t.hex().notNull(), pendingAmount: t.bigint().notNull(), totalReceived: t.bigint().notNull(), @@ -236,10 +212,7 @@ export const rewardAddedEventTable = onchainTable( "RewardAddedEvent", (t) => ({ id: t.varchar().primaryKey(), - rewardId: t - .varchar() - .notNull() - .references(() => rewardTable.id), + rewardId: t.varchar().notNull(), emitter: t.hex().notNull(), amount: t.bigint().notNull(), txHash: t.hex().notNull(), @@ -254,10 +227,7 @@ export const rewardClaimedEventTable = onchainTable( "RewardClaimedEvent", (t) => ({ id: t.varchar().primaryKey(), - rewardId: t - .varchar() - .notNull() - .references(() => rewardTable.id), + rewardId: t.varchar().notNull(), amount: t.bigint().notNull(), txHash: t.hex().notNull(), timestamp: t.bigint().notNull(), diff --git a/packages/ponder/sst-env.d.ts b/packages/ponder/sst-env.d.ts index 8254767..46ff1c0 100644 --- a/packages/ponder/sst-env.d.ts +++ b/packages/ponder/sst-env.d.ts @@ -2,17 +2,16 @@ /* tslint:disable */ /* eslint-disable */ /* deno-fmt-ignore-file */ -import "sst" -export {} +import "sst"; declare module "sst" { - export interface Resource { - "MasterVpc": { - "bastion": string - "type": "sst.aws.Vpc" + export interface Resource { + MasterVpc: { + bastion: string; + type: "sst.aws.Vpc"; + }; + PonderDevIndexer: { + service: string; + type: "sst.aws.Service"; + }; } - "PonderDevIndexer": { - "service": string - "type": "sst.aws.Service" - } - } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4aa6ac5..98f85a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: sst: specifier: 3.3.22 - version: 3.3.22(hono@4.6.8) + version: 3.3.22(hono@4.6.10) devDependencies: '@biomejs/biome': specifier: 1.9.4 @@ -47,7 +47,7 @@ importers: version: 22.5.5 sst: specifier: 3.3.22 - version: 3.3.22(hono@4.6.8) + version: 3.3.22(hono@4.6.10) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -58,14 +58,14 @@ importers: packages/ponder: dependencies: '@ponder/core': - specifier: 0.6.24 - version: 0.6.24(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(hono@4.6.8)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) + specifier: 0.7.7 + version: 0.7.7(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) drizzle-orm: specifier: 0.34.1 - version: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) + version: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) hono: - specifier: 4.6.8 - version: 4.6.8 + specifier: 4.6.10 + version: 4.6.10 viem: specifier: ^2.21.40 version: 2.21.40(typescript@5.6.3)(zod@3.23.8) @@ -81,7 +81,7 @@ importers: version: 22.5.5 sst: specifier: 3.3.22 - version: 3.3.22(hono@4.6.8) + version: 3.3.22(hono@4.6.10) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -285,6 +285,9 @@ packages: peerDependencies: commander: ~12.1.0 + '@electric-sql/pglite@0.2.13': + resolution: {integrity: sha512-YRY806NnScVqa21/1L1vaysSQ+0/cAva50z7vlwzaGiBOTS9JhdzIRHN0KfgMhobFAphbznZJ7urMso4RtMBIQ==} + '@envelop/core@5.0.2': resolution: {integrity: sha512-tVL6OrMe6UjqLosiE+EH9uxh2TQC0469GwF4tE014ugRaDDKKVWwFwZe0TBMlcyHKh5MD4ZxktWo/1hqUxIuhw==} engines: {node: '>=18.0.0'} @@ -653,26 +656,26 @@ packages: '@ethersproject/web@5.7.1': resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - '@graphql-tools/executor@1.3.2': - resolution: {integrity: sha512-U8nAR709IPNjwf0aLG6U9FlX0t7vA4cdWvL4RtMR/L/Ll4OHZ39OqUtq6moy+kLRRwLTqLif6iiUYrxnWpUGXw==} + '@graphql-tools/executor@1.3.3': + resolution: {integrity: sha512-lpkgokF6vjGHNluANOTsWoSM0vuvUuVpjY1810tvM6Vlyoq2tJ+nmqweGbMsq/GLhmZQP1lY/nOkj2zPJXLWiw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@9.0.8': - resolution: {integrity: sha512-RG9NEp4fi0MoFi0te4ahqTMYuavQnXlpEZxxMomdCa6CI5tfekcVm/rsLF5Zt8O4HY+esDt9+4dCL+aOKvG79w==} + '@graphql-tools/merge@9.0.9': + resolution: {integrity: sha512-w9yaU7UMRQvtkTYZHo+c7cS7LO7rqc2H6g3k0aUs8VE9YlFYG1bYdxvEPM5bloaoVqr5TmbqIZqzl1CHeJKilQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@10.0.7': - resolution: {integrity: sha512-Cz1o+rf9cd3uMgG+zI9HlM5mPlnHQUlk/UQRZyUlPDfT+944taLaokjvj7AI6GcOFVf4f2D11XthQp+0GY31jQ==} + '@graphql-tools/schema@10.0.8': + resolution: {integrity: sha512-jkCSq+DdT6Rf/MN3oVz250AMFWZO0E5kh0C2K+kJfS80iBW7/7kLjiSbKz+WD9UBtsJPW2zyzKYC4ylU4jmnLw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@10.5.5': - resolution: {integrity: sha512-LF/UDWmMT0mnobL2UZETwYghV7HYBzNaGj0SAkCYOMy/C3+6sQdbcTksnoFaKR9XIVD78jNXEGfivbB8Zd+cwA==} + '@graphql-tools/utils@10.5.6': + resolution: {integrity: sha512-JAC44rhbLzXUHiltceyEpWkxmX4e45Dfg19wRFoA9EbDxQVbOzVNF76eEECdg0J1owFsJwfLqCwz7/6xzrovOw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -745,6 +748,18 @@ packages: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@npmcli/agent@2.2.2': resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} engines: {node: ^16.14.0 || >=18.0.0} @@ -803,6 +818,10 @@ packages: resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} engines: {node: ^16.14.0 || >=18.0.0} + '@oclif/core@4.0.33': + resolution: {integrity: sha512-NoTDwJ2L/ywpsSjcN7jAAHf3m70Px4Yim2SJrm16r70XpnfbNOdlj1x0HEJ0t95gfD+p/y5uy+qPT/VXTh/1gw==} + engines: {node: '>=18.0.0'} + '@opentelemetry/api-logs@0.52.1': resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} engines: {node: '>=14'} @@ -883,8 +902,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@ponder/core@0.6.24': - resolution: {integrity: sha512-ANMXIxDCi5GmHyloINoeEnBjKhzz5Sb8QzK2yDmnDSi8TUGLXiZY5VUoEIlzAH5eHh53S7g5Pi+OeoNkuBKiww==} + '@ponder/core@0.7.7': + resolution: {integrity: sha512-cni0EUfDcFmVAbmGH9qW5mjS7UI92lN2996AXcm0TzdbXyPNccFSHL/vl+rGw0lzokfMLuKY4E2CbciMdWJJ6A==} engines: {node: '>=18.14'} hasBin: true peerDependencies: @@ -955,93 +974,93 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rollup/rollup-android-arm-eabi@4.24.4': - resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==} + '@rollup/rollup-android-arm-eabi@4.27.3': + resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.4': - resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==} + '@rollup/rollup-android-arm64@4.27.3': + resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.4': - resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==} + '@rollup/rollup-darwin-arm64@4.27.3': + resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.4': - resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==} + '@rollup/rollup-darwin-x64@4.27.3': + resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.24.4': - resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==} + '@rollup/rollup-freebsd-arm64@4.27.3': + resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.24.4': - resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==} + '@rollup/rollup-freebsd-x64@4.27.3': + resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.24.4': - resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==} + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.4': - resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==} + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.4': - resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==} + '@rollup/rollup-linux-arm64-gnu@4.27.3': + resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.4': - resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==} + '@rollup/rollup-linux-arm64-musl@4.27.3': + resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': - resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.4': - resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==} + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.4': - resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==} + '@rollup/rollup-linux-s390x-gnu@4.27.3': + resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.4': - resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==} + '@rollup/rollup-linux-x64-gnu@4.27.3': + resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.4': - resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==} + '@rollup/rollup-linux-x64-musl@4.27.3': + resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.4': - resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==} + '@rollup/rollup-win32-arm64-msvc@4.27.3': + resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.4': - resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==} + '@rollup/rollup-win32-ia32-msvc@4.27.3': + resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.4': - resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==} + '@rollup/rollup-win32-x64-msvc@4.27.3': + resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} cpu: [x64] os: [win32] @@ -1082,6 +1101,14 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} + '@sindresorhus/is@7.0.1': + resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + '@smithy/abort-controller@3.1.8': resolution: {integrity: sha512-+3DOBcUn5/rVjlxGvUPKc416SExarAQ+Qe0bqk30YSUjbepwpS7QN0cyKUSifvLJhdMZ0WPzPP5ymut0oonrpQ==} engines: {node: '>=16.0.0'} @@ -1288,6 +1315,9 @@ packages: '@types/node@22.9.0': resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + '@types/node@22.9.1': + resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1317,16 +1347,16 @@ packages: resolution: {integrity: sha512-ApcWxkrs1WmEMS2CaLLFUEem/49erT3sxIVjpzU5f6zmVcnijtDSrhoK2zVobOIikZJdH63jdAXOrvjf6eOUNQ==} engines: {node: '>=18.0.0'} - '@whatwg-node/fetch@0.9.23': - resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==} + '@whatwg-node/fetch@0.10.1': + resolution: {integrity: sha512-gmPOLrsjSZWEZlr9Oe5+wWFBq3CG6fN13rGlM91Jsj/vZ95G9CCvrORGBAxMXy0AJGiC83aYiHXn3JzTzXQmbA==} engines: {node: '>=18.0.0'} - '@whatwg-node/node-fetch@0.6.0': - resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} + '@whatwg-node/node-fetch@0.7.3': + resolution: {integrity: sha512-mqHYN1JZG0bSnOi6bxYq8zSBLfp02597yb9YNwZ0Zqn3TdC7/YjRWKnnGm49rzIWGaNaHiUjv8KThuhpK7NDLA==} engines: {node: '>=18.0.0'} - '@whatwg-node/server@0.9.52': - resolution: {integrity: sha512-RSX9FcoXrjmMu7dkBWbd5bNE7qsVSHCupk5A5iuZkoF+XWDvnp1TDbSGLARnsKKwln1Sem4koLkz/tj5b8Q7bg==} + '@whatwg-node/server@0.9.56': + resolution: {integrity: sha512-qHvoug7dTStxDvJKhivO4V/+3Ac+RrMYPwSJ1Sqbq3qbDB0s8xRtlRU+jciOvUJrQQDzcQZJ736yLiKayWscsQ==} engines: {node: '>=18.0.0'} abbrev@2.0.0: @@ -1392,6 +1422,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-escapes@6.2.1: resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} @@ -1420,6 +1454,14 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.3.2: + resolution: {integrity: sha512-cFthbBlt+Oi0i9Pv/j6YdVWJh54CtjGACaMPCIrEV4Ha7HWsIjXDwseYV79TIL0B4+KfSwD5S70PeQDkPUd1rA==} + engines: {node: '>=15'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + apisauce@2.1.6: resolution: {integrity: sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==} @@ -1429,6 +1471,10 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -1474,6 +1520,10 @@ packages: resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} @@ -1505,6 +1555,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -1563,6 +1617,10 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -1581,6 +1639,10 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -1666,6 +1728,10 @@ packages: resolution: {integrity: sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA==} engines: {node: '>=18'} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1685,6 +1751,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} @@ -1744,103 +1814,26 @@ packages: resolution: {integrity: sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==} engines: {node: '>=12'} + diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dot-prop@8.0.2: resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} engines: {node: '>=16'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - drizzle-orm@0.31.4: - resolution: {integrity: sha512-VGD9SH9aStF2z4QOTnVlVX/WghV/EnuEzTmsH3fSVp2E4fFgc8jl3viQrS/XUJx1ekW4rVVLJMH42SfGQdjX3Q==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@electric-sql/pglite': '>=0.1.1' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@op-engineering/op-sqlite': '>=2' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@prisma/client': '*' - '@tidbcloud/serverless': '*' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/react': '>=18' - '@types/sql.js': '*' - '@vercel/postgres': '>=0.8.0' - '@xata.io/client': '*' - better-sqlite3: '>=7' - bun-types: '*' - expo-sqlite: '>=13.2.0' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - prisma: '*' - react: '>=18' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@prisma/client': - optional: true - '@tidbcloud/serverless': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/react': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - '@xata.io/client': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - expo-sqlite: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - prisma: - optional: true - react: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - drizzle-orm@0.34.1: resolution: {integrity: sha512-t+zCwyWWt8xTqtYV4doE/xYmT7hpv1L8pQ66zddEz+3VWyedBBtctjMAp22mAJPfyWurRQXUJ1nrTtqLq+DqNA==} peerDependencies: @@ -1940,6 +1933,11 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + ejs@3.1.8: resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} engines: {node: '>=0.10.0'} @@ -2000,6 +1998,10 @@ packages: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2030,6 +2032,10 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + fast-printf@1.6.9: resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==} engines: {node: '>=10.0'} @@ -2052,6 +2058,9 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fdir@6.4.2: resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: @@ -2070,6 +2079,10 @@ packages: filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2098,6 +2111,10 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + fs-jetpack@4.3.1: resolution: {integrity: sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==} @@ -2124,6 +2141,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -2132,9 +2153,17 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + git-diff@2.0.6: + resolution: {integrity: sha512-/Iu4prUrydE3Pb3lCBMbcSNIf81tgGt0W1ZwknnyF62t3tHmtiJTRj0f+1ZIhp3+Rh0ktz1pJVoa7ZXUCskivA==} + engines: {node: '>= 4.8.0'} + github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -2143,6 +2172,14 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -2160,8 +2197,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql-yoga@5.8.0: - resolution: {integrity: sha512-pGoeTv7Om9aNGkDIFecz3tv0rZKWV2T2K8522/tymS+qixPIq5upSaMY5nLXzpWD40R10mcw0nBwBZg6j0F7Iw==} + graphql-yoga@5.10.2: + resolution: {integrity: sha512-LcbNUFCsCsv3enjGnXCUQNSKxM49iB4uF9H2Vb3WChBOSQjzqI1d83mvgMTgMVtrZYlKjgM/magMQZV211N2LA==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^15.2.0 || ^16.0.0 @@ -2191,8 +2228,8 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hono@4.6.8: - resolution: {integrity: sha512-f+2Ec9JAzabT61pglDiLJcF/DjiSefZkjCn9bzm1cYLGkD5ExJ3Jnv93ax9h0bn7UPLHF81KktoyjdQfWI2n1Q==} + hono@4.6.10: + resolution: {integrity: sha512-IXXNfRAZEahFnWBhUUlqKEGF9upeE6hZoRZszvNkyAz/CYp+iVbxm3viMvStlagRJohjlBRGOQ7f4jfcV0XMGg==} engines: {node: '>=16.9.0'} hosted-git-info@7.0.2: @@ -2233,6 +2270,10 @@ packages: resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -2283,6 +2324,10 @@ packages: react-devtools-core: optional: true + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -2290,6 +2335,10 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -2298,6 +2347,15 @@ packages: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -2306,6 +2364,10 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -2316,6 +2378,10 @@ packages: is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -2323,6 +2389,10 @@ packages: is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -2351,6 +2421,10 @@ packages: engines: {node: '>=10'} hasBin: true + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} + hasBin: true + jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} @@ -2392,6 +2466,9 @@ packages: json-stringify-nice@1.1.4: resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -2405,10 +2482,52 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kysely-codegen@0.15.0: + resolution: {integrity: sha512-LPta2nQOyoEPDQ3w/Gsplc+2iyZPAsGvtWoS21VzOB0NDQ0B38Xy1gS8WlbGef542Zdw2eLJHxekud9DzVdNRw==} + hasBin: true + peerDependencies: + '@libsql/kysely-libsql': ^0.3.0 + '@tediousjs/connection-string': ^0.5.0 + better-sqlite3: '>=7.6.2' + kysely: ^0.27.0 + kysely-bun-worker: ^0.5.3 + mysql2: ^2.3.3 || ^3.0.0 + pg: ^8.8.0 + tarn: ^3.0.0 + tedious: ^16.6.0 || ^17.0.0 + peerDependenciesMeta: + '@libsql/kysely-libsql': + optional: true + '@tediousjs/connection-string': + optional: true + better-sqlite3: + optional: true + kysely-bun-worker: + optional: true + mysql2: + optional: true + pg: + optional: true + tarn: + optional: true + tedious: + optional: true + + kysely-pglite@0.6.1: + resolution: {integrity: sha512-+q9FS6km6Y9yLLxe4SAMu4cQA3qIOSqdZ9uidVDU7g90Z/ZEjDhEKX/Rk5xug0HoGpCfMLHC2XGLqiVMZXqnRw==} + hasBin: true + peerDependencies: + '@electric-sql/pglite': '*' + kysely: '*' + kysely@0.26.3: resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} engines: {node: '>=14.0.0'} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2472,6 +2591,10 @@ packages: resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} engines: {node: '>=8'} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} @@ -2497,6 +2620,14 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -2642,6 +2773,10 @@ packages: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -2689,6 +2824,9 @@ packages: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + oidc-token-hash@5.0.3: resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} engines: {node: ^10.13.0 || >=12.0.0} @@ -2786,6 +2924,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -2795,6 +2937,9 @@ packages: pg-connection-string@2.7.0: resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} + pg-copy-streams@6.0.6: + resolution: {integrity: sha512-Z+Dd2C2NIDTsjyFKmc6a9QLlpM8tjpERx+43RSx0WmL7j3uNChERi3xSvZUL0hWJ1oRUn4S3fhyt3apdSrTyKQ==} + pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} @@ -2826,6 +2971,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + picomatch@3.0.1: resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} engines: {node: '>=10'} @@ -2852,8 +3001,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -2927,6 +3076,9 @@ packages: pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} @@ -2934,6 +3086,10 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + radash@12.1.0: + resolution: {integrity: sha512-b0Zcf09AhqKS83btmUeYBS8tFK7XL2e3RvLmZcm0sTdF1/UUlHSsjXdCcWNxe7yfmAlPve5ym0DmKGtTzP6kVQ==} + engines: {node: '>=14.18.0'} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -2967,10 +3123,18 @@ packages: resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -3015,6 +3179,10 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} @@ -3027,11 +3195,14 @@ packages: resolution: {integrity: sha512-3niqt5bXFY1InKU8HKWqqYTYjtrBaxBMnXELXCXUYgtNYGUtZM5rB46HIC430AyacL95iEniGf7RgqsesykLmQ==} engines: {node: '>=18.0'} - rollup@4.24.4: - resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==} + rollup@4.27.3: + resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -3069,6 +3240,15 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shelljs.exec@1.1.8: + resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} + engines: {node: '>= 4.0.0'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -3089,6 +3269,14 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -3249,6 +3437,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3274,6 +3466,10 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + treeverse@3.0.0: resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3302,6 +3498,10 @@ packages: resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} @@ -3329,6 +3529,10 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3337,6 +3541,10 @@ packages: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} @@ -3437,10 +3645,17 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + worker-timers-broker@6.1.8: resolution: {integrity: sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==} @@ -4004,6 +4219,8 @@ snapshots: dependencies: commander: 12.1.0 + '@electric-sql/pglite@0.2.13': {} + '@envelop/core@5.0.2': dependencies: '@envelop/types': 5.0.0 @@ -4333,30 +4550,30 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@graphql-tools/executor@1.3.2(graphql@16.9.0)': + '@graphql-tools/executor@1.3.3(graphql@16.9.0)': dependencies: - '@graphql-tools/utils': 10.5.5(graphql@16.9.0) + '@graphql-tools/utils': 10.5.6(graphql@16.9.0) '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) '@repeaterjs/repeater': 3.0.6 graphql: 16.9.0 tslib: 2.8.1 value-or-promise: 1.0.12 - '@graphql-tools/merge@9.0.8(graphql@16.9.0)': + '@graphql-tools/merge@9.0.9(graphql@16.9.0)': dependencies: - '@graphql-tools/utils': 10.5.5(graphql@16.9.0) + '@graphql-tools/utils': 10.5.6(graphql@16.9.0) graphql: 16.9.0 tslib: 2.8.1 - '@graphql-tools/schema@10.0.7(graphql@16.9.0)': + '@graphql-tools/schema@10.0.8(graphql@16.9.0)': dependencies: - '@graphql-tools/merge': 9.0.8(graphql@16.9.0) - '@graphql-tools/utils': 10.5.5(graphql@16.9.0) + '@graphql-tools/merge': 9.0.9(graphql@16.9.0) + '@graphql-tools/utils': 10.5.6(graphql@16.9.0) graphql: 16.9.0 tslib: 2.8.1 value-or-promise: 1.0.12 - '@graphql-tools/utils@10.5.5(graphql@16.9.0)': + '@graphql-tools/utils@10.5.6(graphql@16.9.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) cross-inspect: 1.0.1 @@ -4396,9 +4613,9 @@ snapshots: protobufjs: 7.4.0 yargs: 17.7.2 - '@hono/node-server@1.13.3(hono@4.6.8)': + '@hono/node-server@1.13.3(hono@4.6.10)': dependencies: - hono: 4.6.8 + hono: 4.6.10 '@httptoolkit/websocket-stream@6.0.1': dependencies: @@ -4450,6 +4667,18 @@ snapshots: '@noble/hashes@1.5.0': {} + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + '@npmcli/agent@2.2.2': dependencies: agent-base: 7.1.1 @@ -4580,6 +4809,27 @@ snapshots: - bluebird - supports-color + '@oclif/core@4.0.33': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.3.2 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.3.7(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + globby: 11.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.2 + minimatch: 9.0.5 + semver: 7.6.3 + string-width: 4.2.3 + supports-color: 8.1.1 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + '@opentelemetry/api-logs@0.52.1': dependencies: '@opentelemetry/api': 1.9.0 @@ -4663,32 +4913,34 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@ponder/core@0.6.24(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(hono@4.6.8)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8)': + '@ponder/core@0.7.7(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8)': dependencies: '@babel/code-frame': 7.26.2 '@commander-js/extra-typings': 12.1.0(commander@12.1.0) + '@electric-sql/pglite': 0.2.13 '@escape.tech/graphql-armor-max-aliases': 2.6.0 '@escape.tech/graphql-armor-max-depth': 2.4.0 '@escape.tech/graphql-armor-max-tokens': 2.5.0 - '@hono/node-server': 1.13.3(hono@4.6.8) + '@hono/node-server': 1.13.3(hono@4.6.10) '@ponder/utils': 0.2.2(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8)) abitype: 0.10.3(typescript@5.6.3)(zod@3.23.8) - better-sqlite3: 11.5.0 commander: 12.1.0 conf: 12.0.0 dataloader: 2.2.2 detect-package-manager: 3.0.2 dotenv: 16.4.5 - drizzle-orm: 0.31.4(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) + drizzle-orm: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) glob: 10.4.5 graphql: 16.9.0 - graphql-yoga: 5.8.0(graphql@16.9.0) - hono: 4.6.8 + graphql-yoga: 5.10.2(graphql@16.9.0) + hono: 4.6.10 http-terminator: 3.2.0 ink: 4.4.1(react@18.3.1) kysely: 0.26.3 + kysely-pglite: 0.6.1(@electric-sql/pglite@0.2.13)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1) pg: 8.13.1 pg-connection-string: 2.7.0 + pg-copy-streams: 6.0.6 picocolors: 1.1.1 pino: 8.21.0 prom-client: 15.1.3 @@ -4703,13 +4955,14 @@ snapshots: transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@cloudflare/workers-types' - - '@electric-sql/pglite' - '@libsql/client' + - '@libsql/kysely-libsql' - '@neondatabase/serverless' - '@op-engineering/op-sqlite' - '@opentelemetry/api' - '@planetscale/database' - '@prisma/client' + - '@tediousjs/connection-string' - '@tidbcloud/serverless' - '@types/better-sqlite3' - '@types/node' @@ -4718,10 +4971,12 @@ snapshots: - '@types/sql.js' - '@vercel/postgres' - '@xata.io/client' + - better-sqlite3 - bufferutil - bun-types - expo-sqlite - knex + - kysely-bun-worker - less - lightningcss - mysql2 @@ -4735,6 +4990,8 @@ snapshots: - stylus - sugarss - supports-color + - tarn + - tedious - terser - utf-8-validate - zod @@ -4822,58 +5079,58 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} - '@rollup/rollup-android-arm-eabi@4.24.4': + '@rollup/rollup-android-arm-eabi@4.27.3': optional: true - '@rollup/rollup-android-arm64@4.24.4': + '@rollup/rollup-android-arm64@4.27.3': optional: true - '@rollup/rollup-darwin-arm64@4.24.4': + '@rollup/rollup-darwin-arm64@4.27.3': optional: true - '@rollup/rollup-darwin-x64@4.24.4': + '@rollup/rollup-darwin-x64@4.27.3': optional: true - '@rollup/rollup-freebsd-arm64@4.24.4': + '@rollup/rollup-freebsd-arm64@4.27.3': optional: true - '@rollup/rollup-freebsd-x64@4.24.4': + '@rollup/rollup-freebsd-x64@4.27.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.4': + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.4': + '@rollup/rollup-linux-arm-musleabihf@4.27.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.4': + '@rollup/rollup-linux-arm64-gnu@4.27.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.4': + '@rollup/rollup-linux-arm64-musl@4.27.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.4': + '@rollup/rollup-linux-riscv64-gnu@4.27.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.4': + '@rollup/rollup-linux-s390x-gnu@4.27.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.4': + '@rollup/rollup-linux-x64-gnu@4.27.3': optional: true - '@rollup/rollup-linux-x64-musl@4.24.4': + '@rollup/rollup-linux-x64-musl@4.27.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.4': + '@rollup/rollup-win32-arm64-msvc@4.27.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.4': + '@rollup/rollup-win32-ia32-msvc@4.27.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.4': + '@rollup/rollup-win32-x64-msvc@4.27.3': optional: true '@scure/base@1.1.9': {} @@ -4923,6 +5180,10 @@ snapshots: '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@7.0.1': {} + + '@sindresorhus/merge-streams@2.3.0': {} + '@smithy/abort-controller@3.1.8': dependencies: '@smithy/types': 3.7.1 @@ -5281,11 +5542,16 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/node@22.9.1': + dependencies: + undici-types: 6.19.8 + optional: true + '@types/parse-json@4.0.2': {} '@types/readable-stream@4.0.18': dependencies: - '@types/node': 22.9.0 + '@types/node': 22.9.1 safe-buffer: 5.1.2 optional: true @@ -5301,7 +5567,7 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.0 + '@types/node': 22.9.1 optional: true '@ubiquity-dao/rpc-handler@1.3.0': @@ -5318,21 +5584,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@whatwg-node/fetch@0.9.23': + '@whatwg-node/fetch@0.10.1': dependencies: - '@whatwg-node/node-fetch': 0.6.0 + '@whatwg-node/node-fetch': 0.7.3 urlpattern-polyfill: 10.0.0 - '@whatwg-node/node-fetch@0.6.0': + '@whatwg-node/node-fetch@0.7.3': dependencies: '@kamilkisiela/fast-url-parser': 1.1.4 busboy: 1.6.0 fast-querystring: 1.1.2 tslib: 2.8.1 - '@whatwg-node/server@0.9.52': + '@whatwg-node/server@0.9.56': dependencies: - '@whatwg-node/fetch': 0.9.23 + '@whatwg-node/fetch': 0.10.1 tslib: 2.8.1 abbrev@2.0.0: {} @@ -5359,7 +5625,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -5381,6 +5647,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-escapes@6.2.1: {} ansi-regex@4.1.1: {} @@ -5399,6 +5669,13 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.3.2: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + apisauce@2.1.6: dependencies: axios: 0.21.4 @@ -5411,6 +5688,8 @@ snapshots: dependencies: sprintf-js: 1.0.3 + array-union@2.1.0: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -5466,6 +5745,7 @@ snapshots: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 + optional: true bin-links@4.0.4: dependencies: @@ -5474,9 +5754,12 @@ snapshots: read-cmd-shim: 4.0.0 write-file-atomic: 5.0.1 + binary-extensions@2.3.0: {} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 + optional: true bintrees@1.0.2: {} @@ -5485,6 +5768,7 @@ snapshots: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true bl@6.0.16: dependencies: @@ -5512,6 +5796,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + brorand@1.1.0: {} buffer-from@1.1.2: {} @@ -5520,6 +5808,7 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true buffer@6.0.3: dependencies: @@ -5581,7 +5870,20 @@ snapshots: chalk@5.3.0: {} - chownr@1.1.4: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@1.1.4: + optional: true chownr@2.0.0: {} @@ -5591,6 +5893,10 @@ snapshots: clean-stack@2.2.0: {} + clean-stack@3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + cli-boxes@3.0.0: {} cli-cursor@3.1.0: @@ -5680,6 +5986,8 @@ snapshots: semver: 7.6.3 uint8array-extras: 0.3.0 + consola@3.2.3: {} + convert-to-spaces@2.0.1: {} core-util-is@1.0.3: @@ -5703,6 +6011,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + crypto-js@4.2.0: optional: true @@ -5716,15 +6030,18 @@ snapshots: dependencies: mimic-fn: 4.0.0 - debug@4.3.7: + debug@4.3.7(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true defaults@1.0.4: dependencies: @@ -5736,30 +6053,33 @@ snapshots: delayed-stream@1.0.0: {} - detect-libc@2.0.3: {} + detect-libc@2.0.3: + optional: true detect-package-manager@3.0.2: dependencies: execa: 5.1.1 + diff@3.5.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + dot-prop@8.0.2: dependencies: type-fest: 3.13.1 - dotenv@16.4.5: {} + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.4.5 - drizzle-orm@0.31.4(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1): - optionalDependencies: - '@aws-sdk/client-rds-data': 3.665.0(aws-crt@1.22.0) - '@opentelemetry/api': 1.9.0 - better-sqlite3: 11.5.0 - kysely: 0.26.3 - pg: 8.13.1 - react: 18.3.1 + dotenv@16.4.5: {} - drizzle-orm@0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1): + drizzle-orm@0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1): optionalDependencies: '@aws-sdk/client-rds-data': 3.665.0(aws-crt@1.22.0) + '@electric-sql/pglite': 0.2.13 '@opentelemetry/api': 1.9.0 better-sqlite3: 11.5.0 kysely: 0.26.3 @@ -5778,6 +6098,10 @@ snapshots: eastasianwidth@0.2.0: {} + ejs@3.1.10: + dependencies: + jake: 10.9.2 + ejs@3.1.8: dependencies: jake: 10.9.2 @@ -5878,6 +6202,8 @@ snapshots: escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} + esprima@4.0.1: {} event-target-shim@5.0.1: {} @@ -5896,7 +6222,8 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expand-template@2.0.3: {} + expand-template@2.0.3: + optional: true exponential-backoff@3.1.1: {} @@ -5904,6 +6231,14 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-printf@1.6.9: dependencies: boolean: 3.2.0 @@ -5927,6 +6262,10 @@ snapshots: strnum: 1.0.5 optional: true + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + fdir@6.4.2(picomatch@3.0.1): optionalDependencies: picomatch: 3.0.1 @@ -5936,12 +6275,17 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - file-uri-to-path@1.0.0: {} + file-uri-to-path@1.0.0: + optional: true filelist@1.0.4: dependencies: minimatch: 5.1.6 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + find-up@6.3.0: dependencies: locate-path: 7.2.0 @@ -5951,7 +6295,7 @@ snapshots: foreground-child@3.3.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 form-data@4.0.1: @@ -5964,7 +6308,14 @@ snapshots: dependencies: fetch-blob: 3.2.0 - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 fs-jetpack@4.3.1: dependencies: @@ -5988,13 +6339,28 @@ snapshots: get-caller-file@2.0.5: {} + get-package-type@0.1.0: {} + get-stream@5.2.0: dependencies: pump: 3.0.2 get-stream@6.0.1: {} - github-from-package@0.0.0: {} + git-diff@2.0.6: + dependencies: + chalk: 2.4.2 + diff: 3.5.0 + loglevel: 1.9.2 + shelljs: 0.8.5 + shelljs.exec: 1.1.8 + + github-from-package@0.0.0: + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 glob@10.4.5: dependencies: @@ -6014,6 +6380,24 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + globrex@0.1.2: {} gluegun@5.2.0: @@ -6069,16 +6453,16 @@ snapshots: graceful-fs@4.2.11: {} - graphql-yoga@5.8.0(graphql@16.9.0): + graphql-yoga@5.10.2(graphql@16.9.0): dependencies: '@envelop/core': 5.0.2 - '@graphql-tools/executor': 1.3.2(graphql@16.9.0) - '@graphql-tools/schema': 10.0.7(graphql@16.9.0) - '@graphql-tools/utils': 10.5.5(graphql@16.9.0) + '@graphql-tools/executor': 1.3.3(graphql@16.9.0) + '@graphql-tools/schema': 10.0.8(graphql@16.9.0) + '@graphql-tools/utils': 10.5.6(graphql@16.9.0) '@graphql-yoga/logger': 2.0.0 '@graphql-yoga/subscription': 5.0.1 - '@whatwg-node/fetch': 0.9.23 - '@whatwg-node/server': 0.9.52 + '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/server': 0.9.56 dset: 3.1.4 graphql: 16.9.0 lru-cache: 10.4.3 @@ -6108,7 +6492,7 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hono@4.6.8: {} + hono@4.6.10: {} hosted-git-info@7.0.2: dependencies: @@ -6119,7 +6503,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -6138,7 +6522,7 @@ snapshots: https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -6155,6 +6539,8 @@ snapshots: dependencies: minimatch: 9.0.5 + ignore@5.3.2: {} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -6180,7 +6566,8 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} + ini@1.3.8: + optional: true ini@2.0.0: {} @@ -6218,6 +6605,8 @@ snapshots: - bufferutil - utf-8-validate + interpret@1.4.0: {} + ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -6225,6 +6614,10 @@ snapshots: is-arrayish@0.2.1: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-ci@3.0.1: dependencies: ci-info: 3.9.0 @@ -6233,10 +6626,18 @@ snapshots: dependencies: hasown: 2.0.2 + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-interactive@1.0.0: {} is-lambda@1.0.1: {} @@ -6245,12 +6646,18 @@ snapshots: dependencies: tslib: 2.8.1 + is-number@7.0.0: {} + is-stream@2.0.1: {} is-upper-case@2.0.2: dependencies: tslib: 2.8.1 + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isarray@1.0.0: optional: true @@ -6280,6 +6687,8 @@ snapshots: filelist: 1.0.4 minimatch: 3.1.2 + jiti@2.0.0-beta.3: {} + jose@4.15.9: {} jose@5.2.3: {} @@ -6310,6 +6719,12 @@ snapshots: json-stringify-nice@1.1.4: {} + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jsonparse@1.3.1: {} just-diff-apply@5.5.0: {} @@ -6320,8 +6735,47 @@ snapshots: dependencies: json-buffer: 3.0.1 + kysely-codegen@0.15.0(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1): + dependencies: + chalk: 4.1.2 + dotenv: 16.4.5 + dotenv-expand: 11.0.7 + git-diff: 2.0.6 + kysely: 0.26.3 + micromatch: 4.0.8 + minimist: 1.2.8 + optionalDependencies: + better-sqlite3: 11.5.0 + pg: 8.13.1 + + kysely-pglite@0.6.1(@electric-sql/pglite@0.2.13)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1): + dependencies: + '@electric-sql/pglite': 0.2.13 + '@oclif/core': 4.0.33 + '@repeaterjs/repeater': 3.0.6 + '@sindresorhus/is': 7.0.1 + chokidar: 3.6.0 + consola: 3.2.3 + fs-extra: 11.2.0 + globby: 14.0.2 + jiti: 2.0.0-beta.3 + kysely: 0.26.3 + kysely-codegen: 0.15.0(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1) + radash: 12.1.0 + transitivePeerDependencies: + - '@libsql/kysely-libsql' + - '@tediousjs/connection-string' + - better-sqlite3 + - kysely-bun-worker + - mysql2 + - pg + - tarn + - tedious + kysely@0.26.3: {} + lilconfig@3.1.2: {} + lines-and-columns@1.2.4: {} load-tsconfig@0.2.5: {} @@ -6366,6 +6820,8 @@ snapshots: dependencies: chalk: 2.4.2 + loglevel@1.9.2: {} + long@5.2.3: {} loose-envify@1.4.0: @@ -6399,6 +6855,13 @@ snapshots: merge-stream@2.0.0: {} + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -6470,7 +6933,8 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mkdirp@1.0.4: {} @@ -6479,7 +6943,7 @@ snapshots: mqtt-packet@9.0.1: dependencies: bl: 6.0.16 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) process-nextick-args: 2.0.1 transitivePeerDependencies: - supports-color @@ -6491,7 +6955,7 @@ snapshots: '@types/ws': 8.5.13 commist: 3.2.0 concat-stream: 2.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) help-me: 5.0.0 lru-cache: 10.4.3 minimist: 1.2.8 @@ -6513,13 +6977,15 @@ snapshots: nanoid@3.3.7: {} - napi-build-utils@1.0.2: {} + napi-build-utils@1.0.2: + optional: true negotiator@0.6.4: {} node-abi@3.71.0: dependencies: semver: 7.6.3 + optional: true node-domexception@1.0.0: {} @@ -6554,6 +7020,8 @@ snapshots: semver: 7.6.3 validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + normalize-url@6.1.0: {} npm-bundled@3.0.1: @@ -6603,7 +7071,7 @@ snapshots: number-allocator@1.0.14: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) js-sdsl: 4.3.0 transitivePeerDependencies: - supports-color @@ -6613,6 +7081,8 @@ snapshots: object-hash@2.2.0: {} + obuf@1.1.2: {} + oidc-token-hash@5.0.3: {} on-exit-leak-free@2.1.2: {} @@ -6725,6 +7195,8 @@ snapshots: path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} pg-cloudflare@1.1.1: @@ -6732,6 +7204,10 @@ snapshots: pg-connection-string@2.7.0: {} + pg-copy-streams@6.0.6: + dependencies: + obuf: 1.1.2 + pg-int8@1.0.1: {} pg-pool@3.7.0(pg@8.13.1): @@ -6764,6 +7240,8 @@ snapshots: picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@3.0.1: {} pino-abstract-transport@1.2.0: @@ -6798,7 +7276,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 picocolors: 1.1.1 @@ -6828,6 +7306,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 + optional: true proc-log@4.2.0: {} @@ -6878,16 +7357,21 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} quick-lru@5.1.1: {} + radash@12.1.0: {} + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true react-reconciler@0.29.2(react@18.3.1): dependencies: @@ -6922,6 +7406,7 @@ snapshots: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + optional: true readable-stream@4.5.2: dependencies: @@ -6931,8 +7416,16 @@ snapshots: process: 0.11.10 string_decoder: 1.3.0 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + real-require@0.2.0: {} + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + regenerator-runtime@0.14.1: optional: true @@ -6945,7 +7438,7 @@ snapshots: require-in-the-middle@7.4.0: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) module-details-from-path: 1.0.3 resolve: 1.22.8 transitivePeerDependencies: @@ -6977,6 +7470,8 @@ snapshots: retry@0.12.0: {} + reusify@1.0.4: {} + rfdc@1.4.1: optional: true @@ -6990,30 +7485,34 @@ snapshots: safe-stable-stringify: 2.5.0 semver-compare: 1.0.0 - rollup@4.24.4: + rollup@4.27.3: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.4 - '@rollup/rollup-android-arm64': 4.24.4 - '@rollup/rollup-darwin-arm64': 4.24.4 - '@rollup/rollup-darwin-x64': 4.24.4 - '@rollup/rollup-freebsd-arm64': 4.24.4 - '@rollup/rollup-freebsd-x64': 4.24.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.4 - '@rollup/rollup-linux-arm-musleabihf': 4.24.4 - '@rollup/rollup-linux-arm64-gnu': 4.24.4 - '@rollup/rollup-linux-arm64-musl': 4.24.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4 - '@rollup/rollup-linux-riscv64-gnu': 4.24.4 - '@rollup/rollup-linux-s390x-gnu': 4.24.4 - '@rollup/rollup-linux-x64-gnu': 4.24.4 - '@rollup/rollup-linux-x64-musl': 4.24.4 - '@rollup/rollup-win32-arm64-msvc': 4.24.4 - '@rollup/rollup-win32-ia32-msvc': 4.24.4 - '@rollup/rollup-win32-x64-msvc': 4.24.4 + '@rollup/rollup-android-arm-eabi': 4.27.3 + '@rollup/rollup-android-arm64': 4.27.3 + '@rollup/rollup-darwin-arm64': 4.27.3 + '@rollup/rollup-darwin-x64': 4.27.3 + '@rollup/rollup-freebsd-arm64': 4.27.3 + '@rollup/rollup-freebsd-x64': 4.27.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 + '@rollup/rollup-linux-arm-musleabihf': 4.27.3 + '@rollup/rollup-linux-arm64-gnu': 4.27.3 + '@rollup/rollup-linux-arm64-musl': 4.27.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 + '@rollup/rollup-linux-riscv64-gnu': 4.27.3 + '@rollup/rollup-linux-s390x-gnu': 4.27.3 + '@rollup/rollup-linux-x64-gnu': 4.27.3 + '@rollup/rollup-linux-x64-musl': 4.27.3 + '@rollup/rollup-win32-arm64-msvc': 4.27.3 + '@rollup/rollup-win32-ia32-msvc': 4.27.3 + '@rollup/rollup-win32-x64-msvc': 4.27.3 fsevents: 2.3.3 + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + safe-buffer@5.1.2: optional: true @@ -7042,6 +7541,14 @@ snapshots: shebang-regex@3.0.0: {} + shelljs.exec@1.1.8: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + shimmer@1.2.1: {} signal-exit@3.0.7: {} @@ -7059,13 +7566,19 @@ snapshots: transitivePeerDependencies: - supports-color - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true + + slash@3.0.0: {} + + slash@5.1.0: {} slice-ansi@5.0.0: dependencies: @@ -7082,7 +7595,7 @@ snapshots: socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -7144,13 +7657,13 @@ snapshots: sst-linux-x86@3.3.22: optional: true - sst@3.3.22(hono@4.6.8): + sst@3.3.22(hono@4.6.10): dependencies: aws4fetch: 1.0.20 jose: 5.2.3 openid-client: 5.6.4 optionalDependencies: - hono: 4.6.8 + hono: 4.6.10 sst-darwin-arm64: 3.3.22 sst-darwin-x64: 3.3.22 sst-linux-arm64: 3.3.22 @@ -7205,7 +7718,8 @@ snapshots: strip-final-newline@2.0.0: {} - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true strnum@1.0.5: optional: true @@ -7220,6 +7734,10 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} tar-fs@2.1.1: @@ -7228,6 +7746,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.2 tar-stream: 2.2.0 + optional: true tar-stream@2.2.0: dependencies: @@ -7236,6 +7755,7 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true tar@6.2.1: dependencies: @@ -7256,6 +7776,10 @@ snapshots: tmp@0.2.3: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + treeverse@3.0.0: {} tsconfck@3.1.4(typescript@5.6.3): @@ -7267,7 +7791,7 @@ snapshots: tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) make-fetch-happen: 13.0.1 transitivePeerDependencies: - supports-color @@ -7275,9 +7799,12 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true type-fest@0.12.0: {} + type-fest@0.21.3: {} + type-fest@0.7.1: {} type-fest@2.19.0: {} @@ -7293,6 +7820,8 @@ snapshots: undici-types@6.19.8: {} + unicorn-magic@0.1.0: {} + unique-filename@3.0.0: dependencies: unique-slug: 4.0.0 @@ -7301,6 +7830,8 @@ snapshots: dependencies: imurmurhash: 0.1.4 + universalify@2.0.1: {} + upath@1.2.0: {} urlpattern-polyfill@10.0.0: {} @@ -7340,7 +7871,7 @@ snapshots: vite-node@1.0.2(@types/node@22.5.5): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.1.1 vite: 5.0.7(@types/node@22.5.5) @@ -7356,7 +7887,7 @@ snapshots: vite-tsconfig-paths@4.3.1(typescript@5.6.3)(vite@5.0.7(@types/node@22.5.5)): dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.6.3) optionalDependencies: @@ -7368,8 +7899,8 @@ snapshots: vite@5.0.7(@types/node@22.5.5): dependencies: esbuild: 0.19.12 - postcss: 8.4.47 - rollup: 4.24.4 + postcss: 8.4.49 + rollup: 4.27.3 optionalDependencies: '@types/node': 22.5.5 fsevents: 2.3.3 @@ -7397,10 +7928,16 @@ snapshots: dependencies: isexe: 3.1.1 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + widest-line@4.0.1: dependencies: string-width: 5.1.2 + wordwrap@1.0.0: {} + worker-timers-broker@6.1.8: dependencies: '@babel/runtime': 7.26.0 From fa8c71b4fd15caec556dd29449fe485426866824 Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 20 Nov 2024 01:31:41 +0100 Subject: [PATCH 3/9] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Migrate=20indexing=20f?= =?UTF-8?q?unction=20to=20drizzle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/config/configBuilder.ts | 4 +- packages/ponder/ponder.schema-old.ts | 293 ------------------ packages/ponder/src/campaign/campaignBank.ts | 143 +++++---- .../ponder/src/campaign/campaignCreation.ts | 112 +++---- .../src/campaign/campaignInteractionLink.ts | 127 ++++---- packages/ponder/src/campaign/campaignReset.ts | 21 +- .../ponder/src/campaign/campaignReward.ts | 95 +++--- packages/ponder/src/interactionDeployments.ts | 38 +-- .../src/interactions/pressInteractions.ts | 33 +- .../src/interactions/purchaseInteractions.ts | 33 +- .../src/interactions/referralInteractions.ts | 33 +- packages/ponder/src/interactions/stats.ts | 76 +++-- .../src/interactions/webshopInteractions.ts | 15 +- packages/ponder/src/product.ts | 30 +- packages/ponder/src/productAdministrator.ts | 51 ++- 15 files changed, 397 insertions(+), 707 deletions(-) delete mode 100644 packages/ponder/ponder.schema-old.ts diff --git a/packages/ponder/config/configBuilder.ts b/packages/ponder/config/configBuilder.ts index 82ca701..0a7da66 100644 --- a/packages/ponder/config/configBuilder.ts +++ b/packages/ponder/config/configBuilder.ts @@ -118,6 +118,8 @@ function safeClient(initialTransport: Transport): Transport { * @returns */ function getTransport(chainId: number) { + // todo: Intercept getBlockByNumber and replace finalized with latest (plus small delay, like 0.5ms) + // todo: rpc url = internal or external, use both env variables // Get our erpc instance transport const erpcInternalUrl = process.env.INTERNAL_RPC_URL; const erpcExternalUrl = process.env.EXTERNAL_RPC_URL; @@ -168,7 +170,7 @@ export function createEnvConfig({ connectionString: `${process.env.PONDER_DATABASE_URL}/${pgDatabase}`, } : { - kind: "sqlite", + kind: "pglite", }, // networks config networks: { diff --git a/packages/ponder/ponder.schema-old.ts b/packages/ponder/ponder.schema-old.ts deleted file mode 100644 index 5f5f7d0..0000000 --- a/packages/ponder/ponder.schema-old.ts +++ /dev/null @@ -1,293 +0,0 @@ -import { createSchema } from "@ponder/core"; - -export default createSchema((p) => ({ - /* -------------------------------------------------------------------------- */ - /* Product related stuff */ - /* -------------------------------------------------------------------------- */ - - Product: p.createTable({ - id: p.bigint(), - - domain: p.string(), - productTypes: p.bigint(), - name: p.string(), - - createTimestamp: p.bigint(), - lastUpdateTimestamp: p.bigint().optional(), - - metadataUrl: p.string().optional(), - - interactionContracts: p.many("ProductInteractionContract.productId"), - - campaigns: p.many("Campaign.productId"), - administrators: p.many("ProductAdministrator.productId"), - banks: p.many("BankingContract.productId"), - }), - - // Product related stuff - ProductAdministrator: p.createTable( - { - id: p.hex(), - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - isOwner: p.boolean(), - roles: p.bigint(), - user: p.hex(), - - createdTimestamp: p.bigint(), - }, - { - productIndex: p.index("productId"), - userIndex: p.index("user"), - } - ), - - /* -------------------------------------------------------------------------- */ - /* Interaction related stuff */ - /* -------------------------------------------------------------------------- */ - - ProductInteractionContract: p.createTable( - { - id: p.hex(), // address - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - referralTree: p.hex(), - - createdTimestamp: p.bigint(), - lastUpdateTimestamp: p.bigint().optional(), - removedTimestamp: p.bigint().optional(), - }, - { - productIndex: p.index("productId"), - } - ), - - InteractionEvent: p.createTable( - { - id: p.string(), - - interactionId: p.hex().references("ProductInteractionContract.id"), - interaction: p.one("interactionId"), - - user: p.hex(), - type: p.enum("InteractionEventType"), - data: p.json().optional(), - - timestamp: p.bigint(), - }, - { - interactionIndex: p.index("interactionId"), - userIndex: p.index("user"), - - userInteractionIndex: p.index(["user", "interactionId"]), - } - ), - - InteractionEventType: p.createEnum([ - // Referral type - "REFERRED", - "CREATE_REFERRAL_LINK", - // Press type - "OPEN_ARTICLE", - "READ_ARTICLE", - // Purchase type - "PURCHASE_STARTED", - "PURCHASE_COMPLETED", - // Webshop type - "WEBSHOP_OPENNED", - ]), - - /* -------------------------------------------------------------------------- */ - /* Campaign related stuff */ - /* -------------------------------------------------------------------------- */ - - Campaign: p.createTable( - { - id: p.hex(), - - type: p.string(), - name: p.string(), - version: p.string(), - - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - interactionContractId: p - .hex() - .references("ProductInteractionContract.id"), - interactionContract: p.one("interactionContractId"), - - attached: p.boolean(), - - attachTimestamp: p.bigint(), - detachTimestamp: p.bigint().optional(), - - bankingContractId: p - .hex() - .references("BankingContract.id") - .optional(), - bankingContract: p.one("bankingContractId"), - isAuthorisedOnBanking: p.boolean(), - - capResets: p.many("CampaignCapReset.campaignId"), - stats: p.many("ReferralCampaignStats.campaignId"), - }, - { - productIndex: p.index("productId"), - interactionContractIndex: p.index("interactionContractId"), - bankingContractIndex: p.index("bankingContractId"), - } - ), - ReferralCampaignStats: p.createTable( - { - id: p.hex(), - - campaignId: p.hex().references("Campaign.id"), - campaign: p.one("campaignId"), - - totalInteractions: p.bigint(), - - // Press related interactions - openInteractions: p.bigint(), - readInteractions: p.bigint(), - - // Referral related interactions - referredInteractions: p.bigint(), - createReferredLinkInteractions: p.bigint(), - - // purchase related interactions - purchaseStartedInteractions: p.bigint(), - purchaseCompletedInteractions: p.bigint(), - - // webshop related interactions - webshopOpenned: p.bigint(), - - totalRewards: p.bigint(), - }, - { - campaignIndex: p.index("campaignId"), - } - ), - CampaignCapReset: p.createTable( - { - id: p.string(), // campaign address + timestamp - - campaignId: p.hex().references("Campaign.id"), - campaign: p.one("campaignId"), - - timestamp: p.bigint(), - previousTimestamp: p.bigint(), - distributedAmount: p.bigint(), - }, - { - campaignIndex: p.index("campaignId"), - } - ), - - /* -------------------------------------------------------------------------- */ - /* Rewards related stuff */ - /* -------------------------------------------------------------------------- */ - Token: p.createTable({ - // Address of the token contract - id: p.hex(), - - // Token information - decimals: p.int(), - name: p.string(), - symbol: p.string(), - }), - BankingContract: p.createTable( - { - // Address of the rewarding contract - id: p.hex(), - - // Address of the token that will be distributed - tokenId: p.hex().references("Token.id"), - token: p.one("tokenId"), - - // Address of the product linked to this contract - productId: p.bigint().references("Product.id"), - product: p.one("productId"), - - // The total amount distributed and claimed - totalDistributed: p.bigint(), - totalClaimed: p.bigint(), - - // Is the bank still distributing? - isDistributing: p.boolean(), - - // All the rewards - rewards: p.many("Reward.contractId"), - - // All the attached cmapaigns - campaigns: p.many("Campaign.bankingContractId"), - }, - { - tokenIndex: p.index("tokenId"), - productIndex: p.index("productId"), - } - ), - Reward: p.createTable( - { - id: p.string(), // reward contract + user - - contractId: p.hex().references("BankingContract.id"), - contract: p.one("contractId"), - - user: p.hex(), - - pendingAmount: p.bigint(), - totalReceived: p.bigint(), - totalClaimed: p.bigint(), - - rewardAddedEvents: p.many("RewardAddedEvent.rewardId"), - rewardClaimedEvents: p.many("RewardClaimedEvent.rewardId"), - }, - { - userIndex: p.index("user"), - contractIndex: p.index("contractId"), - - userContractIndex: p.index(["user", "contractId"]), - } - ), - RewardAddedEvent: p.createTable( - { - id: p.string(), - - rewardId: p.string().references("Reward.id"), - reward: p.one("rewardId"), - - // Emitter of the reward (campaign sending it) - emitter: p.hex(), - - amount: p.bigint(), - - txHash: p.hex(), - timestamp: p.bigint(), - }, - { - rewardIndex: p.index("rewardId"), - emitterIndex: p.index("emitter"), - } - ), - RewardClaimedEvent: p.createTable( - { - id: p.string(), - - rewardId: p.string().references("Reward.id"), - reward: p.one("rewardId"), - - amount: p.bigint(), - - txHash: p.hex(), - timestamp: p.bigint(), - }, - { - rewardIndex: p.index("rewardId"), - } - ), -})); diff --git a/packages/ponder/src/campaign/campaignBank.ts b/packages/ponder/src/campaign/campaignBank.ts index b613cdd..3b3c296 100644 --- a/packages/ponder/src/campaign/campaignBank.ts +++ b/packages/ponder/src/campaign/campaignBank.ts @@ -2,78 +2,75 @@ import * as console from "node:console"; import { ponder } from "@/generated"; import { erc20Abi, isAddressEqual } from "viem"; import { campaignBankAbi } from "../../abis/campaignAbis"; +import { + bankingContractTable, + campaignTable, + tokenTable, +} from "../../ponder.schema"; ponder.on( "CampaignBanksFactory:CampaignBankCreated", - async ({ event, context }) => { - const { BankingContract, Token } = context.db; + async ({ event, context: { client, db } }) => { const address = event.args.campaignBank; // If not found, find the token of this campaign - const [[productId, token], isDistributing] = - await context.client.multicall({ - contracts: [ - { - abi: campaignBankAbi, - address, - functionName: "getConfig", - } as const, - { - abi: campaignBankAbi, - address, - functionName: "isDistributionEnabled", - } as const, - ], - allowFailure: false, - blockNumber: event.block.number, - }); + const [[productId, token], isDistributing] = await client.multicall({ + contracts: [ + { + abi: campaignBankAbi, + address, + functionName: "getConfig", + } as const, + { + abi: campaignBankAbi, + address, + functionName: "isDistributionEnabled", + } as const, + ], + allowFailure: false, + blockNumber: event.block.number, + }); - await BankingContract.create({ + await db.insert(bankingContractTable).values({ id: address, - data: { - tokenId: token, - totalDistributed: 0n, - totalClaimed: 0n, - productId, - isDistributing, - }, + tokenId: token, + totalDistributed: 0n, + totalClaimed: 0n, + productId, + isDistributing, }); // Create the token if needed - const tokenDb = await Token.findUnique({ id: token }); + const tokenDb = await db.find(tokenTable, { id: token }); if (!tokenDb) { try { // Fetch a few onchain data - const [name, symbol, decimals] = await context.client.multicall( - { - contracts: [ - { - abi: erc20Abi, - functionName: "name", - address: token, - }, - { - abi: erc20Abi, - functionName: "symbol", - address: token, - }, - { - abi: erc20Abi, - functionName: "decimals", - address: token, - }, - ] as const, - allowFailure: false, - } - ); + const [name, symbol, decimals] = await client.multicall({ + contracts: [ + { + abi: erc20Abi, + functionName: "name", + address: token, + }, + { + abi: erc20Abi, + functionName: "symbol", + address: token, + }, + { + abi: erc20Abi, + functionName: "decimals", + address: token, + }, + ] as const, + allowFailure: false, + }); // Create the token - await Token.create({ + await db.insert(tokenTable).values({ id: token, - data: { - name, - symbol, - decimals, - }, + name, + symbol, + decimals, }); } catch (e) { console.error(e, "Unable to fetch token data"); @@ -84,11 +81,9 @@ ponder.on( ponder.on( "CampaignBanks:CampaignAuthorisationUpdated", - async ({ event, context }) => { - const { Campaign } = context.db; - + async ({ event, context: { db } }) => { // Find the interaction contract - const campaign = await Campaign.findUnique({ + const campaign = await db.find(campaignTable, { id: event.args.campaign, }); if (!campaign?.bankingContractId) { @@ -106,22 +101,21 @@ ponder.on( } // Update the campaign - await Campaign.update({ - id: event.args.campaign, - data: { + await db + .update(campaignTable, { + id: event.args.campaign, + }) + .set({ isAuthorisedOnBanking: event.args.isAllowed, - }, - }); + }); } ); ponder.on( "CampaignBanks:DistributionStateUpdated", - async ({ event, context }) => { - const { BankingContract } = context.db; - + async ({ event, context: { db } }) => { // Find the interaction contract - const banking = await BankingContract.findUnique({ + const banking = await db.find(bankingContractTable, { id: event.log.address, }); if (!banking) { @@ -130,11 +124,12 @@ ponder.on( } // Update the campaign - await BankingContract.update({ - id: event.log.address, - data: { + await db + .update(bankingContractTable, { + id: event.log.address, + }) + .set({ isDistributing: event.args.isDistributing, - }, - }); + }); } ); diff --git a/packages/ponder/src/campaign/campaignCreation.ts b/packages/ponder/src/campaign/campaignCreation.ts index fafae5a..cd4d398 100644 --- a/packages/ponder/src/campaign/campaignCreation.ts +++ b/packages/ponder/src/campaign/campaignCreation.ts @@ -4,57 +4,57 @@ import { interactionCampaignAbi, referralCampaignAbi, } from "../../abis/campaignAbis"; +import { campaignTable, referralCampaignStatsTable } from "../../ponder.schema"; import { emptyCampaignStats } from "../interactions/stats"; import { bytesToString } from "../utils/format"; /** * On new campaign creation */ -ponder.on("CampaignsFactory:CampaignCreated", async ({ event, context }) => { - const { Campaign, ReferralCampaignStats } = context.db; +ponder.on( + "CampaignsFactory:CampaignCreated", + async ({ event, context: { client, db } }) => { + // Get the metadata and config of the campaign + const [metadataResult, linkResult, configResult] = + await client.multicall({ + contracts: [ + { + abi: interactionCampaignAbi, + address: event.args.campaign, + functionName: "getMetadata", + } as const, + { + abi: interactionCampaignAbi, + address: event.args.campaign, + functionName: "getLink", + } as const, + { + abi: referralCampaignAbi, + address: event.args.campaign, + functionName: "getConfig", + } as const, + ], + allowFailure: true, + blockNumber: event.block.number, + }); - // Get the metadata and config of the campaign - const [metadataResult, linkResult, configResult] = - await context.client.multicall({ - contracts: [ - { - abi: interactionCampaignAbi, - address: event.args.campaign, - functionName: "getMetadata", - } as const, - { - abi: interactionCampaignAbi, - address: event.args.campaign, - functionName: "getLink", - } as const, - { - abi: referralCampaignAbi, - address: event.args.campaign, - functionName: "getConfig", - } as const, - ], - allowFailure: true, - blockNumber: event.block.number, - }); - - if ( - metadataResult.status !== "success" || - linkResult.status !== "success" - ) { - console.error( - `Failed to get metadata/linkResult for campaign ${event.args.campaign}`, - { event } - ); - return; - } - const [type, version, name] = metadataResult.result; - const [productId, interactionContract] = linkResult.result; - const formattedName = bytesToString(name); + if ( + metadataResult.status !== "success" || + linkResult.status !== "success" + ) { + console.error( + `Failed to get metadata/linkResult for campaign ${event.args.campaign}`, + { event } + ); + return; + } + const [type, version, name] = metadataResult.result; + const [productId, interactionContract] = linkResult.result; + const formattedName = bytesToString(name); - // Create the campaign - await Campaign.create({ - id: event.args.campaign, - data: { + // Create the campaign + await db.insert(campaignTable).values({ + id: event.args.campaign, type, name: formattedName, version, @@ -67,18 +67,18 @@ ponder.on("CampaignsFactory:CampaignCreated", async ({ event, context }) => { ? configResult.result[2] : undefined, isAuthorisedOnBanking: false, - }, - }); - - // Upsert press campaign stats if it's the right type - if (type === "frak.campaign.referral") { - await ReferralCampaignStats.upsert({ - id: event.args.campaign, - create: { - campaignId: event.args.campaign, - ...emptyCampaignStats, - }, - update: {}, }); + + // Upsert press campaign stats if it's the right type + if (type === "frak.campaign.referral") { + await db + .insert(referralCampaignStatsTable) + .values({ + id: event.args.campaign, + campaignId: event.args.campaign, + ...emptyCampaignStats, + }) + .onConflictDoNothing(); + } } -}); +); diff --git a/packages/ponder/src/campaign/campaignInteractionLink.ts b/packages/ponder/src/campaign/campaignInteractionLink.ts index 0a8fea3..d4a03c8 100644 --- a/packages/ponder/src/campaign/campaignInteractionLink.ts +++ b/packages/ponder/src/campaign/campaignInteractionLink.ts @@ -1,67 +1,82 @@ import * as console from "node:console"; import { ponder } from "@/generated"; import { interactionCampaignAbi } from "../../abis/campaignAbis"; +import { + campaignTable, + productInteractionContractTable, + referralCampaignStatsTable, +} from "../../ponder.schema"; import { emptyCampaignStats } from "../interactions/stats"; import { bytesToString } from "../utils/format"; -ponder.on("ProductInteraction:CampaignAttached", async ({ event, context }) => { - const { Campaign, ProductInteractionContract, ReferralCampaignStats } = - context.db; +ponder.on( + "ProductInteraction:CampaignAttached", + async ({ event, context: { db, client } }) => { + // Find the interaction contract + const interactionContract = await db.find( + productInteractionContractTable, + { + id: event.log.address, + } + ); + if (!interactionContract) { + console.error( + `Interaction contract not found: ${event.log.address}` + ); + return; + } - // Find the interaction contract - const interactionContract = await ProductInteractionContract.findUnique({ - id: event.log.address, - }); - if (!interactionContract) { - console.error(`Interaction contract not found: ${event.log.address}`); - return; - } - - // Get the metadata and create it - const [, version, name] = await context.client.readContract({ - abi: interactionCampaignAbi, - address: event.args.campaign, - functionName: "getMetadata", - blockNumber: event.block.number, - }); - const currentCampaign = Campaign.findUnique({ id: event.args.campaign }); - if (!currentCampaign) { - console.error(`Campaign not found: ${event.args.campaign}`); - return; - } - // Update the campaign - await Campaign.update({ - id: event.args.campaign, - data: { - name: bytesToString(name), - version, - attached: true, - attachTimestamp: event.block.timestamp, - }, - }); - - // Upsert press campaign stats if it's the right type - if (name === "frak.campaign.press") { - await ReferralCampaignStats.upsert({ + // Get the metadata and create it + const [type, version, name] = await client.readContract({ + abi: interactionCampaignAbi, + address: event.args.campaign, + functionName: "getMetadata", + blockNumber: event.block.number, + }); + const currentCampaign = db.find(campaignTable, { id: event.args.campaign, - create: { - campaignId: event.args.campaign, - ...emptyCampaignStats, - }, - update: {}, }); - } -}); + if (!currentCampaign) { + console.error(`Campaign not found: ${event.args.campaign}`); + return; + } + // Update the campaign + await db + .update(campaignTable, { + id: event.args.campaign, + }) + .set({ + name: bytesToString(name), + version, + attached: true, + attachTimestamp: event.block.timestamp, + }); -ponder.on("ProductInteraction:CampaignDetached", async ({ event, context }) => { - const { Campaign } = context.db; + // Upsert press campaign stats if it's the right type + if (type === "frak.campaign.press") { + await db + .insert(referralCampaignStatsTable) + .values({ + id: event.args.campaign, + campaignId: event.args.campaign, + ...emptyCampaignStats, + }) + .onConflictDoNothing(); + } + } +); - // Find the campaign to product and mark it as detached - await Campaign.update({ - id: event.args.campaign, - data: { - attached: false, - detachTimestamp: event.block.timestamp, - }, - }); -}); +ponder.on( + "ProductInteraction:CampaignDetached", + async ({ event, context: { db } }) => { + // Find the campaign to product and mark it as detached + await db + .update(campaignTable, { + id: event.args.campaign, + }) + .set({ + attached: false, + detachTimestamp: event.block.timestamp, + }); + } +); diff --git a/packages/ponder/src/campaign/campaignReset.ts b/packages/ponder/src/campaign/campaignReset.ts index 10e9124..633e2af 100644 --- a/packages/ponder/src/campaign/campaignReset.ts +++ b/packages/ponder/src/campaign/campaignReset.ts @@ -1,18 +1,17 @@ import { ponder } from "@/generated"; +import { campaignCapResetTable } from "../../ponder.schema"; -ponder.on("Campaigns:DistributionCapReset", async ({ event, context }) => { - const { CampaignCapReset } = context.db; +ponder.on( + "Campaigns:DistributionCapReset", + async ({ event, context: { db } }) => { + const id = `${event.log.address}-${event.args.previousTimestamp}`; - const id = `${event.log.address}-${event.args.previousTimestamp}`; - - // Create the new administrator - await CampaignCapReset.create({ - id, - data: { + await db.insert(campaignCapResetTable).values({ + id, campaignId: event.log.address, timestamp: event.block.timestamp, previousTimestamp: BigInt(event.args.previousTimestamp), distributedAmount: event.args.distributedAmount, - }, - }); -}); + }); + } +); diff --git a/packages/ponder/src/campaign/campaignReward.ts b/packages/ponder/src/campaign/campaignReward.ts index d874409..eb074f2 100644 --- a/packages/ponder/src/campaign/campaignReward.ts +++ b/packages/ponder/src/campaign/campaignReward.ts @@ -1,11 +1,15 @@ import { ponder } from "@/generated"; +import { + bankingContractTable, + rewardAddedEventTable, + rewardClaimedEventTable, + rewardTable, +} from "../../ponder.schema"; import { increaseCampaignsStats } from "../interactions/stats"; ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { - const { BankingContract, Reward, RewardAddedEvent } = context.db; - // Try to find a rewarding contract for the given event emitter - const bankingContract = await BankingContract.findUnique({ + const bankingContract = await context.db.find(bankingContractTable, { id: event.log.address, }); if (!bankingContract) { @@ -14,40 +18,40 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { } // Update rewarding contract - await BankingContract.update({ - id: bankingContract.id, - data: ({ current }) => ({ - totalDistributed: current.totalDistributed + event.args.amount, - }), - }); + await context.db + .update(bankingContractTable, { + id: event.log.address, + }) + .set({ + totalDistributed: + bankingContract.totalDistributed + event.args.amount, + }); // Update the current user reward (insert it if not found) const rewardId = `${event.log.address}-${event.args.user}`; - await Reward.upsert({ - id: rewardId, - create: { + await context.db + .insert(rewardTable) + .values({ + id: rewardId, contractId: bankingContract.id, user: event.args.user, pendingAmount: event.args.amount, totalReceived: event.args.amount, totalClaimed: 0n, - }, - update: ({ current }) => ({ + }) + .onConflictDoUpdate((current) => ({ pendingAmount: current.pendingAmount + event.args.amount, totalReceived: current.totalReceived + event.args.amount, - }), - }); + })); // Insert the reward event - await RewardAddedEvent.create({ + await context.db.insert(rewardAddedEventTable).values({ id: event.log.id, - data: { - rewardId, - emitter: event.args.emitter, - amount: event.args.amount, - txHash: event.log.transactionHash, - timestamp: event.block.timestamp, - }, + rewardId, + emitter: event.args.emitter, + amount: event.args.amount, + txHash: event.log.transactionHash, + timestamp: event.block.timestamp, }); // Update the current campaigns stats for the distributed amount @@ -61,11 +65,9 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { }); }); -ponder.on("CampaignBanks:RewardClaimed", async ({ event, context }) => { - const { BankingContract, Reward, RewardClaimedEvent } = context.db; - +ponder.on("CampaignBanks:RewardClaimed", async ({ event, context: { db } }) => { // Try to find a rewarding contract for the given event emitter - const bankingContract = await BankingContract.findUnique({ + const bankingContract = await db.find(bankingContractTable, { id: event.log.address, }); if (!bankingContract) { @@ -74,38 +76,37 @@ ponder.on("CampaignBanks:RewardClaimed", async ({ event, context }) => { } // Update rewarding contract - await BankingContract.update({ - id: bankingContract.id, - data: { + await db + .update(bankingContractTable, { + id: event.log.address, + }) + .set({ totalClaimed: bankingContract.totalClaimed + event.args.amount, - }, - }); + }); // Update the current user reward (insert it if not found) const rewardId = `${event.log.address}-${event.args.user}`; - await Reward.upsert({ - id: rewardId, - create: { + await db + .insert(rewardTable) + .values({ + id: rewardId, contractId: bankingContract.id, user: event.args.user, totalClaimed: event.args.amount, totalReceived: 0n, pendingAmount: 0n, - }, - update: ({ current }) => ({ + }) + .onConflictDoUpdate((current) => ({ pendingAmount: current.pendingAmount - event.args.amount, totalClaimed: current.totalClaimed + event.args.amount, - }), - }); + })); // Insert the reward event - await RewardClaimedEvent.create({ + await db.insert(rewardClaimedEventTable).values({ id: event.log.id, - data: { - rewardId, - amount: event.args.amount, - txHash: event.log.transactionHash, - timestamp: event.block.timestamp, - }, + rewardId, + amount: event.args.amount, + txHash: event.log.transactionHash, + timestamp: event.block.timestamp, }); }); diff --git a/packages/ponder/src/interactionDeployments.ts b/packages/ponder/src/interactionDeployments.ts index 069b262..1e9cae7 100644 --- a/packages/ponder/src/interactionDeployments.ts +++ b/packages/ponder/src/interactionDeployments.ts @@ -1,13 +1,12 @@ import { ponder } from "@/generated"; import { productInteractionDiamondAbi } from "../abis/interactionAbis"; +import { productInteractionContractTable } from "../ponder.schema"; ponder.on( "ProductInteractionManager:InteractionContractDeployed", - async ({ event, context }) => { - const { ProductInteractionContract } = context.db; - + async ({ event, context: { client, db } }) => { // Get the referral tree of this interaction contract - const referralTree = await context.client.readContract({ + const referralTree = await client.readContract({ abi: productInteractionDiamondAbi, address: event.args.interactionContract, functionName: "getReferralTree", @@ -15,36 +14,31 @@ ponder.on( }); // Create the interaction contract - await ProductInteractionContract.create({ + await db.insert(productInteractionContractTable).values({ id: event.args.interactionContract, - data: { - productId: event.args.productId, - createdTimestamp: event.block.timestamp, - referralTree, - }, + productId: event.args.productId, + createdTimestamp: event.block.timestamp, + referralTree, }); } ); ponder.on( "ProductInteractionManager:InteractionContractUpdated", - async ({ event, context }) => { - const { ProductInteractionContract } = context.db; - - await ProductInteractionContract.update({ - id: event.args.interactionContract, - data: { + async ({ event, context: { db } }) => { + await db + .update(productInteractionContractTable, { + id: event.args.interactionContract, + }) + .set({ productId: event.args.productId, lastUpdateTimestamp: event.block.timestamp, - }, - }); + }); } ); ponder.on( "ProductInteractionManager:InteractionContractDeleted", - async ({ event, context }) => { - const { ProductInteractionContract } = context.db; - - await ProductInteractionContract.delete({ + async ({ event, context: { db } }) => { + await db.delete(productInteractionContractTable, { id: event.args.interactionContract, }); } diff --git a/packages/ponder/src/interactions/pressInteractions.ts b/packages/ponder/src/interactions/pressInteractions.ts index 87e0a4b..f4a6b3d 100644 --- a/packages/ponder/src/interactions/pressInteractions.ts +++ b/packages/ponder/src/interactions/pressInteractions.ts @@ -1,19 +1,16 @@ import { ponder } from "@/generated"; +import { interactionEventTable } from "../../ponder.schema"; import { increaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:ArticleRead", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "READ_ARTICLE", - timestamp: event.block.timestamp, - data: { articleId: event.args.articleId }, - }, + interactionId: event.log.address, + user: event.args.user, + type: "READ_ARTICLE", + timestamp: event.block.timestamp, + data: { articleId: event.args.articleId }, }); // Update the current campaigns stats @@ -27,18 +24,14 @@ ponder.on("ProductInteraction:ArticleRead", async ({ event, context }) => { }); }); ponder.on("ProductInteraction:ArticleOpened", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "OPEN_ARTICLE", - timestamp: event.block.timestamp, - data: { articleId: event.args.articleId }, - }, + interactionId: event.log.address, + user: event.args.user, + type: "OPEN_ARTICLE", + timestamp: event.block.timestamp, + data: { articleId: event.args.articleId }, }); // Update the current campaigns stats diff --git a/packages/ponder/src/interactions/purchaseInteractions.ts b/packages/ponder/src/interactions/purchaseInteractions.ts index 618392a..435f2b2 100644 --- a/packages/ponder/src/interactions/purchaseInteractions.ts +++ b/packages/ponder/src/interactions/purchaseInteractions.ts @@ -1,19 +1,16 @@ import { ponder } from "@/generated"; +import { interactionEventTable } from "../../ponder.schema"; import { increaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:PurchaseStarted", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "PURCHASE_STARTED", - timestamp: event.block.timestamp, - data: { purchaseId: event.args.purchaseId }, - }, + interactionId: event.log.address, + user: event.args.user, + type: "PURCHASE_STARTED", + timestamp: event.block.timestamp, + data: { purchaseId: event.args.purchaseId }, }); // Update the current campaigns stats @@ -29,18 +26,14 @@ ponder.on("ProductInteraction:PurchaseStarted", async ({ event, context }) => { ponder.on( "ProductInteraction:PurchaseCompleted", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "PURCHASE_COMPLETED", - timestamp: event.block.timestamp, - data: { purchaseId: event.args.purchaseId }, - }, + interactionId: event.log.address, + user: event.args.user, + type: "PURCHASE_COMPLETED", + timestamp: event.block.timestamp, + data: { purchaseId: event.args.purchaseId }, }); // Update the current campaigns stats diff --git a/packages/ponder/src/interactions/referralInteractions.ts b/packages/ponder/src/interactions/referralInteractions.ts index 8134975..9e606e5 100644 --- a/packages/ponder/src/interactions/referralInteractions.ts +++ b/packages/ponder/src/interactions/referralInteractions.ts @@ -1,21 +1,18 @@ import { ponder } from "@/generated"; +import { interactionEventTable } from "../../ponder.schema"; import { increaseCampaignsStats } from "./stats"; ponder.on( "ProductInteraction:ReferralLinkCreation", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "CREATE_REFERRAL_LINK", - timestamp: event.block.timestamp, - data: undefined, - }, + interactionId: event.log.address, + user: event.args.user, + type: "CREATE_REFERRAL_LINK", + timestamp: event.block.timestamp, + data: undefined, }); // Update the current campaigns stats @@ -31,18 +28,14 @@ ponder.on( ); ponder.on("ProductInteraction:UserReferred", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "REFERRED", - timestamp: event.block.timestamp, - data: { referrer: event.args.referrer }, - }, + interactionId: event.log.address, + user: event.args.user, + type: "REFERRED", + timestamp: event.block.timestamp, + data: { referrer: event.args.referrer }, }); // Update the current campaigns stats diff --git a/packages/ponder/src/interactions/stats.ts b/packages/ponder/src/interactions/stats.ts index eede3b2..b717711 100644 --- a/packages/ponder/src/interactions/stats.ts +++ b/packages/ponder/src/interactions/stats.ts @@ -1,6 +1,12 @@ -import type { Context, Schema } from "@/generated"; +import type { Context } from "@/generated"; +import { and, desc, eq } from "@ponder/core"; import type { Address } from "viem"; import { interactionCampaignAbi } from "../../abis/campaignAbis"; +import { + campaignTable, + productInteractionContractTable, + referralCampaignStatsTable, +} from "../../ponder.schema"; /** * Default campaign stats @@ -18,7 +24,7 @@ export const emptyCampaignStats = { }; export type StatsIncrementsParams = Partial< - Omit + Omit >; /** @@ -30,7 +36,7 @@ export type StatsIncrementsParams = Partial< export async function increaseCampaignsStats({ interactionEmitter, productId, - context, + context: { client, db }, increments, blockNumber, }: { @@ -40,20 +46,24 @@ export async function increaseCampaignsStats({ blockNumber: bigint; increments: StatsIncrementsParams; }) { - const { ProductInteractionContract, Campaign, ReferralCampaignStats } = - context.db; - // Find the interaction contract - let interactionContract: Schema["ProductInteractionContract"] | null = null; + let interactionContract: + | typeof productInteractionContractTable.$inferSelect + | null = null; if (interactionEmitter) { - interactionContract = await ProductInteractionContract.findUnique({ + interactionContract = await db.find(productInteractionContractTable, { id: interactionEmitter, }); } else if (productId) { - const interactions = await ProductInteractionContract.findMany({ - where: { productId }, - }); - interactionContract = interactions?.items?.[0] ?? null; + // Find all the interactions contract, sorted with the one created lastly first + const interactions = await db.sql + .select() + .from(productInteractionContractTable) + .where(eq(productInteractionContractTable.productId, productId)) + .orderBy(desc(productInteractionContractTable.createdTimestamp)) + .limit(1) + .execute(); + interactionContract = interactions?.[0] ?? null; } if (!interactionContract) { @@ -72,23 +82,26 @@ export async function increaseCampaignsStats({ } // Find all the associated campaigns, of referral type, that are attached - const campaigns = await Campaign.findMany({ - where: { - productId: interactionContract.productId, - type: "frak.campaign.referral", - attached: true, - }, - }); - if (!campaigns.items.length) { + const campaigns = await db.sql + .select() + .from(campaignTable) + .where( + and( + eq(campaignTable.productId, interactionContract.productId), + eq(campaignTable.type, "frak.campaign.referral"), + eq(campaignTable.attached, true) + ) + ); + if (!campaigns.length) { return; } // Ensure the given campaign was active at this block let isActiveDuringInteraction: boolean[] = []; try { - isActiveDuringInteraction = await context.client.multicall({ + isActiveDuringInteraction = await client.multicall({ allowFailure: false, - contracts: campaigns.items.map( + contracts: campaigns.map( (campaign) => ({ address: campaign.id, @@ -105,7 +118,7 @@ export async function increaseCampaignsStats({ // Perform the increments // todo: Should use an `updateMany` if we are sure that campaign stats are created - for (const [index, campaign] of campaigns.items.entries()) { + for (const [index, campaign] of campaigns.entries()) { if (!campaign.id) { console.error("Campaign id not found", campaign); continue; @@ -122,16 +135,17 @@ export async function increaseCampaignsStats({ try { // Create the stats if not found - await ReferralCampaignStats.upsert({ - id: campaign.id, - create: { + await db + .insert(referralCampaignStatsTable) + .values({ + id: campaign.id, ...emptyCampaignStats, ...increments, campaignId: campaign.id, - }, - // Update the given field by incrementing them - update: ({ current }) => updateStats(current, increments), - }); + }) + .onConflictDoUpdate((current) => + updateStats(current, increments) + ); } catch (error) { console.error("Error while incrementing campaign stats", error, { campaign, @@ -143,7 +157,7 @@ export async function increaseCampaignsStats({ // Define a function to handle the update logic function updateStats( - current: Schema["ReferralCampaignStats"], + current: typeof referralCampaignStatsTable.$inferSelect, increments: StatsIncrementsParams ) { const updatedStats = { diff --git a/packages/ponder/src/interactions/webshopInteractions.ts b/packages/ponder/src/interactions/webshopInteractions.ts index e55742e..1f6f332 100644 --- a/packages/ponder/src/interactions/webshopInteractions.ts +++ b/packages/ponder/src/interactions/webshopInteractions.ts @@ -1,18 +1,15 @@ import { ponder } from "@/generated"; +import { interactionEventTable } from "../../ponder.schema"; import { increaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:WebShopOpenned", async ({ event, context }) => { - const { InteractionEvent } = context.db; - // Insert the press event - await InteractionEvent.create({ + await context.db.insert(interactionEventTable).values({ id: event.log.id, - data: { - interactionId: event.log.address, - user: event.args.user, - type: "WEBSHOP_OPENNED", - timestamp: event.block.timestamp, - }, + interactionId: event.log.address, + user: event.args.user, + type: "WEBSHOP_OPENNED", + timestamp: event.block.timestamp, }); // Update the current campaigns stats diff --git a/packages/ponder/src/product.ts b/packages/ponder/src/product.ts index 41a76bd..8a722a1 100644 --- a/packages/ponder/src/product.ts +++ b/packages/ponder/src/product.ts @@ -1,10 +1,9 @@ import { ponder } from "@/generated"; import { productRegistryAbi } from "../abis/registryAbis"; +import { productTable } from "../ponder.schema"; import { bytesToString } from "./utils/format"; ponder.on("ProductRegistry:ProductMinted", async ({ event, context }) => { - const { Product } = context.db; - // Get the metadata url const metadataUrl = await context.client.readContract({ abi: productRegistryAbi, @@ -15,22 +14,18 @@ ponder.on("ProductRegistry:ProductMinted", async ({ event, context }) => { }); // Create the product - await Product.create({ + await context.db.insert(productTable).values({ id: event.args.productId, - data: { - name: bytesToString(event.args.name), - domain: event.args.domain, - productTypes: event.args.productTypes, - createTimestamp: event.block.timestamp, - metadataUrl, - }, + domain: event.args.domain, + productTypes: event.args.productTypes, + name: bytesToString(event.args.name), + createTimestamp: event.block.timestamp, + metadataUrl, }); }); ponder.on("ProductRegistry:ProductUpdated", async ({ event, context }) => { - const { Product } = context.db; - - let metadataUrl = undefined; + let metadataUrl: string | undefined = undefined; // Update the metadata url if needed if (event.args.customMetadataUrl.length > 0) { @@ -38,13 +33,12 @@ ponder.on("ProductRegistry:ProductUpdated", async ({ event, context }) => { } // Update the product - await Product.update({ - id: event.args.productId, - data: ({ current }) => ({ + await context.db + .update(productTable, { id: event.args.productId }) + .set((current) => ({ name: bytesToString(event.args.name), productTypes: event.args.productTypes, lastUpdateTimestamp: event.block.timestamp, metadataUrl: metadataUrl ?? current.metadataUrl, - }), - }); + })); }); diff --git a/packages/ponder/src/productAdministrator.ts b/packages/ponder/src/productAdministrator.ts index 26fbb67..c8375e5 100644 --- a/packages/ponder/src/productAdministrator.ts +++ b/packages/ponder/src/productAdministrator.ts @@ -7,47 +7,42 @@ import { toHex, zeroAddress, } from "viem"; +import { productAdministratorTable } from "../ponder.schema"; /* * Handle transfer stuff */ ponder.on("ProductRegistry:Transfer", async ({ event, context }) => { - const { ProductAdministrator } = context.db; - const productId = event.args.id; // Remove the previous administrator if (!isAddressEqual(event.args.from, zeroAddress)) { - await ProductAdministrator.upsert({ - id: productAdministratorId(event.args.id, event.args.from), - create: { - isOwner: false, + await context.db + .insert(productAdministratorTable) + .values({ + id: productAdministratorId(event.args.id, event.args.from), productId, - roles: 0n, user: event.args.from, - createdTimestamp: event.block.timestamp, - }, - update: { + roles: 0n, isOwner: false, - }, - }); + createdTimestamp: event.block.timestamp, + }) + .onConflictDoUpdate({ isOwner: false }); } // Create the new administrator if (!isAddressEqual(event.args.to, zeroAddress)) { - await ProductAdministrator.upsert({ - id: productAdministratorId(event.args.id, event.args.to), - create: { + await context.db + .insert(productAdministratorTable) + .values({ + id: productAdministratorId(event.args.id, event.args.to), isOwner: true, productId, roles: 0n, user: event.args.to, createdTimestamp: event.block.timestamp, - }, - update: { - isOwner: true, - }, - }); + }) + .onConflictDoUpdate({ isOwner: true }); } // Cleanup the administrators @@ -57,21 +52,19 @@ ponder.on("ProductRegistry:Transfer", async ({ event, context }) => { ponder.on( "ProductAdministratorRegistry:ProductRolesUpdated", async ({ event, context }) => { - const { ProductAdministrator } = context.db; - - await ProductAdministrator.upsert({ - id: productAdministratorId(event.args.product, event.args.user), - create: { + await context.db + .insert(productAdministratorTable) + .values({ + id: productAdministratorId(event.args.product, event.args.user), isOwner: false, productId: event.args.product, roles: event.args.roles, user: event.args.user, createdTimestamp: event.block.timestamp, - }, - update: { + }) + .onConflictDoUpdate({ roles: event.args.roles, - }, - }); + }); // Cleanup the administrators await administratorCleanup(context); From 7e2cfca13908705b499d2b22cdead1750c53bece Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 20 Nov 2024 01:47:30 +0100 Subject: [PATCH 4/9] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Migrate=20api=20functi?= =?UTF-8?q?ons=20to=20new=20scheme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/src/api/admin.ts | 180 +++++++++--------------- packages/ponder/src/api/interactions.ts | 36 ++--- packages/ponder/src/api/members.ts | 81 +++++------ packages/ponder/src/api/products.ts | 76 +++++----- packages/ponder/src/api/rewards.ts | 107 ++++++++------ packages/ponder/src/api/stats.ts | 56 ++++---- packages/ponder/src/api/tokens.ts | 31 ++-- 7 files changed, 274 insertions(+), 293 deletions(-) diff --git a/packages/ponder/src/api/admin.ts b/packages/ponder/src/api/admin.ts index a1e0bf6..1b8e3aa 100644 --- a/packages/ponder/src/api/admin.ts +++ b/packages/ponder/src/api/admin.ts @@ -1,6 +1,14 @@ import { ponder } from "@/generated"; import { countDistinct, eq, inArray } from "@ponder/core"; import { type Address, isAddress } from "viem"; +import { + campaignTable, + interactionEventTable, + productAdministratorTable, + productInteractionContractTable, + productTable, + referralCampaignStatsTable, +} from "../../ponder.schema"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error @@ -18,22 +26,22 @@ ponder.get("/admin/:wallet/products", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - // Get the tables we will query - const { Product, ProductAdministrator } = ctx.tables; - // Perform the sql query const products = await ctx.db .select({ - id: ProductAdministrator.productId, - isOwner: ProductAdministrator.isOwner, - roles: ProductAdministrator.roles, - domain: Product.domain, - name: Product.name, - productTypes: Product.productTypes, + id: productAdministratorTable.productId, + isOwner: productAdministratorTable.isOwner, + roles: productAdministratorTable.roles, + domain: productTable.domain, + name: productTable.name, + productTypes: productTable.productTypes, }) - .from(ProductAdministrator) - .innerJoin(Product, eq(ProductAdministrator.productId, Product.id)) - .where(eq(ProductAdministrator.user, wallet)); + .from(productAdministratorTable) + .innerJoin( + productTable, + eq(productAdministratorTable.productId, productTable.id) + ) + .where(eq(productAdministratorTable.user, wallet)); // Return the result as json return ctx.json(products); @@ -49,29 +57,26 @@ ponder.get("/admin/:wallet/campaigns", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - // Get the tables we will query - const { ProductAdministrator, Campaign } = ctx.tables; - // Perform the sql query const campaigns = await ctx.db .select({ - productId: ProductAdministrator.productId, - isOwner: ProductAdministrator.isOwner, - roles: ProductAdministrator.roles, - id: Campaign.id, - type: Campaign.type, - name: Campaign.name, - version: Campaign.version, - attached: Campaign.attached, - attachTimestamp: Campaign.attachTimestamp, - detachTimestamp: Campaign.detachTimestamp, + productId: productAdministratorTable.productId, + isOwner: productAdministratorTable.isOwner, + roles: productAdministratorTable.roles, + id: campaignTable.id, + type: campaignTable.type, + name: campaignTable.name, + version: campaignTable.version, + attached: campaignTable.attached, + attachTimestamp: campaignTable.attachTimestamp, + detachTimestamp: campaignTable.detachTimestamp, }) - .from(ProductAdministrator) + .from(productAdministratorTable) .innerJoin( - Campaign, - eq(ProductAdministrator.productId, Campaign.productId) + campaignTable, + eq(productAdministratorTable.productId, campaignTable.productId) ) - .where(eq(ProductAdministrator.user, wallet)); + .where(eq(productAdministratorTable.user, wallet)); // Return the result as json return ctx.json(campaigns); @@ -85,46 +90,38 @@ ponder.get("/admin/:wallet/campaignsStats", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - // Get the tables we will query - const { - ProductAdministrator, - Campaign, - ReferralCampaignStats, - InteractionEvent, - ProductInteractionContract, - } = ctx.tables; - // Perform the sql query const campaignsStats = await ctx.db .select({ - productId: ProductAdministrator.productId, - isOwner: ProductAdministrator.isOwner, - roles: ProductAdministrator.roles, - id: Campaign.id, - name: Campaign.name, - bank: Campaign.bankingContractId, - totalInteractions: ReferralCampaignStats.totalInteractions, - openInteractions: ReferralCampaignStats.openInteractions, - readInteractions: ReferralCampaignStats.readInteractions, - referredInteractions: ReferralCampaignStats.referredInteractions, + productId: productAdministratorTable.productId, + isOwner: productAdministratorTable.isOwner, + roles: productAdministratorTable.roles, + id: campaignTable.id, + name: campaignTable.name, + bank: campaignTable.bankingContractId, + totalInteractions: referralCampaignStatsTable.totalInteractions, + openInteractions: referralCampaignStatsTable.openInteractions, + readInteractions: referralCampaignStatsTable.readInteractions, + referredInteractions: + referralCampaignStatsTable.referredInteractions, createReferredLinkInteractions: - ReferralCampaignStats.createReferredLinkInteractions, + referralCampaignStatsTable.createReferredLinkInteractions, purchaseStartedInteractions: - ReferralCampaignStats.purchaseStartedInteractions, + referralCampaignStatsTable.purchaseStartedInteractions, purchaseCompletedInteractions: - ReferralCampaignStats.purchaseCompletedInteractions, - totalRewards: ReferralCampaignStats.totalRewards, + referralCampaignStatsTable.purchaseCompletedInteractions, + totalRewards: referralCampaignStatsTable.totalRewards, }) - .from(ProductAdministrator) + .from(productAdministratorTable) .innerJoin( - Campaign, - eq(ProductAdministrator.productId, Campaign.productId) + campaignTable, + eq(productAdministratorTable.productId, campaignTable.productId) ) .innerJoin( - ReferralCampaignStats, - eq(Campaign.id, ReferralCampaignStats.campaignId) + referralCampaignStatsTable, + eq(campaignTable.id, referralCampaignStatsTable.campaignId) ) - .where(eq(ProductAdministrator.user, wallet)); + .where(eq(productAdministratorTable.user, wallet)); // Get the unique wallet on this product if (campaignsStats.length === 0) { @@ -138,16 +135,21 @@ ponder.get("/admin/:wallet/campaignsStats", async (ctx) => { // Get the total number of unique users per product const totalPerProducts = await ctx.db .select({ - productId: ProductInteractionContract.productId, - wallets: countDistinct(InteractionEvent.user), + productId: productInteractionContractTable.productId, + wallets: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent) + .from(interactionEventTable) .innerJoin( - ProductInteractionContract, - eq(InteractionEvent.interactionId, ProductInteractionContract.id) + productInteractionContractTable, + eq( + interactionEventTable.interactionId, + productInteractionContractTable.id + ) + ) + .where( + inArray(productInteractionContractTable.productId, uniqueProductIds) ) - .where(inArray(ProductInteractionContract.productId, uniqueProductIds)) - .groupBy(ProductInteractionContract.productId); + .groupBy(productInteractionContractTable.productId); // Return the result as json return ctx.json({ @@ -155,51 +157,3 @@ ponder.get("/admin/:wallet/campaignsStats", async (ctx) => { users: totalPerProducts, }); }); - -// Get all the campaign stats for a wallet -// todo: For legacy purpose only, to be removed once prod is updated -ponder.get("/admin/:wallet/campaigns/stats", async (ctx) => { - // Extract wallet - const wallet = ctx.req.param("wallet") as Address; - if (!isAddress(wallet)) { - return ctx.text("Invalid wallet address", 400); - } - - // Get the tables we will query - const { ProductAdministrator, Campaign, ReferralCampaignStats } = - ctx.tables; - - // Perform the sql query - const campaignsStats = await ctx.db - .select({ - productId: ProductAdministrator.productId, - isOwner: ProductAdministrator.isOwner, - roles: ProductAdministrator.roles, - id: Campaign.id, - bank: Campaign.bankingContractId, - totalInteractions: ReferralCampaignStats.totalInteractions, - openInteractions: ReferralCampaignStats.openInteractions, - readInteractions: ReferralCampaignStats.readInteractions, - referredInteractions: ReferralCampaignStats.referredInteractions, - createReferredLinkInteractions: - ReferralCampaignStats.createReferredLinkInteractions, - purchaseStartedInteractions: - ReferralCampaignStats.purchaseStartedInteractions, - purchaseCompletedInteractions: - ReferralCampaignStats.purchaseCompletedInteractions, - totalRewards: ReferralCampaignStats.totalRewards, - }) - .from(ProductAdministrator) - .innerJoin( - Campaign, - eq(ProductAdministrator.productId, Campaign.productId) - ) - .innerJoin( - ReferralCampaignStats, - eq(Campaign.id, ReferralCampaignStats.campaignId) - ) - .where(eq(ProductAdministrator.user, wallet)); - - // Return the result as json - return ctx.json(campaignsStats); -}); diff --git a/packages/ponder/src/api/interactions.ts b/packages/ponder/src/api/interactions.ts index 8c38535..a31b58f 100644 --- a/packages/ponder/src/api/interactions.ts +++ b/packages/ponder/src/api/interactions.ts @@ -1,6 +1,11 @@ import { ponder } from "@/generated"; import { desc, eq } from "@ponder/core"; import { type Address, isAddress } from "viem"; +import { + interactionEventTable, + productInteractionContractTable, + productTable, +} from "../../ponder.schema"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error @@ -18,31 +23,30 @@ ponder.get("/interactions/:wallet", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - // Get the tables we will query - const { InteractionEvent, ProductInteractionContract, Product } = - ctx.tables; - // Perform the sql query const interactions = await ctx.db .select({ - data: InteractionEvent.data, - type: InteractionEvent.type, - timestamp: InteractionEvent.timestamp, - productId: ProductInteractionContract.productId, - productName: Product.name, + data: interactionEventTable.data, + type: interactionEventTable.type, + timestamp: interactionEventTable.timestamp, + productId: productInteractionContractTable.productId, + productName: productTable.name, }) - .from(InteractionEvent) + .from(interactionEventTable) .innerJoin( - ProductInteractionContract, - eq(ProductInteractionContract.id, InteractionEvent.interactionId) + productInteractionContractTable, + eq( + productInteractionContractTable.id, + interactionEventTable.interactionId + ) ) .innerJoin( - Product, - eq(Product.id, ProductInteractionContract.productId) + productTable, + eq(productTable.id, productInteractionContractTable.productId) ) - .where(eq(InteractionEvent.user, wallet)) + .where(eq(interactionEventTable.user, wallet)) .limit(100) - .orderBy(desc(InteractionEvent.timestamp)); + .orderBy(desc(interactionEventTable.timestamp)); // Return the result as json return ctx.json(interactions); diff --git a/packages/ponder/src/api/members.ts b/packages/ponder/src/api/members.ts index 55458fe..fad8cfe 100644 --- a/packages/ponder/src/api/members.ts +++ b/packages/ponder/src/api/members.ts @@ -1,4 +1,4 @@ -import { type ApiContext, ponder } from "@/generated"; +import { ponder } from "@/generated"; import { and, asc, @@ -15,6 +15,13 @@ import { } from "@ponder/core"; import type { SQL } from "drizzle-orm"; import { type Address, type Hex, isAddress } from "viem"; +import { + interactionEventTable, + productAdministratorTable, + productInteractionContractTable, + productTable, + rewardTable, +} from "../../ponder.schema"; /** * Params for the members fetching @@ -68,24 +75,18 @@ ponder.post("/members/:productAdmin", async (ctx) => { const { filter, sort, limit, offset, noData, onlyAddress } = await ctx.req.json(); - // Get all the product ids for this admin - const { - Product, - ProductAdministrator, - InteractionEvent, - ProductInteractionContract, - Reward, - } = ctx.tables; - // Perform the sql query const productIds = await ctx.db .select({ - id: ProductAdministrator.productId, - name: Product.name, + id: productAdministratorTable.productId, + name: productTable.name, }) - .from(ProductAdministrator) - .innerJoin(Product, eq(ProductAdministrator.productId, Product.id)) - .where(eq(ProductAdministrator.user, wallet)); + .from(productAdministratorTable) + .innerJoin( + productTable, + eq(productAdministratorTable.productId, productTable.id) + ) + .where(eq(productAdministratorTable.user, wallet)); // If no product found, early exit if (!productIds.length) { @@ -93,14 +94,13 @@ ponder.post("/members/:productAdmin", async (ctx) => { } const { whereClauses, havingClauses } = getFilterClauses({ - tables: ctx.tables, filter, }); // Append a clause to filter only the products for this admin whereClauses.push( inArray( - ProductInteractionContract.productId, + productInteractionContractTable.productId, productIds.map((p) => BigInt(p.id)) ) ); @@ -110,20 +110,23 @@ ponder.post("/members/:productAdmin", async (ctx) => { // We want to get the total interactions for each user const membersQuery = ctx.db .select({ - user: InteractionEvent.user, - totalInteractions: count(InteractionEvent.id), - rewards: sql`coalesce(sum(${Reward.totalReceived}), 0)`, + user: interactionEventTable.user, + totalInteractions: count(interactionEventTable.id), + rewards: sql`coalesce(sum(${rewardTable.totalReceived}), 0)`, productIds: sql< string[] - >`array_agg(distinct ${ProductInteractionContract.productId}::text)`, - firstInteractionTimestamp: min(InteractionEvent.timestamp), + >`array_agg(distinct ${productInteractionContractTable.productId}::text)`, + firstInteractionTimestamp: min(interactionEventTable.timestamp), }) - .from(InteractionEvent) + .from(interactionEventTable) .innerJoin( - ProductInteractionContract, - eq(InteractionEvent.interactionId, ProductInteractionContract.id) + productInteractionContractTable, + eq( + interactionEventTable.interactionId, + productInteractionContractTable.id + ) ) - .leftJoin(Reward, eq(Reward.user, InteractionEvent.user)) + .leftJoin(rewardTable, eq(rewardTable.user, interactionEventTable.user)) .where( whereClauses.length === 1 ? whereClauses[0] : and(...whereClauses) ) @@ -134,7 +137,7 @@ ponder.post("/members/:productAdmin", async (ctx) => { ? havingClauses[0] : and(...havingClauses) ) - .groupBy(InteractionEvent.user); + .groupBy(interactionEventTable.user); // Get the total results count const membersSubQuery = membersQuery.as("members"); @@ -158,10 +161,10 @@ ponder.post("/members/:productAdmin", async (ctx) => { // Apply the order if (sort) { const sortFieldMap = { - user: InteractionEvent.user, - totalInteractions: count(InteractionEvent.id), - rewards: sql`coalesce(sum(${Reward.totalReceived}), 0)`, - firstInteractionTimestamp: min(InteractionEvent.timestamp), + user: interactionEventTable.user, + totalInteractions: count(interactionEventTable.id), + rewards: sql`coalesce(sum(${rewardTable.totalReceived}), 0)`, + firstInteractionTimestamp: min(interactionEventTable.timestamp), }; const orderByField = sortFieldMap[sort.by as keyof typeof sortFieldMap]; if (!orderByField) { @@ -202,13 +205,7 @@ ponder.post("/members/:productAdmin", async (ctx) => { /** * Get all the filter clauses */ -function getFilterClauses({ - tables, - filter, -}: { tables: ApiContext["tables"]; filter: GetMembersParams["filter"] }) { - // Get all the product ids for this admin - const { InteractionEvent, ProductInteractionContract, Reward } = tables; - +function getFilterClauses({ filter }: { filter: GetMembersParams["filter"] }) { // Build our where and having clauses depending on the filters const whereClauses = []; const havingClauses = []; @@ -216,14 +213,14 @@ function getFilterClauses({ if (filter?.productIds) { whereClauses.push( inArray( - ProductInteractionContract.productId, + productInteractionContractTable.productId, filter.productIds.map((p) => BigInt(p)) ) ); } if (filter?.interactions) { const clause = buildRangeClause({ - field: count(InteractionEvent.id), + field: count(interactionEventTable.id), ...filter.interactions, }); if (clause) { @@ -236,7 +233,7 @@ function getFilterClauses({ max: filter.rewards.max ? BigInt(filter.rewards.max) : undefined, }; const clause = buildRangeClause({ - field: sum(Reward.totalReceived), + field: sum(rewardTable.totalReceived), ...bigintRewards, }); if (clause) { @@ -245,7 +242,7 @@ function getFilterClauses({ } if (filter?.firstInteractionTimestamp) { const clause = buildRangeClause({ - field: min(InteractionEvent.timestamp), + field: min(interactionEventTable.timestamp), ...filter.firstInteractionTimestamp, }); if (clause) { diff --git a/packages/ponder/src/api/products.ts b/packages/ponder/src/api/products.ts index 9d5f9c5..e4675bb 100644 --- a/packages/ponder/src/api/products.ts +++ b/packages/ponder/src/api/products.ts @@ -1,6 +1,15 @@ import { ponder } from "@/generated"; import { eq, inArray } from "@ponder/core"; import { type Hex, isHex, keccak256, toHex } from "viem"; +import { + bankingContractTable, + campaignTable, + productAdministratorTable, + productInteractionContractTable, + productTable, + referralCampaignStatsTable, + tokenTable, +} from "../../ponder.schema"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: Unreachable code error @@ -18,20 +27,16 @@ ponder.get("/products/:id/administrators", async (ctx) => { return ctx.text("Invalid product id", 400); } - // Get the tables we will query - const { Product, ProductAdministrator } = ctx.tables; - // Perform the sql query const administrators = await ctx.db .select({ - wallet: ProductAdministrator.user, - isOwner: ProductAdministrator.isOwner, - roles: ProductAdministrator.roles, - addedTimestamp: ProductAdministrator.createdTimestamp, + wallet: productAdministratorTable.user, + isOwner: productAdministratorTable.isOwner, + roles: productAdministratorTable.roles, + addedTimestamp: productAdministratorTable.createdTimestamp, }) - .from(ProductAdministrator) - .innerJoin(Product, eq(ProductAdministrator.productId, Product.id)) - .where(eq(Product.id, BigInt(id))); + .from(productAdministratorTable) + .where(eq(productAdministratorTable.productId, BigInt(id))); // Return the result as json return ctx.json(administrators); @@ -47,26 +52,23 @@ ponder.get("/products/:id/banks", async (ctx) => { return ctx.text("Invalid product id", 400); } - // Get the tables we will query - const { BankingContract, Token } = ctx.tables; - // Perform the sql query const administrators = await ctx.db .select({ - address: BankingContract.id, - totalDistributed: BankingContract.totalDistributed, - totalClaimed: BankingContract.totalClaimed, - isDistributing: BankingContract.isDistributing, + address: bankingContractTable.id, + totalDistributed: bankingContractTable.totalDistributed, + totalClaimed: bankingContractTable.totalClaimed, + isDistributing: bankingContractTable.isDistributing, token: { - address: Token.id, - name: Token.name, - symbol: Token.symbol, - decimals: Token.decimals, + address: tokenTable.id, + name: tokenTable.name, + symbol: tokenTable.symbol, + decimals: tokenTable.decimals, }, }) - .from(BankingContract) - .innerJoin(Token, eq(BankingContract.tokenId, Token.id)) - .where(eq(BankingContract.productId, BigInt(id))); + .from(bankingContractTable) + .innerJoin(tokenTable, eq(bankingContractTable.tokenId, tokenTable.id)) + .where(eq(bankingContractTable.productId, BigInt(id))); // Return the result as json return ctx.json(administrators); @@ -75,7 +77,7 @@ ponder.get("/products/:id/banks", async (ctx) => { /** * Get the overall product info */ -ponder.get("/products/info", async ({ req, db, tables, json }) => { +ponder.get("/products/info", async ({ req, db, json }) => { // Extract the product id const domain = req.query("domain"); let productId = req.query("id") as Hex | undefined; @@ -92,8 +94,8 @@ ponder.get("/products/info", async ({ req, db, tables, json }) => { // Get the product from the db const products = await db .select() - .from(tables.Product) - .where(eq(tables.Product.id, BigInt(productId))); + .from(productTable) + .where(eq(productTable.id, BigInt(productId))); const product = products?.[0]; // If not found, early exit @@ -104,37 +106,37 @@ ponder.get("/products/info", async ({ req, db, tables, json }) => { // Get all the admninistrators const administrators = await db .select() - .from(tables.ProductAdministrator) - .where(eq(tables.ProductAdministrator.productId, BigInt(productId))); + .from(productAdministratorTable) + .where(eq(productAdministratorTable.productId, BigInt(productId))); // Get all the banks const banks = await db .select() - .from(tables.BankingContract) - .where(eq(tables.BankingContract.productId, BigInt(productId))); + .from(bankingContractTable) + .where(eq(bankingContractTable.productId, BigInt(productId))); // Get the interaction contracts const interactionContracts = await db .select() - .from(tables.ProductInteractionContract) + .from(productInteractionContractTable) .where( - eq(tables.ProductInteractionContract.productId, BigInt(productId)) + eq(productInteractionContractTable.productId, BigInt(productId)) ); // Get the campaigns const campaigns = await db .select() - .from(tables.Campaign) - .where(eq(tables.Campaign.productId, BigInt(productId))); + .from(campaignTable) + .where(eq(campaignTable.productId, BigInt(productId))); // Get the campaigns tats const campaignStats = campaigns.length ? await db .select() - .from(tables.ReferralCampaignStats) + .from(referralCampaignStatsTable) .where( inArray( - tables.ReferralCampaignStats.campaignId, + referralCampaignStatsTable.campaignId, campaigns.map((c) => c.id) ) ) diff --git a/packages/ponder/src/api/rewards.ts b/packages/ponder/src/api/rewards.ts index cd0aced..169ea27 100644 --- a/packages/ponder/src/api/rewards.ts +++ b/packages/ponder/src/api/rewards.ts @@ -1,6 +1,13 @@ import { ponder } from "@/generated"; import { and, desc, eq, like, not } from "@ponder/core"; import { type Address, isAddress } from "viem"; +import { + bankingContractTable, + productTable, + rewardAddedEventTable, + rewardClaimedEventTable, + rewardTable, +} from "../../ponder.schema"; import { getTokens } from "./tokens"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -19,20 +26,25 @@ ponder.get("/rewards/:wallet", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - // Get the tables we will query - const { Reward, BankingContract } = ctx.tables; - // Perform the sql query const rewards = await ctx.db .select({ - amount: Reward.pendingAmount, - address: Reward.contractId, - token: BankingContract.tokenId, + amount: rewardTable.pendingAmount, + address: rewardTable.contractId, + token: bankingContractTable.tokenId, }) - .from(Reward) - .innerJoin(BankingContract, eq(BankingContract.id, Reward.contractId)) - .where(and(eq(Reward.user, wallet), not(eq(Reward.pendingAmount, 0n)))) - .orderBy(desc(Reward.pendingAmount)); + .from(rewardTable) + .innerJoin( + bankingContractTable, + eq(bankingContractTable.id, rewardTable.contractId) + ) + .where( + and( + eq(rewardTable.user, wallet), + not(eq(rewardTable.pendingAmount, 0n)) + ) + ) + .orderBy(desc(rewardTable.pendingAmount)); // Get all the tokens for the rewards const tokens = await getTokens({ @@ -59,50 +71,59 @@ ponder.get("/rewards/:wallet/history", async (ctx) => { const walletfilter = `%${wallet}`; - // Get the tables we will query - const { - RewardAddedEvent, - RewardClaimedEvent, - BankingContract, - Reward, - Product, - } = ctx.tables; - // Perform the sql query const rewardAddedPromise = ctx.db .select({ - amount: RewardAddedEvent.amount, - txHash: RewardAddedEvent.txHash, - timestamp: RewardAddedEvent.timestamp, - token: BankingContract.tokenId, - productId: BankingContract.productId, - productName: Product.name, + amount: rewardAddedEventTable.amount, + txHash: rewardAddedEventTable.txHash, + timestamp: rewardAddedEventTable.timestamp, + token: bankingContractTable.tokenId, + productId: bankingContractTable.productId, + productName: productTable.name, }) - .from(RewardAddedEvent) - .innerJoin(Reward, eq(Reward.id, RewardAddedEvent.rewardId)) - .innerJoin(BankingContract, eq(BankingContract.id, Reward.contractId)) - .innerJoin(Product, eq(Product.id, BankingContract.productId)) - .where(like(RewardAddedEvent.rewardId, walletfilter)) + .from(rewardAddedEventTable) + .innerJoin( + rewardTable, + eq(rewardTable.id, rewardAddedEventTable.rewardId) + ) + .innerJoin( + bankingContractTable, + eq(bankingContractTable.id, rewardTable.contractId) + ) + .innerJoin( + productTable, + eq(productTable.id, bankingContractTable.productId) + ) + .where(like(rewardAddedEventTable.rewardId, walletfilter)) .limit(100) - .orderBy(desc(RewardAddedEvent.timestamp)); + .orderBy(desc(rewardAddedEventTable.timestamp)); // Perform the sql query const rewardClaimedPromise = ctx.db .select({ - amount: RewardClaimedEvent.amount, - txHash: RewardClaimedEvent.txHash, - timestamp: RewardClaimedEvent.timestamp, - token: BankingContract.tokenId, - productId: BankingContract.productId, - productName: Product.name, + amount: rewardClaimedEventTable.amount, + txHash: rewardClaimedEventTable.txHash, + timestamp: rewardClaimedEventTable.timestamp, + token: bankingContractTable.tokenId, + productId: bankingContractTable.productId, + productName: productTable.name, }) - .from(RewardClaimedEvent) - .innerJoin(Reward, eq(Reward.id, RewardClaimedEvent.rewardId)) - .innerJoin(BankingContract, eq(BankingContract.id, Reward.contractId)) - .innerJoin(Product, eq(Product.id, BankingContract.productId)) - .where(like(RewardClaimedEvent.rewardId, walletfilter)) + .from(rewardClaimedEventTable) + .innerJoin( + rewardTable, + eq(rewardTable.id, rewardClaimedEventTable.rewardId) + ) + .innerJoin( + bankingContractTable, + eq(bankingContractTable.id, rewardTable.contractId) + ) + .innerJoin( + productTable, + eq(productTable.id, bankingContractTable.productId) + ) + .where(like(rewardClaimedEventTable.rewardId, walletfilter)) .limit(100) - .orderBy(desc(RewardClaimedEvent.timestamp)); + .orderBy(desc(rewardClaimedEventTable.timestamp)); const [rewardAdded, rewardClaimed] = await Promise.all([ rewardAddedPromise, diff --git a/packages/ponder/src/api/stats.ts b/packages/ponder/src/api/stats.ts index e856c01..909bed2 100644 --- a/packages/ponder/src/api/stats.ts +++ b/packages/ponder/src/api/stats.ts @@ -1,42 +1,46 @@ import { ponder } from "@/generated"; import { count, countDistinct, eq, gte } from "@ponder/core"; +import { + interactionEventTable, + productInteractionContractTable, + productTable, +} from "../../ponder.schema"; /** * Get the overall system stats */ ponder.get("/stats/overall", async (ctx) => { - // Get all the product ids for this admin - const { InteractionEvent, ProductInteractionContract, Product } = - ctx.tables; - // Get the total nbr of user who performed an interaction const totalInteractions = await ctx.db .select({ - count: countDistinct(InteractionEvent.user), + count: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent); + .from(interactionEventTable); const totalPerType = await ctx.db .select({ - name: InteractionEvent.type, - count: countDistinct(InteractionEvent.user), + name: interactionEventTable.type, + count: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent) - .groupBy(InteractionEvent.type); + .from(interactionEventTable) + .groupBy(interactionEventTable.type); const totalPerProduct = await ctx.db .select({ - name: Product.name, - count: countDistinct(InteractionEvent.user), + name: productTable.name, + count: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent) + .from(interactionEventTable) .innerJoin( - ProductInteractionContract, - eq(InteractionEvent.interactionId, ProductInteractionContract.id) + productInteractionContractTable, + eq( + interactionEventTable.interactionId, + productInteractionContractTable.id + ) ) .innerJoin( - Product, - eq(ProductInteractionContract.productId, Product.id) + productTable, + eq(productInteractionContractTable.productId, productTable.id) ) - .groupBy(Product.id); + .groupBy(productTable.id); // Get the min time for the WAU and DAU const wauMinTime = BigInt(Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000n; @@ -45,19 +49,21 @@ ponder.get("/stats/overall", async (ctx) => { // Get the WAU and DAU const wauInteractions = await ctx.db .select({ - count: countDistinct(InteractionEvent.user), + count: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent) - .where(gte(InteractionEvent.timestamp, wauMinTime)); + .from(interactionEventTable) + .where(gte(interactionEventTable.timestamp, wauMinTime)); const dauInteractions = await ctx.db .select({ - count: countDistinct(InteractionEvent.user), + count: countDistinct(interactionEventTable.user), }) - .from(InteractionEvent) - .where(gte(InteractionEvent.timestamp, dauMinTime)); + .from(interactionEventTable) + .where(gte(interactionEventTable.timestamp, dauMinTime)); // Total number of product registered - const totalProducts = await ctx.db.select({ count: count() }).from(Product); + const totalProducts = await ctx.db + .select({ count: count() }) + .from(productTable); return ctx.json({ interactions: { diff --git a/packages/ponder/src/api/tokens.ts b/packages/ponder/src/api/tokens.ts index 732bc20..8a399ec 100644 --- a/packages/ponder/src/api/tokens.ts +++ b/packages/ponder/src/api/tokens.ts @@ -1,6 +1,7 @@ import { type ApiContext, ponder } from "@/generated"; import { eq, inArray } from "@ponder/core"; 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 @@ -18,19 +19,16 @@ ponder.get("/tokens/:address", async (ctx) => { return ctx.text("Invalid token address address", 400); } - // Get the tables we will query - const { Token } = ctx.tables; - // Perform the sql query const rewards = await ctx.db .select({ - address: Token.id, - name: Token.name, - symbol: Token.symbol, - decimals: Token.decimals, + address: tokenTable.id, + name: tokenTable.name, + symbol: tokenTable.symbol, + decimals: tokenTable.decimals, }) - .from(Token) - .where(eq(Token.id, address)); + .from(tokenTable) + .where(eq(tokenTable.id, address)); // Return the result as json return ctx.json(rewards); @@ -52,14 +50,13 @@ export async function getTokens({ const addressSet = new Set(addresses); // Find all the tokens - const { Token } = ctx.tables; - return await ctx.db + return ctx.db .select({ - address: Token.id, - name: Token.name, - symbol: Token.symbol, - decimals: Token.decimals, + address: tokenTable.id, + name: tokenTable.name, + symbol: tokenTable.symbol, + decimals: tokenTable.decimals, }) - .from(Token) - .where(inArray(Token.id, [...addressSet])); + .from(tokenTable) + .where(inArray(tokenTable.id, [...addressSet])); } From a5f56d8dbf5b640b91400e7319e6b8c1d1812742 Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 20 Nov 2024 01:57:40 +0100 Subject: [PATCH 5/9] =?UTF-8?q?=F0=9F=90=9B=20Reduce=20a=20bit=20realtime?= =?UTF-8?q?=20rpc=20load?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/config/config-local.ts | 2 +- packages/ponder/config/config-prod.ts | 2 ++ packages/ponder/config/configBuilder.ts | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/ponder/config/config-local.ts b/packages/ponder/config/config-local.ts index 52f17f0..85746db 100644 --- a/packages/ponder/config/config-local.ts +++ b/packages/ponder/config/config-local.ts @@ -8,5 +8,5 @@ export default createEnvConfig({ chainId: 42161, deploymentBlock: 261367992, }, - networkKey: "arbitrum", + networkKey: "arbitrumSepolia", }); diff --git a/packages/ponder/config/config-prod.ts b/packages/ponder/config/config-prod.ts index ec06970..1943687 100644 --- a/packages/ponder/config/config-prod.ts +++ b/packages/ponder/config/config-prod.ts @@ -10,4 +10,6 @@ export default createEnvConfig({ deploymentBlock: 261367992, }, networkKey: "arbitrum", + // Reduce polling interval on prod to 60sec + pollingInterval: 30_000, }); diff --git a/packages/ponder/config/configBuilder.ts b/packages/ponder/config/configBuilder.ts index 0a7da66..7e01285 100644 --- a/packages/ponder/config/configBuilder.ts +++ b/packages/ponder/config/configBuilder.ts @@ -155,7 +155,13 @@ export function createEnvConfig({ pgDatabase, network, networkKey, -}: { pgDatabase?: string; network: EnvNetworkConfig; networkKey: NetworkKey }) { + pollingInterval, +}: { + pgDatabase?: string; + network: EnvNetworkConfig; + networkKey: NetworkKey; + pollingInterval?: number; +}) { const contractNetworkConfig = { [networkKey]: { startBlock: network.deploymentBlock, @@ -177,7 +183,8 @@ export function createEnvConfig({ [networkKey]: { chainId: network.chainId, transport: getTransport(network.chainId), - pollingInterval: 30_000, + // Polling interval to 60sec by default + pollingInterval: pollingInterval ?? 60_000, }, }, // contracts config From ea0930818a2179cbaeaac5f71b82ec25cdfeb28e Mon Sep 17 00:00:00 2001 From: KONFeature Date: Wed, 20 Nov 2024 10:55:46 +0100 Subject: [PATCH 6/9] =?UTF-8?q?=E2=9C=A8=20Add=20a=20custom=20transport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- infra/utils.ts | 2 +- packages/erpc/sst-env.d.ts | 21 +++-- packages/ponder/config/config-local.ts | 4 +- .../ponder/src/campaign/campaignReward.ts | 4 +- .../src/interactions/pressInteractions.ts | 6 +- .../src/interactions/purchaseInteractions.ts | 6 +- .../src/interactions/referralInteractions.ts | 6 +- packages/ponder/src/interactions/stats.ts | 79 ++++++++++--------- .../src/interactions/webshopInteractions.ts | 4 +- sst-env.d.ts | 21 +++-- 10 files changed, 77 insertions(+), 76 deletions(-) diff --git a/infra/utils.ts b/infra/utils.ts index 67d3f5a..e7d3777 100644 --- a/infra/utils.ts +++ b/infra/utils.ts @@ -34,7 +34,7 @@ const cloudmapErpcUrl = vpc.nodes.cloudmapNamespace.name.apply( (namespaceName) => `http://Erpc.production.frak-indexer.${namespaceName}:8080/${erpcProject}/evm` ); -const externalErpcUrl = "https://rpc.frak-labs.com/ponder-dev-rpc/evm"; +const externalErpcUrl = `https://rpc.frak-labs.com/${erpcProject}/evm`; export const ponderEnv = { environment: { diff --git a/packages/erpc/sst-env.d.ts b/packages/erpc/sst-env.d.ts index 8254767..46ff1c0 100644 --- a/packages/erpc/sst-env.d.ts +++ b/packages/erpc/sst-env.d.ts @@ -2,17 +2,16 @@ /* tslint:disable */ /* eslint-disable */ /* deno-fmt-ignore-file */ -import "sst" -export {} +import "sst"; declare module "sst" { - export interface Resource { - "MasterVpc": { - "bastion": string - "type": "sst.aws.Vpc" + export interface Resource { + MasterVpc: { + bastion: string; + type: "sst.aws.Vpc"; + }; + PonderDevIndexer: { + service: string; + type: "sst.aws.Service"; + }; } - "PonderDevIndexer": { - "service": string - "type": "sst.aws.Service" - } - } } diff --git a/packages/ponder/config/config-local.ts b/packages/ponder/config/config-local.ts index 85746db..66c4d2f 100644 --- a/packages/ponder/config/config-local.ts +++ b/packages/ponder/config/config-local.ts @@ -5,8 +5,8 @@ import { createEnvConfig } from "./configBuilder"; */ export default createEnvConfig({ network: { - chainId: 42161, - deploymentBlock: 261367992, + chainId: 421614, + deploymentBlock: 86607902, }, networkKey: "arbitrumSepolia", }); diff --git a/packages/ponder/src/campaign/campaignReward.ts b/packages/ponder/src/campaign/campaignReward.ts index eb074f2..7b72708 100644 --- a/packages/ponder/src/campaign/campaignReward.ts +++ b/packages/ponder/src/campaign/campaignReward.ts @@ -5,7 +5,7 @@ import { rewardClaimedEventTable, rewardTable, } from "../../ponder.schema"; -import { increaseCampaignsStats } from "../interactions/stats"; +import { safeIncreaseCampaignsStats } from "../interactions/stats"; ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { // Try to find a rewarding contract for the given event emitter @@ -55,7 +55,7 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { }); // Update the current campaigns stats for the distributed amount - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ productId: bankingContract.productId, context, blockNumber: event.block.number, diff --git a/packages/ponder/src/interactions/pressInteractions.ts b/packages/ponder/src/interactions/pressInteractions.ts index f4a6b3d..01940d0 100644 --- a/packages/ponder/src/interactions/pressInteractions.ts +++ b/packages/ponder/src/interactions/pressInteractions.ts @@ -1,6 +1,6 @@ import { ponder } from "@/generated"; import { interactionEventTable } from "../../ponder.schema"; -import { increaseCampaignsStats } from "./stats"; +import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:ArticleRead", async ({ event, context }) => { // Insert the press event @@ -14,7 +14,7 @@ ponder.on("ProductInteraction:ArticleRead", async ({ event, context }) => { }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, @@ -35,7 +35,7 @@ ponder.on("ProductInteraction:ArticleOpened", async ({ event, context }) => { }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, diff --git a/packages/ponder/src/interactions/purchaseInteractions.ts b/packages/ponder/src/interactions/purchaseInteractions.ts index 435f2b2..1ecc377 100644 --- a/packages/ponder/src/interactions/purchaseInteractions.ts +++ b/packages/ponder/src/interactions/purchaseInteractions.ts @@ -1,6 +1,6 @@ import { ponder } from "@/generated"; import { interactionEventTable } from "../../ponder.schema"; -import { increaseCampaignsStats } from "./stats"; +import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:PurchaseStarted", async ({ event, context }) => { // Insert the press event @@ -14,7 +14,7 @@ ponder.on("ProductInteraction:PurchaseStarted", async ({ event, context }) => { }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, @@ -37,7 +37,7 @@ ponder.on( }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, diff --git a/packages/ponder/src/interactions/referralInteractions.ts b/packages/ponder/src/interactions/referralInteractions.ts index 9e606e5..e8a4478 100644 --- a/packages/ponder/src/interactions/referralInteractions.ts +++ b/packages/ponder/src/interactions/referralInteractions.ts @@ -1,6 +1,6 @@ import { ponder } from "@/generated"; import { interactionEventTable } from "../../ponder.schema"; -import { increaseCampaignsStats } from "./stats"; +import { safeIncreaseCampaignsStats } from "./stats"; ponder.on( "ProductInteraction:ReferralLinkCreation", @@ -16,7 +16,7 @@ ponder.on( }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, @@ -39,7 +39,7 @@ ponder.on("ProductInteraction:UserReferred", async ({ event, context }) => { }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, diff --git a/packages/ponder/src/interactions/stats.ts b/packages/ponder/src/interactions/stats.ts index b717711..8830fdb 100644 --- a/packages/ponder/src/interactions/stats.ts +++ b/packages/ponder/src/interactions/stats.ts @@ -27,25 +27,41 @@ export type StatsIncrementsParams = Partial< Omit >; +type IncreaseCampaignStatsArgs = { + interactionEmitter?: Address; + productId?: bigint; + context: Context; + blockNumber: bigint; + increments: StatsIncrementsParams; +}; + +/** + * Safely increase campaign stats, without crash if it's failing + * @param args + */ +export async function safeIncreaseCampaignsStats( + args: IncreaseCampaignStatsArgs +) { + try { + await increaseCampaignsStats(args); + } catch (error) { + console.error("Error during increaseCampaignsStats", error); + } +} + /** * Get the rewarding contract for the given event emitter * @param interactionContract * @param context * @param increments fields to increments */ -export async function increaseCampaignsStats({ +async function increaseCampaignsStats({ interactionEmitter, productId, context: { client, db }, increments, blockNumber, -}: { - interactionEmitter?: Address; - productId?: bigint; - context: Context; - blockNumber: bigint; - increments: StatsIncrementsParams; -}) { +}: IncreaseCampaignStatsArgs) { // Find the interaction contract let interactionContract: | typeof productInteractionContractTable.$inferSelect @@ -116,43 +132,30 @@ export async function increaseCampaignsStats({ return; } - // Perform the increments - // todo: Should use an `updateMany` if we are sure that campaign stats are created - for (const [index, campaign] of campaigns.entries()) { - if (!campaign.id) { - console.error("Campaign id not found", campaign); - continue; - } - - // Check if the campaign was active during the interaction + // Filter to only get active campaigns during this even + const activeCampaigns = campaigns.filter((campaign, index) => { if (!isActiveDuringInteraction[index]) { console.log("Campaign was not active during the interaction", { campaign, interactionEmitter, }); - continue; + return false; } + return true; + }); - try { - // Create the stats if not found - await db - .insert(referralCampaignStatsTable) - .values({ - id: campaign.id, - ...emptyCampaignStats, - ...increments, - campaignId: campaign.id, - }) - .onConflictDoUpdate((current) => - updateStats(current, increments) - ); - } catch (error) { - console.error("Error while incrementing campaign stats", error, { - campaign, - increments, - }); - } - } + // Upsert every stats + await db + .insert(referralCampaignStatsTable) + .values( + activeCampaigns.map((campaign) => ({ + id: campaign.id, + ...emptyCampaignStats, + ...increments, + campaignId: campaign.id, + })) + ) + .onConflictDoUpdate((current) => updateStats(current, increments)); } // Define a function to handle the update logic diff --git a/packages/ponder/src/interactions/webshopInteractions.ts b/packages/ponder/src/interactions/webshopInteractions.ts index 1f6f332..4720fa8 100644 --- a/packages/ponder/src/interactions/webshopInteractions.ts +++ b/packages/ponder/src/interactions/webshopInteractions.ts @@ -1,6 +1,6 @@ import { ponder } from "@/generated"; import { interactionEventTable } from "../../ponder.schema"; -import { increaseCampaignsStats } from "./stats"; +import { safeIncreaseCampaignsStats } from "./stats"; ponder.on("ProductInteraction:WebShopOpenned", async ({ event, context }) => { // Insert the press event @@ -13,7 +13,7 @@ ponder.on("ProductInteraction:WebShopOpenned", async ({ event, context }) => { }); // Update the current campaigns stats - await increaseCampaignsStats({ + await safeIncreaseCampaignsStats({ interactionEmitter: event.log.address, blockNumber: event.block.number, context, diff --git a/sst-env.d.ts b/sst-env.d.ts index 8254767..46ff1c0 100644 --- a/sst-env.d.ts +++ b/sst-env.d.ts @@ -2,17 +2,16 @@ /* tslint:disable */ /* eslint-disable */ /* deno-fmt-ignore-file */ -import "sst" -export {} +import "sst"; declare module "sst" { - export interface Resource { - "MasterVpc": { - "bastion": string - "type": "sst.aws.Vpc" + export interface Resource { + MasterVpc: { + bastion: string; + type: "sst.aws.Vpc"; + }; + PonderDevIndexer: { + service: string; + type: "sst.aws.Service"; + }; } - "PonderDevIndexer": { - "service": string - "type": "sst.aws.Service" - } - } } From 0b614dff9130fe6c128c858a7afdd0a76970618d Mon Sep 17 00:00:00 2001 From: KONFeature Date: Thu, 21 Nov 2024 02:29:41 +0100 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=90=9B=20Update=20to=20ponder=200.7.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/package.json | 2 +- packages/ponder/src/interactions/stats.ts | 7 +++---- pnpm-lock.yaml | 18 +++++++++--------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/ponder/package.json b/packages/ponder/package.json index 7e5ca3e..1f4724f 100644 --- a/packages/ponder/package.json +++ b/packages/ponder/package.json @@ -18,7 +18,7 @@ "typecheck": "tsc" }, "dependencies": { - "@ponder/core": "0.7.7", + "@ponder/core": "0.7.8", "drizzle-orm": "0.34.1", "hono": "4.6.10", "viem": "^2.21.40" diff --git a/packages/ponder/src/interactions/stats.ts b/packages/ponder/src/interactions/stats.ts index 8830fdb..b7614ef 100644 --- a/packages/ponder/src/interactions/stats.ts +++ b/packages/ponder/src/interactions/stats.ts @@ -135,10 +135,9 @@ async function increaseCampaignsStats({ // Filter to only get active campaigns during this even const activeCampaigns = campaigns.filter((campaign, index) => { if (!isActiveDuringInteraction[index]) { - console.log("Campaign was not active during the interaction", { - campaign, - interactionEmitter, - }); + console.log( + `Campaign ${campaign.id} was not active during the interaction` + ); return false; } return true; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98f85a1..e171d69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: packages/ponder: dependencies: '@ponder/core': - specifier: 0.7.7 - version: 0.7.7(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) + specifier: 0.7.8 + version: 0.7.8(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) drizzle-orm: specifier: 0.34.1 version: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) @@ -902,8 +902,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@ponder/core@0.7.7': - resolution: {integrity: sha512-cni0EUfDcFmVAbmGH9qW5mjS7UI92lN2996AXcm0TzdbXyPNccFSHL/vl+rGw0lzokfMLuKY4E2CbciMdWJJ6A==} + '@ponder/core@0.7.8': + resolution: {integrity: sha512-pJcWtTwXMvmF1Ag6RtsqZImP5J57KXZjEIRzt/bin8utSAFK1TupqTOH2SaePnJrKeNTh3eE5pCqf/g4OeOctQ==} engines: {node: '>=18.14'} hasBin: true peerDependencies: @@ -2197,8 +2197,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql-yoga@5.10.2: - resolution: {integrity: sha512-LcbNUFCsCsv3enjGnXCUQNSKxM49iB4uF9H2Vb3WChBOSQjzqI1d83mvgMTgMVtrZYlKjgM/magMQZV211N2LA==} + graphql-yoga@5.10.3: + resolution: {integrity: sha512-TE6tFvWvD6LHy1v0hleEnftla5Oo2plgat/r8yHcUSS0Qqb+5fb/eHlthNAi+81gFziHc1mUE5w8PqMjBL5/eA==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^15.2.0 || ^16.0.0 @@ -4913,7 +4913,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@ponder/core@0.7.7(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8)': + '@ponder/core@0.7.8(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8)': dependencies: '@babel/code-frame': 7.26.2 '@commander-js/extra-typings': 12.1.0(commander@12.1.0) @@ -4932,7 +4932,7 @@ snapshots: drizzle-orm: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) glob: 10.4.5 graphql: 16.9.0 - graphql-yoga: 5.10.2(graphql@16.9.0) + graphql-yoga: 5.10.3(graphql@16.9.0) hono: 4.6.10 http-terminator: 3.2.0 ink: 4.4.1(react@18.3.1) @@ -6453,7 +6453,7 @@ snapshots: graceful-fs@4.2.11: {} - graphql-yoga@5.10.2(graphql@16.9.0): + graphql-yoga@5.10.3(graphql@16.9.0): dependencies: '@envelop/core': 5.0.2 '@graphql-tools/executor': 1.3.3(graphql@16.9.0) From 4364a7705df1e12017fa2d8b65e4590a7e9dd884 Mon Sep 17 00:00:00 2001 From: KONFeature Date: Thu, 21 Nov 2024 09:56:43 +0100 Subject: [PATCH 8/9] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Move=20some=20id=20to?= =?UTF-8?q?=20the=20new=20composite=20pk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ponder/ponder.schema.ts | 32 +++++++++++-------- packages/ponder/src/api/rewards.ts | 20 +++--------- .../ponder/src/campaign/campaignCreation.ts | 1 - .../src/campaign/campaignInteractionLink.ts | 1 - packages/ponder/src/campaign/campaignReset.ts | 3 -- .../ponder/src/campaign/campaignReward.ts | 10 +++--- packages/ponder/src/interactions/stats.ts | 3 +- packages/ponder/src/productAdministrator.ts | 16 +--------- 8 files changed, 30 insertions(+), 56 deletions(-) diff --git a/packages/ponder/ponder.schema.ts b/packages/ponder/ponder.schema.ts index e46865e..7c0ce96 100644 --- a/packages/ponder/ponder.schema.ts +++ b/packages/ponder/ponder.schema.ts @@ -1,4 +1,4 @@ -import { index, onchainEnum, onchainTable } from "@ponder/core"; +import { index, onchainEnum, onchainTable, primaryKey } from "@ponder/core"; /* -------------------------------------------------------------------------- */ /* Product related stuff */ @@ -26,8 +26,6 @@ export const productTable = onchainTable( export const productAdministratorTable = onchainTable( "ProductAdministrator", (t) => ({ - id: t.hex().primaryKey(), - productId: t.bigint().notNull(), isOwner: t.boolean().notNull(), @@ -37,6 +35,7 @@ export const productAdministratorTable = onchainTable( createdTimestamp: t.bigint().notNull(), }), (table) => ({ + pk: primaryKey({ columns: [table.productId, table.user] }), productIdIdx: index().on(table.productId), userIdx: index().on(table.user), }) @@ -45,6 +44,7 @@ export const productAdministratorTable = onchainTable( export const productInteractionContractTable = onchainTable( "ProductInteractionContract", (t) => ({ + // todo: id become address id: t.hex().primaryKey(), productId: t.bigint().notNull(), @@ -103,6 +103,7 @@ export const interactionEventTable = onchainTable( export const campaignTable = onchainTable( "Campaign", (t) => ({ + // todo: id become address id: t.hex().primaryKey(), type: t.varchar().notNull(), @@ -129,9 +130,7 @@ export const campaignTable = onchainTable( export const referralCampaignStatsTable = onchainTable( "ReferralCampaignStats", (t) => ({ - id: t.hex().primaryKey(), - - campaignId: t.hex().notNull(), + campaignId: t.hex().primaryKey().notNull(), totalInteractions: t.bigint().notNull(), @@ -156,14 +155,15 @@ export const referralCampaignStatsTable = onchainTable( export const campaignCapResetTable = onchainTable( "CampaignCapReset", (t) => ({ - id: t.varchar().primaryKey(), - campaignId: t.hex().notNull(), timestamp: t.bigint().notNull(), previousTimestamp: t.bigint().notNull(), distributedAmount: t.bigint().notNull(), }), (table) => ({ + pk: primaryKey({ + columns: [table.campaignId, table.previousTimestamp], + }), campaignIdx: index().on(table.campaignId), }) ); @@ -172,6 +172,7 @@ export const campaignCapResetTable = onchainTable( /* -------------------------------------------------------------------------- */ export const tokenTable = onchainTable("Token", (t) => ({ + // todo: id become address id: t.hex().primaryKey(), decimals: t.integer().notNull(), name: t.varchar().notNull(), @@ -180,6 +181,7 @@ export const tokenTable = onchainTable("Token", (t) => ({ export const bankingContractTable = onchainTable( "BankingContract", (t) => ({ + // todo: id become address id: t.hex().primaryKey(), tokenId: t.hex().notNull(), productId: t.bigint().notNull(), @@ -195,7 +197,6 @@ export const bankingContractTable = onchainTable( export const rewardTable = onchainTable( "Reward", (t) => ({ - id: t.varchar().primaryKey(), contractId: t.hex().notNull(), user: t.hex().notNull(), pendingAmount: t.bigint().notNull(), @@ -203,6 +204,7 @@ export const rewardTable = onchainTable( totalClaimed: t.bigint().notNull(), }), (table) => ({ + pk: primaryKey({ columns: [table.contractId, table.user] }), userIdx: index().on(table.user), contractIdx: index().on(table.contractId), userContractIdx: index().on(table.user, table.contractId), @@ -212,14 +214,16 @@ export const rewardAddedEventTable = onchainTable( "RewardAddedEvent", (t) => ({ id: t.varchar().primaryKey(), - rewardId: t.varchar().notNull(), + contractId: t.hex().notNull(), + user: t.hex().notNull(), emitter: t.hex().notNull(), amount: t.bigint().notNull(), txHash: t.hex().notNull(), timestamp: t.bigint().notNull(), }), (table) => ({ - rewardIdx: index().on(table.rewardId), + userIdx: index().on(table.user), + contractIdx: index().on(table.contractId), emitterIdx: index().on(table.emitter), }) ); @@ -227,12 +231,14 @@ export const rewardClaimedEventTable = onchainTable( "RewardClaimedEvent", (t) => ({ id: t.varchar().primaryKey(), - rewardId: t.varchar().notNull(), + contractId: t.hex().notNull(), + user: t.hex().notNull(), amount: t.bigint().notNull(), txHash: t.hex().notNull(), timestamp: t.bigint().notNull(), }), (table) => ({ - rewardIdx: index().on(table.rewardId), + userIdx: index().on(table.user), + contractIdx: index().on(table.contractId), }) ); diff --git a/packages/ponder/src/api/rewards.ts b/packages/ponder/src/api/rewards.ts index 169ea27..393f3f0 100644 --- a/packages/ponder/src/api/rewards.ts +++ b/packages/ponder/src/api/rewards.ts @@ -1,5 +1,5 @@ import { ponder } from "@/generated"; -import { and, desc, eq, like, not } from "@ponder/core"; +import { and, desc, eq, not } from "@ponder/core"; import { type Address, isAddress } from "viem"; import { bankingContractTable, @@ -69,8 +69,6 @@ ponder.get("/rewards/:wallet/history", async (ctx) => { return ctx.text("Invalid wallet address", 400); } - const walletfilter = `%${wallet}`; - // Perform the sql query const rewardAddedPromise = ctx.db .select({ @@ -82,19 +80,15 @@ ponder.get("/rewards/:wallet/history", async (ctx) => { productName: productTable.name, }) .from(rewardAddedEventTable) - .innerJoin( - rewardTable, - eq(rewardTable.id, rewardAddedEventTable.rewardId) - ) .innerJoin( bankingContractTable, - eq(bankingContractTable.id, rewardTable.contractId) + eq(bankingContractTable.id, rewardAddedEventTable.contractId) ) .innerJoin( productTable, eq(productTable.id, bankingContractTable.productId) ) - .where(like(rewardAddedEventTable.rewardId, walletfilter)) + .where(eq(rewardAddedEventTable.user, wallet)) .limit(100) .orderBy(desc(rewardAddedEventTable.timestamp)); @@ -109,19 +103,15 @@ ponder.get("/rewards/:wallet/history", async (ctx) => { productName: productTable.name, }) .from(rewardClaimedEventTable) - .innerJoin( - rewardTable, - eq(rewardTable.id, rewardClaimedEventTable.rewardId) - ) .innerJoin( bankingContractTable, - eq(bankingContractTable.id, rewardTable.contractId) + eq(bankingContractTable.id, rewardClaimedEventTable.contractId) ) .innerJoin( productTable, eq(productTable.id, bankingContractTable.productId) ) - .where(like(rewardClaimedEventTable.rewardId, walletfilter)) + .where(eq(rewardClaimedEventTable.user, wallet)) .limit(100) .orderBy(desc(rewardClaimedEventTable.timestamp)); diff --git a/packages/ponder/src/campaign/campaignCreation.ts b/packages/ponder/src/campaign/campaignCreation.ts index cd4d398..f6cfcff 100644 --- a/packages/ponder/src/campaign/campaignCreation.ts +++ b/packages/ponder/src/campaign/campaignCreation.ts @@ -74,7 +74,6 @@ ponder.on( await db .insert(referralCampaignStatsTable) .values({ - id: event.args.campaign, campaignId: event.args.campaign, ...emptyCampaignStats, }) diff --git a/packages/ponder/src/campaign/campaignInteractionLink.ts b/packages/ponder/src/campaign/campaignInteractionLink.ts index d4a03c8..190e62a 100644 --- a/packages/ponder/src/campaign/campaignInteractionLink.ts +++ b/packages/ponder/src/campaign/campaignInteractionLink.ts @@ -57,7 +57,6 @@ ponder.on( await db .insert(referralCampaignStatsTable) .values({ - id: event.args.campaign, campaignId: event.args.campaign, ...emptyCampaignStats, }) diff --git a/packages/ponder/src/campaign/campaignReset.ts b/packages/ponder/src/campaign/campaignReset.ts index 633e2af..eb997a9 100644 --- a/packages/ponder/src/campaign/campaignReset.ts +++ b/packages/ponder/src/campaign/campaignReset.ts @@ -4,10 +4,7 @@ import { campaignCapResetTable } from "../../ponder.schema"; ponder.on( "Campaigns:DistributionCapReset", async ({ event, context: { db } }) => { - const id = `${event.log.address}-${event.args.previousTimestamp}`; - await db.insert(campaignCapResetTable).values({ - id, campaignId: event.log.address, timestamp: event.block.timestamp, previousTimestamp: BigInt(event.args.previousTimestamp), diff --git a/packages/ponder/src/campaign/campaignReward.ts b/packages/ponder/src/campaign/campaignReward.ts index 7b72708..4825719 100644 --- a/packages/ponder/src/campaign/campaignReward.ts +++ b/packages/ponder/src/campaign/campaignReward.ts @@ -28,11 +28,9 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { }); // Update the current user reward (insert it if not found) - const rewardId = `${event.log.address}-${event.args.user}`; await context.db .insert(rewardTable) .values({ - id: rewardId, contractId: bankingContract.id, user: event.args.user, pendingAmount: event.args.amount, @@ -47,7 +45,8 @@ ponder.on("CampaignBanks:RewardAdded", async ({ event, context }) => { // Insert the reward event await context.db.insert(rewardAddedEventTable).values({ id: event.log.id, - rewardId, + contractId: bankingContract.id, + user: event.args.user, emitter: event.args.emitter, amount: event.args.amount, txHash: event.log.transactionHash, @@ -85,11 +84,9 @@ ponder.on("CampaignBanks:RewardClaimed", async ({ event, context: { db } }) => { }); // Update the current user reward (insert it if not found) - const rewardId = `${event.log.address}-${event.args.user}`; await db .insert(rewardTable) .values({ - id: rewardId, contractId: bankingContract.id, user: event.args.user, totalClaimed: event.args.amount, @@ -104,7 +101,8 @@ ponder.on("CampaignBanks:RewardClaimed", async ({ event, context: { db } }) => { // Insert the reward event await db.insert(rewardClaimedEventTable).values({ id: event.log.id, - rewardId, + contractId: bankingContract.id, + user: event.args.user, amount: event.args.amount, txHash: event.log.transactionHash, timestamp: event.block.timestamp, diff --git a/packages/ponder/src/interactions/stats.ts b/packages/ponder/src/interactions/stats.ts index b7614ef..5015a71 100644 --- a/packages/ponder/src/interactions/stats.ts +++ b/packages/ponder/src/interactions/stats.ts @@ -24,7 +24,7 @@ export const emptyCampaignStats = { }; export type StatsIncrementsParams = Partial< - Omit + Omit >; type IncreaseCampaignStatsArgs = { @@ -148,7 +148,6 @@ async function increaseCampaignsStats({ .insert(referralCampaignStatsTable) .values( activeCampaigns.map((campaign) => ({ - id: campaign.id, ...emptyCampaignStats, ...increments, campaignId: campaign.id, diff --git a/packages/ponder/src/productAdministrator.ts b/packages/ponder/src/productAdministrator.ts index c8375e5..1d293ab 100644 --- a/packages/ponder/src/productAdministrator.ts +++ b/packages/ponder/src/productAdministrator.ts @@ -1,12 +1,5 @@ import { type Context, ponder } from "@/generated"; -import { - type Address, - type Hex, - isAddressEqual, - keccak256, - toHex, - zeroAddress, -} from "viem"; +import { isAddressEqual, zeroAddress } from "viem"; import { productAdministratorTable } from "../ponder.schema"; /* @@ -20,7 +13,6 @@ ponder.on("ProductRegistry:Transfer", async ({ event, context }) => { await context.db .insert(productAdministratorTable) .values({ - id: productAdministratorId(event.args.id, event.args.from), productId, user: event.args.from, roles: 0n, @@ -35,7 +27,6 @@ ponder.on("ProductRegistry:Transfer", async ({ event, context }) => { await context.db .insert(productAdministratorTable) .values({ - id: productAdministratorId(event.args.id, event.args.to), isOwner: true, productId, roles: 0n, @@ -55,7 +46,6 @@ ponder.on( await context.db .insert(productAdministratorTable) .values({ - id: productAdministratorId(event.args.product, event.args.user), isOwner: false, productId: event.args.product, roles: event.args.roles, @@ -71,10 +61,6 @@ ponder.on( } ); -function productAdministratorId(productId: bigint, user: Address): Hex { - return keccak256(`${toHex(productId)}-${user}`); -} - /** * Find every administrator where isOwner = false and roles = 0 and delete them */ From 2d876b206ac768551888ec8ade5bb978b415969a Mon Sep 17 00:00:00 2001 From: KONFeature Date: Thu, 21 Nov 2024 10:49:01 +0100 Subject: [PATCH 9/9] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Switch=20from=20pnpm?= =?UTF-8?q?=20to=20bun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 46 +- README.md | 11 +- bun.lockb | Bin 0 -> 277719 bytes infra/utils.ts | 2 +- package.json | 12 +- packages/erpc/package.json | 2 +- packages/ponder/Dockerfile | 39 +- packages/ponder/DockerfileBun | 30 - packages/ponder/package.json | 12 +- pnpm-lock.yaml | 8013 --------------------------------- pnpm-workspace.yaml | 2 - sst.config.ts.bk | 34 - 12 files changed, 45 insertions(+), 8158 deletions(-) create mode 100755 bun.lockb delete mode 100644 packages/ponder/DockerfileBun delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml delete mode 100644 sst.config.ts.bk diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8e7f0ae..dd03cc5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,9 +26,9 @@ jobs: runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '22' + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 - uses: dorny/paths-filter@v3 id: changes @@ -41,7 +41,7 @@ jobs: - 'packages/erpc/Dockerfile' ponder: - 'packages/ponder/**' - dockerRelated: + dockerImage: - 'packages/erpc/erpc.yaml' - 'packages/erpc/Dockerfile' - 'packages/ponder/**' @@ -49,32 +49,17 @@ jobs: - name: "🔧 Set up environment variables" run: | if [ "${{ github.ref }}" == "refs/heads/main" ]; then + echo "STAGE=production" >> $GITHUB_ENV echo "PONDER_PROD_IMAGE_TAG=${{ github.sha }}" >> $GITHUB_ENV - echo "PONDER_DEV_IMAGE_TAG=${{ github.sha }}" >> $GITHUB_ENV + echo "PONDER_DEV_IMAGE_TAG=latest" >> $GITHUB_ENV else + echo "STAGE=dev" >> $GITHUB_ENV echo "PONDER_PROD_IMAGE_TAG=latest" >> $GITHUB_ENV echo "PONDER_DEV_IMAGE_TAG=${{ github.sha }}" >> $GITHUB_ENV fi - - uses: pnpm/action-setup@v4 - with: - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: "🔨 Install dependencies" - run: pnpm install --frozen-lockfile + run: bun install --frozen-lockfile - name: "👥 Configure AWS Credentials" uses: aws-actions/configure-aws-credentials@v4 @@ -88,15 +73,15 @@ jobs: uses: aws-actions/amazon-ecr-login@v2 - name: Set up QEMU - if: steps.changes.outputs.dockerRelated == 'true' + if: steps.changes.outputs.dockerImage == 'true' uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - if: steps.changes.outputs.dockerRelated == 'true' + if: steps.changes.outputs.dockerImage == 'true' uses: docker/setup-buildx-action@v3 - name: "🔨 Build Ponder dev docker dependencies" - if: steps.changes.outputs.ponder == 'true' + if: steps.changes.outputs.ponder == 'true' && env.STAGE == 'dev' uses: docker/build-push-action@v6 with: context: ./packages/ponder @@ -110,7 +95,7 @@ jobs: cache-to: type=gha,mode=min - name: "🔨 Build Ponder prod docker dependencies" - if: steps.changes.outputs.ponder == 'true' && env.PONDER_PROD_IMAGE_TAG != 'latest' + if: steps.changes.outputs.ponder == 'true' && env.STAGE == 'production' uses: docker/build-push-action@v6 with: context: ./packages/ponder @@ -124,7 +109,7 @@ jobs: cache-to: type=gha,mode=min - name: "🔨 Build ERPC docker dependencies" - if: steps.changes.outputs.erpc == 'true' + if: steps.changes.outputs.erpc == 'true' && env.STAGE == 'production' uses: docker/build-push-action@v6 with: context: ./packages/erpc @@ -141,11 +126,10 @@ jobs: - name: "🚀 SST Deploy" run: | if [ "${{ github.ref }}" == "refs/heads/main" ]; then - pnpm run deploy:prod + bun run deploy:prod else - pnpm run deploy:dev + bun run deploy:dev fi - pnpm sst deploy --stage prod env: ERPC_IMAGE_TAG: ${{ steps.changes.outputs.erpc == 'true' && github.sha || 'latest' }} PONDER_DEV_IMAGE_TAG: ${{ steps.changes.outputs.ponder == 'true' && env.PONDER_DEV_IMAGE_TAG || 'latest' }} diff --git a/README.md b/README.md index 86178d0..341dd5d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Frak Indexer -Frak Indexer is an open-source project designed to index events from Frak smart contracts on the Arbitrum Sepolia network. It combines the power of Ponder for building robust crypto apps with eRPC for efficient RPC caching and load balancing, all deployed using SST (Serverless Stack) on AWS infrastructure. +Frak Indexer is an open-source project designed to index events from Frak smart contracts on the Arbitrum network. It combines the power of Ponder for building robust crypto apps with eRPC for efficient RPC caching and load balancing, all deployed using SST (Serverless Stack) on AWS infrastructure. ## Architecture Overview @@ -33,15 +33,6 @@ Both services are deployed as containerized applications on AWS ECS (Elastic Con - **Observable**: Includes CloudWatch logs and metrics for monitoring. - **Maintainable**: Infrastructure as Code (IaC) using SST for easy updates and version control. -## Deployment - -This project uses SST for infrastructure deployment. To deploy: - -1. Ensure you have AWS credentials configured. -2. Setup the secrets required to run the project (check the `iac/Config.ts` file for the required secrets). -3. Install dependencies: `pnpm install` -4. Deploy the stack: `npx run deploy` - ## Contributing We welcome contributions to the Frak Indexer project! diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..6a7da0f9b7d1ae6aed717ea1a55fe12c01c99f9d GIT binary patch literal 277719 zcmeFa1z1&E7x%kC6vaRcP!tsvObl#AK?GD(><%P0u#u7th=rJ77nq1$V7Fj*i{0Id zh27uyv*tML)~{ad zTP~`H*-5vrgscuGg`A88bo(8ojX*1D2jXGV9 z>LH}1Njs62Cw)i#H6}G9W3(?PMgK}sQpl$ODduM`wPXAWk)qDye@pNuNa;}I4l#Z~ z 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 F?=KJ1KW6{{ literal 0 HcmV?d00001 diff --git a/infra/utils.ts b/infra/utils.ts index e7d3777..700ac90 100644 --- a/infra/utils.ts +++ b/infra/utils.ts @@ -13,7 +13,7 @@ export function getPonderEntrypoint(type: "indexer" | "reader") { const command = type === "indexer" ? "start" : "serve"; return [ - "pnpm", + "bun", "ponder", "--log-format", "json", diff --git a/package.json b/package.json index 73b0f21..50d4113 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,15 @@ "type": "module", "scripts": { "deploy:prod": "sst deploy --stage production", - "deploy:dev": "sst deploy --stage dev", + "deploy:dev": "sst deploy --stage dev --print-logs", "format": "biome check --write .", "format:check": "biome check .", "lint": "biome lint .", - "typecheck": "tsc" + "typecheck": "tsc", + "update:deps": "npm-check-updates -ui -ws -f \\!sst" }, "devDependencies": { + "npm-check-updates": "^17.1.11", "@biomejs/biome": "1.9.4", "@pulumi/aws": "^6.59.1", "@pulumi/pulumi": "^3.139.0", @@ -22,8 +24,6 @@ "engines": { "node": ">=18.14" }, - "packageManager": "pnpm@9.1.3", - "dependencies": { - "sst": "3.3.22" - } + "packageManager": "bun@1.1.36", + "workspaces": ["packages/*"] } diff --git a/packages/erpc/package.json b/packages/erpc/package.json index 52e1686..53c8e8c 100644 --- a/packages/erpc/package.json +++ b/packages/erpc/package.json @@ -22,5 +22,5 @@ "engines": { "node": ">=18.14" }, - "packageManager": "pnpm@9.1.3" + "packageManager": "bun@1.1.36" } \ No newline at end of file diff --git a/packages/ponder/Dockerfile b/packages/ponder/Dockerfile index 01d4f76..93d5c05 100644 --- a/packages/ponder/Dockerfile +++ b/packages/ponder/Dockerfile @@ -1,35 +1,28 @@ -# Base image is node-22 -FROM node:22-slim AS base - -# Setup pnpm -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN corepack install --global pnpm@9.1.3 - -# Create app directory +# Base stage +FROM --platform=$BUILDPLATFORM oven/bun:1 AS base WORKDIR /usr/src/app -# install dependencies into temp directory -# this will cache them and speed up future builds +# Bun package installation FROM base AS install -# install python and all the stuff required to build sqlite3 -RUN apt-get update && apt-get install -y python3 build-essential -# Install dependencies +ENV NODE_ENV=production + +# Install prod dependencies RUN mkdir -p /temp/prod COPY package.json /temp/prod/ -RUN --mount=type=cache,id=pnpm,target=/pnpm/store cd /temp/prod && pnpm install --prod +RUN cd /temp/prod && bun install --production -FROM base AS release -# Set env to production -ENV NODE_ENV=production +# Start a new stage for the final image +FROM base AS release -# copy production dependencies and source code into final image -COPY . . +# todo: Ideally ponder would expose a bundler command or something like that to have a lighter docker image, +# thus permitting to use more efficient runtime than vite (like a bun binary bundle) +# Copy the installed node_modules and the app COPY --from=install /temp/prod/node_modules node_modules +COPY . . -# run the app +# Run the app +ENV NODE_ENV=production EXPOSE 42069/tcp -ENTRYPOINT [ "pnpm", "ponder", "start"] \ No newline at end of file +ENTRYPOINT ["bun", "ponder", "start"] \ No newline at end of file diff --git a/packages/ponder/DockerfileBun b/packages/ponder/DockerfileBun deleted file mode 100644 index b54af06..0000000 --- a/packages/ponder/DockerfileBun +++ /dev/null @@ -1,30 +0,0 @@ -# Only work for distant stage, not with sqlite since using sqlite3 -# Use a multi-stage build -# FROM --platform=$BUILDPLATFORM node:lts AS builder -FROM --platform=$BUILDPLATFORM oven/bun AS builder - -# Create app directory -WORKDIR /building-app - -# Copy the entire repo -COPY . . - -# Setup bun (since we are on a node image) -# RUN npm i -g bun - -# Run the installation -RUN bun install - -# Start a new stage for the final image -FROM oven/bun - -WORKDIR /app - -# Copy the built application from the builder stage -COPY . . -COPY --from=builder /building-app/node_modules ./node_modules - -ENV NODE_ENV=production -CMD ["bun", "ponder", "--config", "config/config-dev.ts", "start"] - -EXPOSE 42069/tcp \ No newline at end of file diff --git a/packages/ponder/package.json b/packages/ponder/package.json index 1f4724f..8103b11 100644 --- a/packages/ponder/package.json +++ b/packages/ponder/package.json @@ -15,7 +15,10 @@ "start": "ponder --config config/config-local.ts start", "start:dev": "ponder --config config/config-dev.ts start", "start:prod": "ponder --config config/config-prod.ts start", - "typecheck": "tsc" + "typecheck": "tsc", + "docker": "bun docker:build && bun docker:run", + "docker:build": "docker build --tag ponder-dev .", + "docker:run": "docker run -P ponder-dev" }, "dependencies": { "@ponder/core": "0.7.8", @@ -25,16 +28,11 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@types/aws-lambda": "8.10.138", "@types/node": "^22.4.0", - "sst": "3.3.22", "typescript": "^5.6.3" }, - "trustedDependencies": [ - "better_sqlite3" - ], "engines": { "node": ">=18.14" }, - "packageManager": "pnpm@9.1.3" + "packageManager": "bun@1.1.36" } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index e171d69..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,8013 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - sst: - specifier: 3.3.22 - version: 3.3.22(hono@4.6.10) - devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 - '@pulumi/aws': - specifier: ^6.59.1 - version: 6.59.1(typescript@5.6.3) - '@pulumi/pulumi': - specifier: ^3.139.0 - version: 3.139.0(typescript@5.6.3) - '@types/aws-lambda': - specifier: 8.10.145 - version: 8.10.145 - '@types/node': - specifier: ^22.5.4 - version: 22.5.5 - typescript: - specifier: ^5.6.3 - version: 5.6.3 - - packages/erpc: - devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 - '@konfeature/erpc-config-generator': - specifier: 0.0.13 - version: 0.0.13(@ubiquity-dao/rpc-handler@1.3.0)(esbuild@0.24.0)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8)) - '@types/aws-lambda': - specifier: 8.10.138 - version: 8.10.138 - '@types/node': - specifier: ^22.4.0 - version: 22.5.5 - sst: - specifier: 3.3.22 - version: 3.3.22(hono@4.6.10) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - viem: - specifier: ^2.21.40 - version: 2.21.40(typescript@5.6.3)(zod@3.23.8) - - packages/ponder: - dependencies: - '@ponder/core': - specifier: 0.7.8 - version: 0.7.8(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8) - drizzle-orm: - specifier: 0.34.1 - version: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) - hono: - specifier: 4.6.10 - version: 4.6.10 - viem: - specifier: ^2.21.40 - version: 2.21.40(typescript@5.6.3)(zod@3.23.8) - devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 - '@types/aws-lambda': - specifier: 8.10.138 - version: 8.10.138 - '@types/node': - specifier: ^22.4.0 - version: 22.5.5 - sst: - specifier: 3.3.22 - version: 3.3.22(hono@4.6.10) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - -packages: - - '@adraffy/ens-normalize@1.11.0': - resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} - - '@alcalzone/ansi-tokenize@0.1.3': - resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} - engines: {node: '>=14.13.1'} - - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - - '@aws-sdk/client-rds-data@3.665.0': - resolution: {integrity: sha512-XcXruPJBtwXgFqd8H46ZEn4cRMcPJITHZqpvBYXu6fLtz+5SRIag0sI+gHZEbcwJYh50uR3204PpWxUNfhWmsA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sso-oidc@3.665.0': - resolution: {integrity: sha512-FQ2YyM9/6y3clWkf3d60/W4c/HZy61hbfIsR4KIh8aGOifwfIx/UpZQ61pCr/TXTNqbaAVU2/sK+J1zFkGEoLw==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.665.0 - - '@aws-sdk/client-sso@3.665.0': - resolution: {integrity: sha512-zje+oaIiyviDv5dmBWhGHifPTb0Idq/HatNPy+VEiwo2dxcQBexibD5CQE5e8CWZK123Br/9DHft+iNKdiY5bA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sts@3.665.0': - resolution: {integrity: sha512-/OQEaWB1euXhZ/hV+wetDw1tynlrkNKzirzoiFuJ1EQsiIb9Ih/qjUF9KLdF1+/bXbnGu5YvIaAx80YReUchjg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/core@3.665.0': - resolution: {integrity: sha512-nqmNNf7Ml7qDXTIisDv+OYe/rl3nAW4cmR+HxrOCWdhTHe8xRdR5c45VPoh8nv1KIry5xtd+iqPrzzjydes+Og==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-env@3.664.0': - resolution: {integrity: sha512-95rE+9Voaco0nmKJrXqfJAxSSkSWqlBy76zomiZrUrv7YuijQtHCW8jte6v6UHAFAaBzgFsY7QqBxs15u9SM7g==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-http@3.664.0': - resolution: {integrity: sha512-svaPwVfWV3g/qjd4cYHTUyBtkdOwcVjC+tSj6EjoMrpZwGUXcCbYe04iU0ARZ6tuH/u3vySbTLOGjSa7g8o9Qw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-ini@3.665.0': - resolution: {integrity: sha512-CSWBV5GqCkK78TTXq6qx40MWCt90t8rS/O7FIR4nbmoUhG/DysaC1G0om1fSx6k+GWcvIIIsSvD4hdbh8FRWKA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.665.0 - - '@aws-sdk/credential-provider-node@3.665.0': - resolution: {integrity: sha512-cmJfVi4IM0WaKMQvPXhiS5mdIZyCoa04I3D+IEKpD2GAuVZa6tgwqfPyaApFDLjyedGGNFkC4MRgAjCcCl4WFg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-process@3.664.0': - resolution: {integrity: sha512-sQicIw/qWTsmMw8EUQNJXdrWV5SXaZc2zGdCQsQxhR6wwNO2/rZ5JmzdcwUADmleBVyPYk3KGLhcofF/qXT2Ng==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-sso@3.665.0': - resolution: {integrity: sha512-Xe8WW4r70bsetGQG3azFeK/gd+Q4OmNiidtRrG64y/V9TIvIqc7Y/yUZNhEgFkpG19o188VmXg/ulnG3E+MvLg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-web-identity@3.664.0': - resolution: {integrity: sha512-10ltP1BfSKRJVXd8Yr5oLbo+VSDskWbps0X3szSsxTk0Dju1xvkz7hoIjylWLvtGbvQ+yb2pmsJYKCudW/4DJg==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.664.0 - - '@aws-sdk/middleware-host-header@3.664.0': - resolution: {integrity: sha512-4tCXJ+DZWTq38eLmFgnEmO8X4jfWpgPbWoCyVYpRHCPHq6xbrU65gfwS9jGx25L4YdEce641ChI9TKLryuUgRA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-logger@3.664.0': - resolution: {integrity: sha512-eNykMqQuv7eg9pAcaLro44fscIe1VkFfhm+gYnlxd+PH6xqapRki1E68VHehnIptnVBdqnWfEqLUSLGm9suqhg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.664.0': - resolution: {integrity: sha512-jq27WMZhm+dY8BWZ9Ipy3eXtZj0lJzpaKQE3A3tH5AOIlUV/gqrmnJ9CdqVVef4EJsq9Yil4ZzQjKKmPsxveQg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-user-agent@3.664.0': - resolution: {integrity: sha512-Kp5UwXwayO6d472nntiwgrxqay2KS9ozXNmKjQfDrUWbEzvgKI+jgKNMia8MMnjSxYoBGpQ1B8NGh8a6KMEJJg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/region-config-resolver@3.664.0': - resolution: {integrity: sha512-o/B8dg8K+9714RGYPgMxZgAChPe/MTSMkf/eHXTUFHNik5i1HgVKfac22njV2iictGy/6GhpFsKa1OWNYAkcUg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/token-providers@3.664.0': - resolution: {integrity: sha512-dBAvXW2/6bAxidvKARFxyCY2uCynYBKRFN00NhS1T5ggxm3sUnuTpWw1DTjl02CVPkacBOocZf10h8pQbHSK8w==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.664.0 - - '@aws-sdk/types@3.664.0': - resolution: {integrity: sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-endpoints@3.664.0': - resolution: {integrity: sha512-KrXoHz6zmAahVHkyWMRT+P6xJaxItgmklxEDrT+npsUB4d5C/lhw16Crcp9TDi828fiZK3GYKRAmmNhvmzvBNg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-locate-window@3.693.0': - resolution: {integrity: sha512-ttrag6haJLWABhLqtg1Uf+4LgHWIMOVSYL+VYZmAp2v4PUGOwWmWQH0Zk8RM7YuQcLfH/EoR72/Yxz6A4FKcuw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-user-agent-browser@3.664.0': - resolution: {integrity: sha512-c/PV3+f1ss4PpskHbcOxTZ6fntV2oXy/xcDR9nW+kVaz5cM1G702gF0rvGLKPqoBwkj2rWGe6KZvEBeLzynTUQ==} - - '@aws-sdk/util-user-agent-node@3.664.0': - resolution: {integrity: sha512-l/m6KkgrTw1p/VTJTk0IoP9I2OnpWp3WbBgzxoNeh9cUcxTufIn++sBxKj5hhDql57LKWsckScG/MhFuH0vZZA==} - engines: {node: '>=16.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@commander-js/extra-typings@12.1.0': - resolution: {integrity: sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==} - peerDependencies: - commander: ~12.1.0 - - '@electric-sql/pglite@0.2.13': - resolution: {integrity: sha512-YRY806NnScVqa21/1L1vaysSQ+0/cAva50z7vlwzaGiBOTS9JhdzIRHN0KfgMhobFAphbznZJ7urMso4RtMBIQ==} - - '@envelop/core@5.0.2': - resolution: {integrity: sha512-tVL6OrMe6UjqLosiE+EH9uxh2TQC0469GwF4tE014ugRaDDKKVWwFwZe0TBMlcyHKh5MD4ZxktWo/1hqUxIuhw==} - engines: {node: '>=18.0.0'} - - '@envelop/types@5.0.0': - resolution: {integrity: sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA==} - engines: {node: '>=18.0.0'} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.24.0': - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.24.0': - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.24.0': - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.24.0': - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.24.0': - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.0': - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.24.0': - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.0': - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.24.0': - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.24.0': - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.24.0': - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.24.0': - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.24.0': - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.24.0': - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.0': - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.24.0': - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.24.0': - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.0': - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.24.0': - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.0': - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.24.0': - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.24.0': - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.24.0': - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.24.0': - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@escape.tech/graphql-armor-max-aliases@2.6.0': - resolution: {integrity: sha512-9dwRC5+dl986byBD9QRYRUrLALa7awpUe4aIM1j7StZHGJgmYRj3LZaWQM3JyI8j2FXg4rqBC4FJAiVYpRyWqw==} - engines: {node: '>=18.0.0'} - - '@escape.tech/graphql-armor-max-depth@2.4.0': - resolution: {integrity: sha512-4sQkvPITjkSW4mReGyBT5A4qFkBTzyK9HGOLm8Rrte/JrulVAsokK8HWDr/2Yw0KqSFBMCAmy575YMaYoTHLvQ==} - engines: {node: '>=18.0.0'} - - '@escape.tech/graphql-armor-max-tokens@2.5.0': - resolution: {integrity: sha512-XypQs0NELYwmz/Mx9wVjw1riI3bvZyU2Ya4BnV0AIFLd9UYYl0BzuI4BSR46t5V2Sh73ePl6Ru1jj5rb4nfVOw==} - engines: {node: '>=18.0.0'} - - '@escape.tech/graphql-armor-types@0.7.0': - resolution: {integrity: sha512-RHxyyp6PDgS6NAPnnmB6JdmUJ6oqhpSHFbsglGWeCcnNzceA5AkQFpir7VIDbVyS8LNC1xhipOtk7f9ycrIemQ==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@graphql-tools/executor@1.3.3': - resolution: {integrity: sha512-lpkgokF6vjGHNluANOTsWoSM0vuvUuVpjY1810tvM6Vlyoq2tJ+nmqweGbMsq/GLhmZQP1lY/nOkj2zPJXLWiw==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/merge@9.0.9': - resolution: {integrity: sha512-w9yaU7UMRQvtkTYZHo+c7cS7LO7rqc2H6g3k0aUs8VE9YlFYG1bYdxvEPM5bloaoVqr5TmbqIZqzl1CHeJKilQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/schema@10.0.8': - resolution: {integrity: sha512-jkCSq+DdT6Rf/MN3oVz250AMFWZO0E5kh0C2K+kJfS80iBW7/7kLjiSbKz+WD9UBtsJPW2zyzKYC4ylU4jmnLw==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/utils@10.5.6': - resolution: {integrity: sha512-JAC44rhbLzXUHiltceyEpWkxmX4e45Dfg19wRFoA9EbDxQVbOzVNF76eEECdg0J1owFsJwfLqCwz7/6xzrovOw==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-yoga/logger@2.0.0': - resolution: {integrity: sha512-Mg8psdkAp+YTG1OGmvU+xa6xpsAmSir0hhr3yFYPyLNwzUj95DdIwsMpKadDj9xDpYgJcH3Hp/4JMal9DhQimA==} - engines: {node: '>=18.0.0'} - - '@graphql-yoga/subscription@5.0.1': - resolution: {integrity: sha512-1wCB1DfAnaLzS+IdoOzELGGnx1ODEg9nzQXFh4u2j02vAnne6d+v4A7HIH9EqzVdPLoAaMKXCZUUdKs+j3z1fg==} - engines: {node: '>=18.0.0'} - - '@graphql-yoga/typed-event-target@3.0.0': - resolution: {integrity: sha512-w+liuBySifrstuHbFrHoHAEyVnDFVib+073q8AeAJ/qqJfvFvAwUPLLtNohR/WDVRgSasfXtl3dcNuVJWN+rjg==} - engines: {node: '>=18.0.0'} - - '@grpc/grpc-js@1.12.2': - resolution: {integrity: sha512-bgxdZmgTrJZX50OjyVwz3+mNEnCTNkh3cIqGPWVNeW9jX6bn1ZkU80uPd+67/ZpIJIjRQ9qaHCjhavyoWYxumg==} - engines: {node: '>=12.10.0'} - - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} - engines: {node: '>=6'} - hasBin: true - - '@hono/node-server@1.13.3': - resolution: {integrity: sha512-tEo3hcyQ6chvSnJ3tKzfX4z2sd7Q+ZkBwwBdW1Ya8Mz29dukxC2xcWiB/lAMwGJrYMW8QTgknIsLu1AsnMBe7A==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - - '@httptoolkit/websocket-stream@6.0.1': - resolution: {integrity: sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/string-locale-compare@1.1.0': - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - - '@js-sdsl/ordered-map@4.4.2': - resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - - '@kamilkisiela/fast-url-parser@1.1.4': - resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} - - '@konfeature/erpc-config-generator@0.0.13': - resolution: {integrity: sha512-bQO03tzH92H6iR71Gah2WHwuu6dhdaOWtwLLR3K3bc1MoZG+Wj1ewsCtxx0GLt8fiprZn1/+wS9UxslKJqKYTw==} - hasBin: true - peerDependencies: - '@ubiquity-dao/rpc-handler': ^1.3.0 - typescript: ^5.5.4 - viem: ^2.19.7 - - '@logdna/tail-file@2.2.0': - resolution: {integrity: sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==} - engines: {node: '>=10.3.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/agent@2.2.2': - resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/arborist@7.5.4': - resolution: {integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - '@npmcli/fs@3.1.1': - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/git@5.0.8': - resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/installed-package-contents@2.1.0': - resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - '@npmcli/map-workspaces@3.0.6': - resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/metavuln-calculator@7.1.1': - resolution: {integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/name-from-folder@2.0.0': - resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/node-gyp@3.0.0': - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/package-json@5.2.1': - resolution: {integrity: sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/promise-spawn@7.0.2': - resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/query@3.1.0': - resolution: {integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/redact@2.0.1': - resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/run-script@8.1.0': - resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@oclif/core@4.0.33': - resolution: {integrity: sha512-NoTDwJ2L/ywpsSjcN7jAAHf3m70Px4Yim2SJrm16r70XpnfbNOdlj1x0HEJ0t95gfD+p/y5uy+qPT/VXTh/1gw==} - engines: {node: '>=18.0.0'} - - '@opentelemetry/api-logs@0.52.1': - resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} - engines: {node: '>=14'} - - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - - '@opentelemetry/context-async-hooks@1.27.0': - resolution: {integrity: sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/core@1.27.0': - resolution: {integrity: sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/exporter-zipkin@1.27.0': - resolution: {integrity: sha512-eGMY3s4QprspFZojqsuQyQpWNFpo+oNVE/aosTbtvAlrJBAlvXcwwsOROOHOd8Y9lkU4i0FpQW482rcXkgwCSw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/instrumentation-grpc@0.52.1': - resolution: {integrity: sha512-EdSDiDSAO+XRXk/ZN128qQpBo1I51+Uay/LUPcPQhSRGf7fBPIEUBeOLQiItguGsug5MGOYjql2w/1wCQF3fdQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation@0.52.1': - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/propagator-b3@1.27.0': - resolution: {integrity: sha512-pTsko3gnMioe3FeWcwTQR3omo5C35tYsKKwjgTCTVCgd3EOWL9BZrMfgLBmszrwXABDfUrlAEFN/0W0FfQGynQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/propagator-jaeger@1.27.0': - resolution: {integrity: sha512-EI1bbK0wn0yIuKlc2Qv2LKBRw6LiUWevrjCF80fn/rlaB+7StAi8Y5s8DBqAYNpY7v1q86+NjU18v7hj2ejU3A==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/resources@1.27.0': - resolution: {integrity: sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/sdk-trace-base@1.27.0': - resolution: {integrity: sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/sdk-trace-node@1.27.0': - resolution: {integrity: sha512-dWZp/dVGdUEfRBjBq2BgNuBlFqHCxyyMc8FsN0NX15X07mxSUO0SZRLyK/fdAVrde8nqFI/FEdMH4rgU9fqJfQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/semantic-conventions@1.25.1': - resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} - engines: {node: '>=14'} - - '@opentelemetry/semantic-conventions@1.27.0': - resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} - engines: {node: '>=14'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@ponder/core@0.7.8': - resolution: {integrity: sha512-pJcWtTwXMvmF1Ag6RtsqZImP5J57KXZjEIRzt/bin8utSAFK1TupqTOH2SaePnJrKeNTh3eE5pCqf/g4OeOctQ==} - engines: {node: '>=18.14'} - hasBin: true - peerDependencies: - hono: '>=4.5' - typescript: '>=5.0.4' - viem: '>=2' - peerDependenciesMeta: - typescript: - optional: true - - '@ponder/utils@0.2.2': - resolution: {integrity: sha512-8+JsJNGIf5FFwZlC02zP6kHtbAs7BUYluSx0GDhK8b2VDRmA4y9AJU7VoBIc0mnwKdBUOVLi9yQ6iDZBR4NLoQ==} - peerDependencies: - typescript: '>=5.0.4' - viem: '>=2' - peerDependenciesMeta: - typescript: - optional: true - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@pulumi/aws@6.59.1': - resolution: {integrity: sha512-JuMgE61wO8n0HgOCsx8XKn2JqwPRbFcxHvfWgfyCmQ2KZeMBhlkiHBfEWG80mUtztGX3jj3DmKUw4hP5vLL82A==} - - '@pulumi/pulumi@3.139.0': - resolution: {integrity: sha512-0LJnkxoObZuMyu1zi5RJYwYoeYTHhH8aCl+vlhr3rAnGVAI3PqdwvwFpnycGFw2YSS2I1lOPiQIT5yGZD3RVZQ==} - engines: {node: '>=18'} - peerDependencies: - ts-node: '>= 7.0.1 < 12' - typescript: '>= 3.8.3 < 6' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - - '@pulumi/query@0.3.0': - resolution: {integrity: sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==} - - '@repeaterjs/repeater@3.0.6': - resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - - '@rollup/rollup-android-arm-eabi@4.27.3': - resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.27.3': - resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.27.3': - resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.27.3': - resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.27.3': - resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.27.3': - resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.27.3': - resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.27.3': - resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.27.3': - resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.27.3': - resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': - resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.27.3': - resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.27.3': - resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.27.3': - resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.27.3': - resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.27.3': - resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.27.3': - resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.27.3': - resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} - cpu: [x64] - os: [win32] - - '@scure/base@1.1.9': - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - - '@scure/bip32@1.5.0': - resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} - - '@scure/bip39@1.4.0': - resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} - - '@sigstore/bundle@2.3.2': - resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/core@1.1.0': - resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/protobuf-specs@0.3.2': - resolution: {integrity: sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/sign@2.3.2': - resolution: {integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/tuf@2.3.4': - resolution: {integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/verify@1.2.1': - resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@sindresorhus/is@7.0.1': - resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==} - engines: {node: '>=18'} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@smithy/abort-controller@3.1.8': - resolution: {integrity: sha512-+3DOBcUn5/rVjlxGvUPKc416SExarAQ+Qe0bqk30YSUjbepwpS7QN0cyKUSifvLJhdMZ0WPzPP5ymut0oonrpQ==} - engines: {node: '>=16.0.0'} - - '@smithy/config-resolver@3.0.12': - resolution: {integrity: sha512-YAJP9UJFZRZ8N+UruTeq78zkdjUHmzsY62J4qKWZ4SXB4QXJ/+680EfXXgkYA2xj77ooMqtUY9m406zGNqwivQ==} - engines: {node: '>=16.0.0'} - - '@smithy/core@2.5.3': - resolution: {integrity: sha512-96uW8maifUSmehaeW7uydWn7wBc98NEeNI3zN8vqakGpyCQgzyJaA64Z4FCOUmAdCJkhppd/7SZ798Fo4Xx37g==} - engines: {node: '>=16.0.0'} - - '@smithy/credential-provider-imds@3.2.7': - resolution: {integrity: sha512-cEfbau+rrWF8ylkmmVAObOmjbTIzKyUC5TkBL58SbLywD0RCBC4JAUKbmtSm2w5KUJNRPGgpGFMvE2FKnuNlWQ==} - engines: {node: '>=16.0.0'} - - '@smithy/fetch-http-handler@3.2.9': - resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} - - '@smithy/fetch-http-handler@4.1.1': - resolution: {integrity: sha512-bH7QW0+JdX0bPBadXt8GwMof/jz0H28I84hU1Uet9ISpzUqXqRQ3fEZJ+ANPOhzSEczYvANNl3uDQDYArSFDtA==} - - '@smithy/hash-node@3.0.10': - resolution: {integrity: sha512-3zWGWCHI+FlJ5WJwx73Mw2llYR8aflVyZN5JhoqLxbdPZi6UyKSdCeXAWJw9ja22m6S6Tzz1KZ+kAaSwvydi0g==} - engines: {node: '>=16.0.0'} - - '@smithy/invalid-dependency@3.0.10': - resolution: {integrity: sha512-Lp2L65vFi+cj0vFMu2obpPW69DU+6O5g3086lmI4XcnRCG8PxvpWC7XyaVwJCxsZFzueHjXnrOH/E0pl0zikfA==} - - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - - '@smithy/is-array-buffer@3.0.0': - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-content-length@3.0.12': - resolution: {integrity: sha512-1mDEXqzM20yywaMDuf5o9ue8OkJ373lSPbaSjyEvkWdqELhFMyNNgKGWL/rCSf4KME8B+HlHKuR8u9kRj8HzEQ==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-endpoint@3.2.3': - resolution: {integrity: sha512-Hdl9296i/EMptaX7agrSzJZDiz5Y8XPUeBbctTmMtnCguGpqfU3jVsTUan0VLaOhsnquqWLL8Bl5HrlbVGT1og==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-retry@3.0.27': - resolution: {integrity: sha512-H3J/PjJpLL7Tt+fxDKiOD25sMc94YetlQhCnYeNmina2LZscAdu0ZEZPas/kwePHABaEtqp7hqa5S4UJgMs1Tg==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-serde@3.0.10': - resolution: {integrity: sha512-MnAuhh+dD14F428ubSJuRnmRsfOpxSzvRhaGVTvd/lrUDE3kxzCCmH8lnVTvoNQnV2BbJ4c15QwZ3UdQBtFNZA==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-stack@3.0.10': - resolution: {integrity: sha512-grCHyoiARDBBGPyw2BeicpjgpsDFWZZxptbVKb3CRd/ZA15F/T6rZjCCuBUjJwdck1nwUuIxYtsS4H9DDpbP5w==} - engines: {node: '>=16.0.0'} - - '@smithy/node-config-provider@3.1.11': - resolution: {integrity: sha512-URq3gT3RpDikh/8MBJUB+QGZzfS7Bm6TQTqoh4CqE8NBuyPkWa5eUXj0XFcFfeZVgg3WMh1u19iaXn8FvvXxZw==} - engines: {node: '>=16.0.0'} - - '@smithy/node-http-handler@3.3.1': - resolution: {integrity: sha512-fr+UAOMGWh6bn4YSEezBCpJn9Ukp9oR4D32sCjCo7U81evE11YePOQ58ogzyfgmjIO79YeOdfXXqr0jyhPQeMg==} - engines: {node: '>=16.0.0'} - - '@smithy/property-provider@3.1.10': - resolution: {integrity: sha512-n1MJZGTorTH2DvyTVj+3wXnd4CzjJxyXeOgnTlgNVFxaaMeT4OteEp4QrzF8p9ee2yg42nvyVK6R/awLCakjeQ==} - engines: {node: '>=16.0.0'} - - '@smithy/protocol-http@4.1.7': - resolution: {integrity: sha512-FP2LepWD0eJeOTm0SjssPcgqAlDFzOmRXqXmGhfIM52G7Lrox/pcpQf6RP4F21k0+O12zaqQt5fCDOeBtqY6Cg==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-builder@3.0.10': - resolution: {integrity: sha512-nT9CQF3EIJtIUepXQuBFb8dxJi3WVZS3XfuDksxSCSn+/CzZowRLdhDn+2acbBv8R6eaJqPupoI/aRFIImNVPQ==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-parser@3.0.10': - resolution: {integrity: sha512-Oa0XDcpo9SmjhiDD9ua2UyM3uU01ZTuIrNdZvzwUTykW1PM8o2yJvMh1Do1rY5sUQg4NDV70dMi0JhDx4GyxuQ==} - engines: {node: '>=16.0.0'} - - '@smithy/service-error-classification@3.0.10': - resolution: {integrity: sha512-zHe642KCqDxXLuhs6xmHVgRwy078RfqxP2wRDpIyiF8EmsWXptMwnMwbVa50lw+WOGNrYm9zbaEg0oDe3PTtvQ==} - engines: {node: '>=16.0.0'} - - '@smithy/shared-ini-file-loader@3.1.11': - resolution: {integrity: sha512-AUdrIZHFtUgmfSN4Gq9nHu3IkHMa1YDcN+s061Nfm+6pQ0mJy85YQDB0tZBCmls0Vuj22pLwDPmL92+Hvfwwlg==} - engines: {node: '>=16.0.0'} - - '@smithy/signature-v4@4.2.3': - resolution: {integrity: sha512-pPSQQ2v2vu9vc8iew7sszLd0O09I5TRc5zhY71KA+Ao0xYazIG+uLeHbTJfIWGO3BGVLiXjUr3EEeCcEQLjpWQ==} - engines: {node: '>=16.0.0'} - - '@smithy/smithy-client@3.4.4': - resolution: {integrity: sha512-dPGoJuSZqvirBq+yROapBcHHvFjChoAQT8YPWJ820aPHHiowBlB3RL1Q4kPT1hx0qKgJuf+HhyzKi5Gbof4fNA==} - engines: {node: '>=16.0.0'} - - '@smithy/types@3.7.1': - resolution: {integrity: sha512-XKLcLXZY7sUQgvvWyeaL/qwNPp6V3dWcUjqrQKjSb+tzYiCy340R/c64LV5j+Tnb2GhmunEX0eou+L+m2hJNYA==} - engines: {node: '>=16.0.0'} - - '@smithy/url-parser@3.0.10': - resolution: {integrity: sha512-j90NUalTSBR2NaZTuruEgavSdh8MLirf58LoGSk4AtQfyIymogIhgnGUU2Mga2bkMkpSoC9gxb74xBXL5afKAQ==} - - '@smithy/util-base64@3.0.0': - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-body-length-browser@3.0.0': - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} - - '@smithy/util-body-length-node@3.0.0': - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-buffer-from@3.0.0': - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-config-provider@3.0.0': - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-defaults-mode-browser@3.0.27': - resolution: {integrity: sha512-GV8NvPy1vAGp7u5iD/xNKUxCorE4nQzlyl057qRac+KwpH5zq8wVq6rE3lPPeuFLyQXofPN6JwxL1N9ojGapiQ==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-node@3.0.27': - resolution: {integrity: sha512-7+4wjWfZqZxZVJvDutO+i1GvL6bgOajEkop4FuR6wudFlqBiqwxw3HoH6M9NgeCd37km8ga8NPp2JacQEtAMPg==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-endpoints@2.1.6': - resolution: {integrity: sha512-mFV1t3ndBh0yZOJgWxO9J/4cHZVn5UG1D8DeCc6/echfNkeEJWu9LD7mgGH5fHrEdR7LDoWw7PQO6QiGpHXhgA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-hex-encoding@3.0.0': - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-middleware@3.0.10': - resolution: {integrity: sha512-eJO+/+RsrG2RpmY68jZdwQtnfsxjmPxzMlQpnHKjFPwrYqvlcT+fHdT+ZVwcjlWSrByOhGr9Ff2GG17efc192A==} - engines: {node: '>=16.0.0'} - - '@smithy/util-retry@3.0.10': - resolution: {integrity: sha512-1l4qatFp4PiU6j7UsbasUHL2VU023NRB/gfaa1M0rDqVrRN4g3mCArLRyH3OuktApA4ye+yjWQHjdziunw2eWA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-stream@3.3.1': - resolution: {integrity: sha512-Ff68R5lJh2zj+AUTvbAU/4yx+6QPRzg7+pI7M1FbtQHcRIp7xvguxVsQBKyB3fwiOwhAKu0lnNyYBaQfSW6TNw==} - engines: {node: '>=16.0.0'} - - '@smithy/util-uri-escape@3.0.0': - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} - - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - - '@smithy/util-utf8@3.0.0': - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} - - '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@2.0.1': - resolution: {integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@types/aws-lambda@8.10.138': - resolution: {integrity: sha512-71EHMl70TPWIAsFuHd85NHq6S6T2OOjiisPTrH7RgcjzpJpPh4RQJv7PvVvIxc6PIp8CLV7F9B+TdjcAES5vcA==} - - '@types/aws-lambda@8.10.145': - resolution: {integrity: sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw==} - - '@types/cacheable-request@6.0.3': - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/google-protobuf@3.15.12': - resolution: {integrity: sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - - '@types/node@22.5.5': - resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} - - '@types/node@22.9.0': - resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} - - '@types/node@22.9.1': - resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/readable-stream@4.0.18': - resolution: {integrity: sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/shimmer@1.2.0': - resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - - '@types/tmp@0.2.6': - resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} - - '@types/ws@8.5.13': - resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - - '@ubiquity-dao/rpc-handler@1.3.0': - resolution: {integrity: sha512-BoN3IENjJWaMHSk3tC2I48e0Bz8NbwmjymLQ9EamN3lMf9djTEdWbmD2baRr9pIZJ6Sh5HzgYdCN+i7I1lZbVw==} - engines: {node: '>=20.10.0'} - - '@whatwg-node/events@0.1.2': - resolution: {integrity: sha512-ApcWxkrs1WmEMS2CaLLFUEem/49erT3sxIVjpzU5f6zmVcnijtDSrhoK2zVobOIikZJdH63jdAXOrvjf6eOUNQ==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/fetch@0.10.1': - resolution: {integrity: sha512-gmPOLrsjSZWEZlr9Oe5+wWFBq3CG6fN13rGlM91Jsj/vZ95G9CCvrORGBAxMXy0AJGiC83aYiHXn3JzTzXQmbA==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/node-fetch@0.7.3': - resolution: {integrity: sha512-mqHYN1JZG0bSnOi6bxYq8zSBLfp02597yb9YNwZ0Zqn3TdC7/YjRWKnnGm49rzIWGaNaHiUjv8KThuhpK7NDLA==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/server@0.9.56': - resolution: {integrity: sha512-qHvoug7dTStxDvJKhivO4V/+3Ac+RrMYPwSJ1Sqbq3qbDB0s8xRtlRU+jciOvUJrQQDzcQZJ736yLiKayWscsQ==} - engines: {node: '>=18.0.0'} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - abitype@0.10.3: - resolution: {integrity: sha512-tRN+7XIa7J9xugdbRzFv/95ka5ivR/sRe01eiWvM0HWWjHuigSZEACgKa0sj4wGuekTDtghCx+5Izk/cOi78pQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.6: - resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - ansis@3.3.2: - resolution: {integrity: sha512-cFthbBlt+Oi0i9Pv/j6YdVWJh54CtjGACaMPCIrEV4Ha7HWsIjXDwseYV79TIL0B4+KfSwD5S70PeQDkPUd1rA==} - engines: {node: '>=15'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - apisauce@2.1.6: - resolution: {integrity: sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==} - - app-module-path@2.2.0: - resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - atomically@2.0.3: - resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} - - auto-bind@5.0.1: - resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - aws-crt@1.22.0: - resolution: {integrity: sha512-gLyn73oBmJt/bpLHaQLbl8GNYNbKs+AcdIok8jeMFa9CwL3mcaLCrFzZu4KYacbcHRONJeGa2qYXwDT3EyQ1jw==} - - aws4fetch@1.0.20: - resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - better-sqlite3@11.5.0: - resolution: {integrity: sha512-e/6eggfOutzoK0JWiU36jsisdWoHOfN9iWiW/SieKvb7SAa6aGNmBM/UKyp+/wWSXpLlWNN8tCPwoDNPhzUvuQ==} - - bin-links@4.0.4: - resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bintrees@1.0.2: - resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bl@6.0.16: - resolution: {integrity: sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg==} - - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - boolean@3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - builtin-modules@3.0.0: - resolution: {integrity: sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==} - engines: {node: '>=6'} - - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacache@18.0.4: - resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - - cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - clean-stack@3.0.1: - resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} - engines: {node: '>=10'} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table3@0.6.0: - resolution: {integrity: sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==} - engines: {node: 10.* || >= 12.*} - - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - cmd-shim@6.0.3: - resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commist@3.2.0: - resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==} - - common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - - conf@12.0.0: - resolution: {integrity: sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA==} - engines: {node: '>=18'} - - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@7.0.1: - resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} - engines: {node: '>=10'} - - cross-inspect@1.0.1: - resolution: {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} - engines: {node: '>=16.0.0'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - dataloader@2.2.2: - resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} - - debounce-fn@5.1.2: - resolution: {integrity: sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A==} - engines: {node: '>=12'} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - detect-package-manager@3.0.2: - resolution: {integrity: sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==} - engines: {node: '>=12'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dot-prop@8.0.2: - resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} - engines: {node: '>=16'} - - dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} - engines: {node: '>=12'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - drizzle-orm@0.34.1: - resolution: {integrity: sha512-t+zCwyWWt8xTqtYV4doE/xYmT7hpv1L8pQ66zddEz+3VWyedBBtctjMAp22mAJPfyWurRQXUJ1nrTtqLq+DqNA==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@electric-sql/pglite': '>=0.1.1' - '@libsql/client': '>=0.10.0' - '@neondatabase/serverless': '>=0.1' - '@op-engineering/op-sqlite': '>=2' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@prisma/client': '*' - '@tidbcloud/serverless': '*' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/react': '>=18' - '@types/sql.js': '*' - '@vercel/postgres': '>=0.8.0' - '@xata.io/client': '*' - better-sqlite3: '>=7' - bun-types: '*' - expo-sqlite: '>=13.2.0' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - prisma: '*' - react: '>=18' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@prisma/client': - optional: true - '@tidbcloud/serverless': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/react': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - '@xata.io/client': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - expo-sqlite: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - prisma: - optional: true - react: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - - dset@3.1.4: - resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} - engines: {node: '>=4'} - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - ejs@3.1.8: - resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - env-paths@3.0.0: - resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-printf@1.6.9: - resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==} - engines: {node: '>=10.0'} - - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-unique-numbers@8.0.13: - resolution: {integrity: sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==} - engines: {node: '>=16.1.0'} - - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-jetpack@4.3.1: - resolution: {integrity: sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - git-diff@2.0.6: - resolution: {integrity: sha512-/Iu4prUrydE3Pb3lCBMbcSNIf81tgGt0W1ZwknnyF62t3tHmtiJTRj0f+1ZIhp3+Rh0ktz1pJVoa7ZXUCskivA==} - engines: {node: '>= 4.8.0'} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - gluegun@5.2.0: - resolution: {integrity: sha512-jSUM5xUy2ztYFQANne17OUm/oAd7qSX7EBksS9bQDt9UvLPqcEkeWUebmaposb8Tx7eTTD8uJVWGRe6PYSsYkg==} - hasBin: true - - google-protobuf@3.21.4: - resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} - - got@11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphql-yoga@5.10.3: - resolution: {integrity: sha512-TE6tFvWvD6LHy1v0hleEnftla5Oo2plgat/r8yHcUSS0Qqb+5fb/eHlthNAi+81gFziHc1mUE5w8PqMjBL5/eA==} - engines: {node: '>=18.0.0'} - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - - graphql@16.9.0: - resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - hono@4.6.10: - resolution: {integrity: sha512-IXXNfRAZEahFnWBhUUlqKEGF9upeE6hZoRZszvNkyAz/CYp+iVbxm3viMvStlagRJohjlBRGOQ7f4jfcV0XMGg==} - engines: {node: '>=16.9.0'} - - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - http-terminator@3.2.0: - resolution: {integrity: sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==} - engines: {node: '>=14'} - - http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore-walk@6.0.5: - resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-in-the-middle@1.11.2: - resolution: {integrity: sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - - ini@4.1.3: - resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - ink@4.4.1: - resolution: {integrity: sha512-rXckvqPBB0Krifk5rn/5LvQGmyXwCUpBfmTwbkQNBY9JY8RSl3b8OftBNEYxg4+SWUhEKcPifgope28uL9inlA==} - engines: {node: '>=14.16'} - peerDependencies: - '@types/react': '>=18.0.0' - react: '>=18.0.0' - react-devtools-core: ^4.19.1 - peerDependenciesMeta: - '@types/react': - optional: true - react-devtools-core: - optional: true - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-lower-case@2.0.2: - resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-upper-case@2.0.2: - resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - isows@1.0.6: - resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} - peerDependencies: - ws: '*' - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jiti@2.0.0-beta.3: - resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} - hasBin: true - - jose@4.15.9: - resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} - - jose@5.2.3: - resolution: {integrity: sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==} - - js-sdsl@4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema-typed@8.0.1: - resolution: {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} - - json-stringify-nice@1.1.4: - resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - just-diff-apply@5.5.0: - resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} - - just-diff@6.0.2: - resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kysely-codegen@0.15.0: - resolution: {integrity: sha512-LPta2nQOyoEPDQ3w/Gsplc+2iyZPAsGvtWoS21VzOB0NDQ0B38Xy1gS8WlbGef542Zdw2eLJHxekud9DzVdNRw==} - hasBin: true - peerDependencies: - '@libsql/kysely-libsql': ^0.3.0 - '@tediousjs/connection-string': ^0.5.0 - better-sqlite3: '>=7.6.2' - kysely: ^0.27.0 - kysely-bun-worker: ^0.5.3 - mysql2: ^2.3.3 || ^3.0.0 - pg: ^8.8.0 - tarn: ^3.0.0 - tedious: ^16.6.0 || ^17.0.0 - peerDependenciesMeta: - '@libsql/kysely-libsql': - optional: true - '@tediousjs/connection-string': - optional: true - better-sqlite3: - optional: true - kysely-bun-worker: - optional: true - mysql2: - optional: true - pg: - optional: true - tarn: - optional: true - tedious: - optional: true - - kysely-pglite@0.6.1: - resolution: {integrity: sha512-+q9FS6km6Y9yLLxe4SAMu4cQA3qIOSqdZ9uidVDU7g90Z/ZEjDhEKX/Rk5xug0HoGpCfMLHC2XGLqiVMZXqnRw==} - hasBin: true - peerDependencies: - '@electric-sql/pglite': '*' - kysely: '*' - - kysely@0.26.3: - resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} - engines: {node: '>=14.0.0'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.lowercase@4.3.0: - resolution: {integrity: sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==} - - lodash.lowerfirst@4.3.1: - resolution: {integrity: sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w==} - - lodash.pad@4.5.1: - resolution: {integrity: sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==} - - lodash.padend@4.6.1: - resolution: {integrity: sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==} - - lodash.padstart@4.6.1: - resolution: {integrity: sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==} - - lodash.repeat@4.1.0: - resolution: {integrity: sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.trim@4.5.1: - resolution: {integrity: sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg==} - - lodash.trimend@4.5.1: - resolution: {integrity: sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA==} - - lodash.trimstart@4.5.1: - resolution: {integrity: sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ==} - - lodash.uppercase@4.3.0: - resolution: {integrity: sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - make-fetch-happen@13.0.1: - resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} - engines: {node: ^16.14.0 || >=18.0.0} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-fetch@3.0.5: - resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - module-details-from-path@1.0.3: - resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} - - mqtt-packet@9.0.1: - resolution: {integrity: sha512-koZF1V/X2RZUI6uD9wN5OK1JxxcG1ofAR4H3LjCw1FkeKzruZQ26aAA6v2m1lZyWONZIR5wMMJFrZJDRNzbiQw==} - - mqtt@5.10.2: - resolution: {integrity: sha512-Q8NrMXB6FwQ2DulGONeDb6BtFHxyQHmXWzDrSC724iyofxLleq/wuZmztV3kg1Kda9I7l0oHP+FKesowoFxyUg==} - engines: {node: '>=16.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} - engines: {node: '>=10'} - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-gyp@10.2.0: - resolution: {integrity: sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} - engines: {node: ^16.14.0 || >=18.0.0} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - npm-bundled@3.0.1: - resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-install-checks@6.3.0: - resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-package-arg@11.0.3: - resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-packlist@8.0.2: - resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-pick-manifest@9.1.0: - resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-registry-fetch@17.1.0: - resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - number-allocator@1.0.14: - resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - openid-client@5.6.4: - resolution: {integrity: sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==} - - ora@4.0.2: - resolution: {integrity: sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==} - engines: {node: '>=8'} - - p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-wait-for@3.2.0: - resolution: {integrity: sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==} - engines: {node: '>=8'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - pacote@18.0.6: - resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-conflict-json@3.0.1: - resolution: {integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - patch-console@2.0.0: - resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - - pg-connection-string@2.7.0: - resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - - pg-copy-streams@6.0.6: - resolution: {integrity: sha512-Z+Dd2C2NIDTsjyFKmc6a9QLlpM8tjpERx+43RSx0WmL7j3uNChERi3xSvZUL0hWJ1oRUn4S3fhyt3apdSrTyKQ==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.7.0: - resolution: {integrity: sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.7.0: - resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.13.1: - resolution: {integrity: sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@3.0.1: - resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} - engines: {node: '>=10'} - - pino-abstract-transport@1.2.0: - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} - - pino-std-serializers@6.2.2: - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - - pino@8.21.0: - resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} - hasBin: true - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - - proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-warning@3.0.0: - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - proggy@2.0.0: - resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - prom-client@15.1.3: - resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} - engines: {node: ^16 || ^18 || >=20} - - promise-all-reject-late@1.0.1: - resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} - - promise-call-limit@3.0.2: - resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} - engines: {node: '>=12.0.0'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - radash@12.1.0: - resolution: {integrity: sha512-b0Zcf09AhqKS83btmUeYBS8tFK7XL2e3RvLmZcm0sTdF1/UUlHSsjXdCcWNxe7yfmAlPve5ym0DmKGtTzP6kVQ==} - engines: {node: '>=14.18.0'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-reconciler@0.29.2: - resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: ^18.3.1 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cmd-shim@4.0.0: - resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - reinterval@1.1.0: - resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-in-the-middle@7.4.0: - resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==} - engines: {node: '>=8.6.0'} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - roarr@7.21.1: - resolution: {integrity: sha512-3niqt5bXFY1InKU8HKWqqYTYjtrBaxBMnXELXCXUYgtNYGUtZM5rB46HIC430AyacL95iEniGf7RgqsesykLmQ==} - engines: {node: '>=18.0'} - - rollup@4.27.3: - resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - - semver@7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shelljs.exec@1.1.8: - resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} - engines: {node: '>= 4.0.0'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sigstore@2.3.1: - resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@6.0.0: - resolution: {integrity: sha512-6bn4hRfkTvDfUoEQYkERg0BVF1D0vrX9HEkMl08uDiNWvVvjylLHvZFZWkDo6wjT8tUctbYl1nCOuE66ZTaUtA==} - engines: {node: '>=14.16'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} - engines: {node: '>= 14'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - sonic-boom@3.8.1: - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - - ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - sst-darwin-arm64@3.3.22: - resolution: {integrity: sha512-Ma08E1jeuHu8lRbx+1De8DQWF1Uq6ckyfgb3ccFZ2mFiJr/DMuv56fBmCXNymLmOsFvJcm1ImwKU0lNIJv6m4Q==} - cpu: [arm64] - os: [darwin] - - sst-darwin-x64@3.3.22: - resolution: {integrity: sha512-e9X3rO7ZDS3tjQLzoNfttAlg9sUWlZQhJtGhTCrdcEsVMohMqr41oFnFo+UmEZIaGRTbiOQgNnjb6ogGuaDQhg==} - cpu: [x64] - os: [darwin] - - sst-linux-arm64@3.3.22: - resolution: {integrity: sha512-LyAqEg1BNVGiH96VrY7vLrYaOUjm5lxW7Rg6jni1ZVo+dyT9I2ZKhiUpOzQIwMYqHFooWPn5U0WWQrWjdxR5Iw==} - cpu: [arm64] - os: [linux] - - sst-linux-x64@3.3.22: - resolution: {integrity: sha512-ad3wvd8Vsqopzfz7aWhgqYB16DwpHkHPhzTexBnWvNQhn78+2NydtglDK9B6/Lxl0YsPkHsl7Ct33SXU5Ib0IQ==} - cpu: [x64] - os: [linux] - - sst-linux-x86@3.3.22: - resolution: {integrity: sha512-6cAzTRddB7iifL5Mjj+pmpiID49qyc5CmmWhPHJzfpjaB6zJ3IWkpFBgilh67dGzn1zbEu9K9I87xkXoqGv0fQ==} - cpu: [x86] - os: [linux] - - sst@3.3.22: - resolution: {integrity: sha512-Wl1lf8woQ2vwBNHXm7c6ga+DmNdCMcLxdxbI8NSuibIY1yKvX4NWwZ2VOLsF3SDI8eT7lYazW7Y2Q5VnMAuvew==} - hasBin: true - peerDependencies: - hono: 4.x - valibot: 0.30.x - peerDependenciesMeta: - hono: - optional: true - valibot: - optional: true - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - stubborn-fs@1.2.5: - resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - tdigest@0.1.2: - resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} - - thread-stream@2.7.0: - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - treeverse@3.0.0: - resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - tsconfck@3.1.4: - resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tuf-js@2.2.1: - resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} - engines: {node: ^16.14.0 || >=18.0.0} - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - type-fest@0.12.0: - resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - uint8array-extras@0.3.0: - resolution: {integrity: sha512-erJsJwQ0tKdwuqI0359U8ijkFmfiTcq25JvvzRVc1VP+2son1NJRXhxcAKJmAW3ajM8JSGAfsAXye8g4s+znxA==} - engines: {node: '>=18'} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - value-or-promise@1.0.12: - resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} - engines: {node: '>=12'} - - viem@2.21.40: - resolution: {integrity: sha512-no/mE3l7B0mdUTtvO7z/cTLENttQ/M7+ombqFGXJqsQrxv9wrYsTIGpS3za+FA5a447hY+x9D8Wxny84q1zAaA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - vite-node@1.0.2: - resolution: {integrity: sha512-h7BbMJf46fLvFW/9Ygo3snkIBEHFh6fHpB4lge98H5quYrDhPFeI3S0LREz328uqPWSnii2yeJXktQ+Pmqk5BQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-tsconfig-paths@4.3.1: - resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite@5.0.7: - resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - webauthn-p256@0.0.10: - resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} - - when-exit@2.1.3: - resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - worker-timers-broker@6.1.8: - resolution: {integrity: sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==} - - worker-timers-worker@7.0.71: - resolution: {integrity: sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==} - - worker-timers@7.1.8: - resolution: {integrity: sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - yoga-wasm-web@0.3.3: - resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - -snapshots: - - '@adraffy/ens-normalize@1.11.0': {} - - '@alcalzone/ansi-tokenize@0.1.3': - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-locate-window': 3.693.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - optional: true - - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.664.0 - tslib: 2.8.1 - optional: true - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - optional: true - - '@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/client-sts': 3.665.0(aws-crt@1.22.0) - '@aws-sdk/core': 3.665.0 - '@aws-sdk/credential-provider-node': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/middleware-host-header': 3.664.0 - '@aws-sdk/middleware-logger': 3.664.0 - '@aws-sdk/middleware-recursion-detection': 3.664.0 - '@aws-sdk/middleware-user-agent': 3.664.0 - '@aws-sdk/region-config-resolver': 3.664.0 - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-endpoints': 3.664.0 - '@aws-sdk/util-user-agent-browser': 3.664.0 - '@aws-sdk/util-user-agent-node': 3.664.0(aws-crt@1.22.0) - '@smithy/config-resolver': 3.0.12 - '@smithy/core': 2.5.3 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.10 - '@smithy/invalid-dependency': 3.0.10 - '@smithy/middleware-content-length': 3.0.12 - '@smithy/middleware-endpoint': 3.2.3 - '@smithy/middleware-retry': 3.0.27 - '@smithy/middleware-serde': 3.0.10 - '@smithy/middleware-stack': 3.0.10 - '@smithy/node-config-provider': 3.1.11 - '@smithy/node-http-handler': 3.3.1 - '@smithy/protocol-http': 4.1.7 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.27 - '@smithy/util-defaults-mode-node': 3.0.27 - '@smithy/util-endpoints': 2.1.6 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-retry': 3.0.10 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - optional: true - - '@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.665.0(aws-crt@1.22.0) - '@aws-sdk/core': 3.665.0 - '@aws-sdk/credential-provider-node': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/middleware-host-header': 3.664.0 - '@aws-sdk/middleware-logger': 3.664.0 - '@aws-sdk/middleware-recursion-detection': 3.664.0 - '@aws-sdk/middleware-user-agent': 3.664.0 - '@aws-sdk/region-config-resolver': 3.664.0 - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-endpoints': 3.664.0 - '@aws-sdk/util-user-agent-browser': 3.664.0 - '@aws-sdk/util-user-agent-node': 3.664.0(aws-crt@1.22.0) - '@smithy/config-resolver': 3.0.12 - '@smithy/core': 2.5.3 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.10 - '@smithy/invalid-dependency': 3.0.10 - '@smithy/middleware-content-length': 3.0.12 - '@smithy/middleware-endpoint': 3.2.3 - '@smithy/middleware-retry': 3.0.27 - '@smithy/middleware-serde': 3.0.10 - '@smithy/middleware-stack': 3.0.10 - '@smithy/node-config-provider': 3.1.11 - '@smithy/node-http-handler': 3.3.1 - '@smithy/protocol-http': 4.1.7 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.27 - '@smithy/util-defaults-mode-node': 3.0.27 - '@smithy/util-endpoints': 2.1.6 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-retry': 3.0.10 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - optional: true - - '@aws-sdk/client-sso@3.665.0(aws-crt@1.22.0)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.665.0 - '@aws-sdk/middleware-host-header': 3.664.0 - '@aws-sdk/middleware-logger': 3.664.0 - '@aws-sdk/middleware-recursion-detection': 3.664.0 - '@aws-sdk/middleware-user-agent': 3.664.0 - '@aws-sdk/region-config-resolver': 3.664.0 - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-endpoints': 3.664.0 - '@aws-sdk/util-user-agent-browser': 3.664.0 - '@aws-sdk/util-user-agent-node': 3.664.0(aws-crt@1.22.0) - '@smithy/config-resolver': 3.0.12 - '@smithy/core': 2.5.3 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.10 - '@smithy/invalid-dependency': 3.0.10 - '@smithy/middleware-content-length': 3.0.12 - '@smithy/middleware-endpoint': 3.2.3 - '@smithy/middleware-retry': 3.0.27 - '@smithy/middleware-serde': 3.0.10 - '@smithy/middleware-stack': 3.0.10 - '@smithy/node-config-provider': 3.1.11 - '@smithy/node-http-handler': 3.3.1 - '@smithy/protocol-http': 4.1.7 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.27 - '@smithy/util-defaults-mode-node': 3.0.27 - '@smithy/util-endpoints': 2.1.6 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-retry': 3.0.10 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - optional: true - - '@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/core': 3.665.0 - '@aws-sdk/credential-provider-node': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/middleware-host-header': 3.664.0 - '@aws-sdk/middleware-logger': 3.664.0 - '@aws-sdk/middleware-recursion-detection': 3.664.0 - '@aws-sdk/middleware-user-agent': 3.664.0 - '@aws-sdk/region-config-resolver': 3.664.0 - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-endpoints': 3.664.0 - '@aws-sdk/util-user-agent-browser': 3.664.0 - '@aws-sdk/util-user-agent-node': 3.664.0(aws-crt@1.22.0) - '@smithy/config-resolver': 3.0.12 - '@smithy/core': 2.5.3 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.10 - '@smithy/invalid-dependency': 3.0.10 - '@smithy/middleware-content-length': 3.0.12 - '@smithy/middleware-endpoint': 3.2.3 - '@smithy/middleware-retry': 3.0.27 - '@smithy/middleware-serde': 3.0.10 - '@smithy/middleware-stack': 3.0.10 - '@smithy/node-config-provider': 3.1.11 - '@smithy/node-http-handler': 3.3.1 - '@smithy/protocol-http': 4.1.7 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.27 - '@smithy/util-defaults-mode-node': 3.0.27 - '@smithy/util-endpoints': 2.1.6 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-retry': 3.0.10 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - optional: true - - '@aws-sdk/core@3.665.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/core': 2.5.3 - '@smithy/node-config-provider': 3.1.11 - '@smithy/property-provider': 3.1.10 - '@smithy/protocol-http': 4.1.7 - '@smithy/signature-v4': 4.2.3 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/util-middleware': 3.0.10 - fast-xml-parser: 4.4.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/credential-provider-env@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/property-provider': 3.1.10 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/credential-provider-http@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/node-http-handler': 3.3.1 - '@smithy/property-provider': 3.1.10 - '@smithy/protocol-http': 4.1.7 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/util-stream': 3.3.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/credential-provider-ini@3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0)': - dependencies: - '@aws-sdk/client-sts': 3.665.0(aws-crt@1.22.0) - '@aws-sdk/credential-provider-env': 3.664.0 - '@aws-sdk/credential-provider-http': 3.664.0 - '@aws-sdk/credential-provider-process': 3.664.0 - '@aws-sdk/credential-provider-sso': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/credential-provider-web-identity': 3.664.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0)) - '@aws-sdk/types': 3.664.0 - '@smithy/credential-provider-imds': 3.2.7 - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - optional: true - - '@aws-sdk/credential-provider-node@3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.664.0 - '@aws-sdk/credential-provider-http': 3.664.0 - '@aws-sdk/credential-provider-ini': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/credential-provider-process': 3.664.0 - '@aws-sdk/credential-provider-sso': 3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/credential-provider-web-identity': 3.664.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0)) - '@aws-sdk/types': 3.664.0 - '@smithy/credential-provider-imds': 3.2.7 - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - optional: true - - '@aws-sdk/credential-provider-process@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/credential-provider-sso@3.665.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))(aws-crt@1.22.0)': - dependencies: - '@aws-sdk/client-sso': 3.665.0(aws-crt@1.22.0) - '@aws-sdk/token-providers': 3.664.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0)) - '@aws-sdk/types': 3.664.0 - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - optional: true - - '@aws-sdk/credential-provider-web-identity@3.664.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))': - dependencies: - '@aws-sdk/client-sts': 3.665.0(aws-crt@1.22.0) - '@aws-sdk/types': 3.664.0 - '@smithy/property-provider': 3.1.10 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/middleware-host-header@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/middleware-logger@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/middleware-recursion-detection@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/middleware-user-agent@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@aws-sdk/util-endpoints': 3.664.0 - '@smithy/core': 2.5.3 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/region-config-resolver@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/node-config-provider': 3.1.11 - '@smithy/types': 3.7.1 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.10 - tslib: 2.8.1 - optional: true - - '@aws-sdk/token-providers@3.664.0(@aws-sdk/client-sso-oidc@3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0))': - dependencies: - '@aws-sdk/client-sso-oidc': 3.665.0(@aws-sdk/client-sts@3.665.0(aws-crt@1.22.0))(aws-crt@1.22.0) - '@aws-sdk/types': 3.664.0 - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/types@3.664.0': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@aws-sdk/util-endpoints@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/types': 3.7.1 - '@smithy/util-endpoints': 2.1.6 - tslib: 2.8.1 - optional: true - - '@aws-sdk/util-locate-window@3.693.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@aws-sdk/util-user-agent-browser@3.664.0': - dependencies: - '@aws-sdk/types': 3.664.0 - '@smithy/types': 3.7.1 - bowser: 2.11.0 - tslib: 2.8.1 - optional: true - - '@aws-sdk/util-user-agent-node@3.664.0(aws-crt@1.22.0)': - dependencies: - '@aws-sdk/middleware-user-agent': 3.664.0 - '@aws-sdk/types': 3.664.0 - '@smithy/node-config-provider': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optionalDependencies: - aws-crt: 1.22.0 - optional: true - - '@aws-sdk/util-utf8-browser@3.259.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - optional: true - - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true - - '@commander-js/extra-typings@12.1.0(commander@12.1.0)': - dependencies: - commander: 12.1.0 - - '@electric-sql/pglite@0.2.13': {} - - '@envelop/core@5.0.2': - dependencies: - '@envelop/types': 5.0.0 - tslib: 2.8.1 - - '@envelop/types@5.0.0': - dependencies: - tslib: 2.8.1 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/aix-ppc64@0.24.0': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.24.0': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-arm@0.24.0': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/android-x64@0.24.0': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.24.0': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.24.0': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.24.0': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.24.0': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.24.0': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-arm@0.24.0': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.24.0': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.24.0': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.24.0': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.24.0': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.24.0': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.24.0': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/linux-x64@0.24.0': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.24.0': - optional: true - - '@esbuild/openbsd-arm64@0.24.0': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.24.0': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.24.0': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.24.0': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.24.0': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@esbuild/win32-x64@0.24.0': - optional: true - - '@escape.tech/graphql-armor-max-aliases@2.6.0': - dependencies: - graphql: 16.9.0 - optionalDependencies: - '@envelop/core': 5.0.2 - '@escape.tech/graphql-armor-types': 0.7.0 - - '@escape.tech/graphql-armor-max-depth@2.4.0': - dependencies: - graphql: 16.9.0 - optionalDependencies: - '@envelop/core': 5.0.2 - '@escape.tech/graphql-armor-types': 0.7.0 - - '@escape.tech/graphql-armor-max-tokens@2.5.0': - dependencies: - graphql: 16.9.0 - optionalDependencies: - '@envelop/core': 5.0.2 - '@escape.tech/graphql-armor-types': 0.7.0 - - '@escape.tech/graphql-armor-types@0.7.0': - dependencies: - graphql: 16.9.0 - optional: true - - '@ethersproject/abstract-provider@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - '@ethersproject/abstract-signer@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/address@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/hash@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/keccak256@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/networks@5.7.1': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/properties@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/providers@5.7.2': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/random@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@ethersproject/signing-key@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - - '@ethersproject/strings@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/transactions@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - - '@ethersproject/web@5.7.1': - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@graphql-tools/executor@1.3.3(graphql@16.9.0)': - dependencies: - '@graphql-tools/utils': 10.5.6(graphql@16.9.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) - '@repeaterjs/repeater': 3.0.6 - graphql: 16.9.0 - tslib: 2.8.1 - value-or-promise: 1.0.12 - - '@graphql-tools/merge@9.0.9(graphql@16.9.0)': - dependencies: - '@graphql-tools/utils': 10.5.6(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.8.1 - - '@graphql-tools/schema@10.0.8(graphql@16.9.0)': - dependencies: - '@graphql-tools/merge': 9.0.9(graphql@16.9.0) - '@graphql-tools/utils': 10.5.6(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.8.1 - value-or-promise: 1.0.12 - - '@graphql-tools/utils@10.5.6(graphql@16.9.0)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) - cross-inspect: 1.0.1 - dset: 3.1.4 - graphql: 16.9.0 - tslib: 2.8.1 - - '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@graphql-yoga/logger@2.0.0': - dependencies: - tslib: 2.8.1 - - '@graphql-yoga/subscription@5.0.1': - dependencies: - '@graphql-yoga/typed-event-target': 3.0.0 - '@repeaterjs/repeater': 3.0.6 - '@whatwg-node/events': 0.1.2 - tslib: 2.8.1 - - '@graphql-yoga/typed-event-target@3.0.0': - dependencies: - '@repeaterjs/repeater': 3.0.6 - tslib: 2.8.1 - - '@grpc/grpc-js@1.12.2': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.4.0 - yargs: 17.7.2 - - '@hono/node-server@1.13.3(hono@4.6.10)': - dependencies: - hono: 4.6.10 - - '@httptoolkit/websocket-stream@6.0.1': - dependencies: - '@types/ws': 8.5.13 - duplexify: 3.7.1 - inherits: 2.0.4 - isomorphic-ws: 4.0.1(ws@8.18.0) - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - ws: 8.18.0 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@isaacs/string-locale-compare@1.1.0': {} - - '@js-sdsl/ordered-map@4.4.2': {} - - '@kamilkisiela/fast-url-parser@1.1.4': {} - - '@konfeature/erpc-config-generator@0.0.13(@ubiquity-dao/rpc-handler@1.3.0)(esbuild@0.24.0)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))': - dependencies: - '@ubiquity-dao/rpc-handler': 1.3.0 - bundle-require: 5.0.0(esbuild@0.24.0) - gluegun: 5.2.0 - typescript: 5.6.3 - viem: 2.21.40(typescript@5.6.3)(zod@3.23.8) - yaml: 2.6.0 - transitivePeerDependencies: - - debug - - esbuild - - '@logdna/tail-file@2.2.0': {} - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@npmcli/agent@2.2.2': - dependencies: - agent-base: 7.1.1 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - - '@npmcli/arborist@7.5.4': - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/fs': 3.1.1 - '@npmcli/installed-package-contents': 2.1.0 - '@npmcli/map-workspaces': 3.0.6 - '@npmcli/metavuln-calculator': 7.1.1 - '@npmcli/name-from-folder': 2.0.0 - '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.2.1 - '@npmcli/query': 3.1.0 - '@npmcli/redact': 2.0.1 - '@npmcli/run-script': 8.1.0 - bin-links: 4.0.4 - cacache: 18.0.4 - common-ancestor-path: 1.0.1 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - json-stringify-nice: 1.1.4 - lru-cache: 10.4.3 - minimatch: 9.0.5 - nopt: 7.2.1 - npm-install-checks: 6.3.0 - npm-package-arg: 11.0.3 - npm-pick-manifest: 9.1.0 - npm-registry-fetch: 17.1.0 - pacote: 18.0.6 - parse-conflict-json: 3.0.1 - proc-log: 4.2.0 - proggy: 2.0.0 - promise-all-reject-late: 1.0.1 - promise-call-limit: 3.0.2 - read-package-json-fast: 3.0.2 - semver: 7.6.3 - ssri: 10.0.6 - treeverse: 3.0.0 - walk-up-path: 3.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/fs@3.1.1': - dependencies: - semver: 7.6.3 - - '@npmcli/git@5.0.8': - dependencies: - '@npmcli/promise-spawn': 7.0.2 - ini: 4.1.3 - lru-cache: 10.4.3 - npm-pick-manifest: 9.1.0 - proc-log: 4.2.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.3 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - '@npmcli/installed-package-contents@2.1.0': - dependencies: - npm-bundled: 3.0.1 - npm-normalize-package-bin: 3.0.1 - - '@npmcli/map-workspaces@3.0.6': - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 10.4.5 - minimatch: 9.0.5 - read-package-json-fast: 3.0.2 - - '@npmcli/metavuln-calculator@7.1.1': - dependencies: - cacache: 18.0.4 - json-parse-even-better-errors: 3.0.2 - pacote: 18.0.6 - proc-log: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/name-from-folder@2.0.0': {} - - '@npmcli/node-gyp@3.0.0': {} - - '@npmcli/package-json@5.2.1': - dependencies: - '@npmcli/git': 5.0.8 - glob: 10.4.5 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - normalize-package-data: 6.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - bluebird - - '@npmcli/promise-spawn@7.0.2': - dependencies: - which: 4.0.0 - - '@npmcli/query@3.1.0': - dependencies: - postcss-selector-parser: 6.1.2 - - '@npmcli/redact@2.0.1': {} - - '@npmcli/run-script@8.1.0': - dependencies: - '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.2.1 - '@npmcli/promise-spawn': 7.0.2 - node-gyp: 10.2.0 - proc-log: 4.2.0 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@oclif/core@4.0.33': - dependencies: - ansi-escapes: 4.3.2 - ansis: 3.3.2 - clean-stack: 3.0.1 - cli-spinners: 2.9.2 - debug: 4.3.7(supports-color@8.1.1) - ejs: 3.1.10 - get-package-type: 0.1.0 - globby: 11.1.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - lilconfig: 3.1.2 - minimatch: 9.0.5 - semver: 7.6.3 - string-width: 4.2.3 - supports-color: 8.1.1 - widest-line: 3.1.0 - wordwrap: 1.0.0 - wrap-ansi: 7.0.0 - - '@opentelemetry/api-logs@0.52.1': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api@1.9.0': {} - - '@opentelemetry/context-async-hooks@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.27.0 - - '@opentelemetry/exporter-zipkin@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 - - '@opentelemetry/instrumentation-grpc@0.52.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.1 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0 - semver: 7.6.3 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/propagator-b3@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/propagator-jaeger@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/resources@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 - - '@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 - - '@opentelemetry/sdk-trace-node@1.27.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) - semver: 7.6.3 - - '@opentelemetry/semantic-conventions@1.25.1': {} - - '@opentelemetry/semantic-conventions@1.27.0': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@ponder/core@0.7.8(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@opentelemetry/api@1.9.0)(@types/node@22.5.5)(better-sqlite3@11.5.0)(hono@4.6.10)(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))(zod@3.23.8)': - dependencies: - '@babel/code-frame': 7.26.2 - '@commander-js/extra-typings': 12.1.0(commander@12.1.0) - '@electric-sql/pglite': 0.2.13 - '@escape.tech/graphql-armor-max-aliases': 2.6.0 - '@escape.tech/graphql-armor-max-depth': 2.4.0 - '@escape.tech/graphql-armor-max-tokens': 2.5.0 - '@hono/node-server': 1.13.3(hono@4.6.10) - '@ponder/utils': 0.2.2(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8)) - abitype: 0.10.3(typescript@5.6.3)(zod@3.23.8) - commander: 12.1.0 - conf: 12.0.0 - dataloader: 2.2.2 - detect-package-manager: 3.0.2 - dotenv: 16.4.5 - drizzle-orm: 0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1) - glob: 10.4.5 - graphql: 16.9.0 - graphql-yoga: 5.10.3(graphql@16.9.0) - hono: 4.6.10 - http-terminator: 3.2.0 - ink: 4.4.1(react@18.3.1) - kysely: 0.26.3 - kysely-pglite: 0.6.1(@electric-sql/pglite@0.2.13)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1) - pg: 8.13.1 - pg-connection-string: 2.7.0 - pg-copy-streams: 6.0.6 - picocolors: 1.1.1 - pino: 8.21.0 - prom-client: 15.1.3 - react: 18.3.1 - stacktrace-parser: 0.1.10 - viem: 2.21.40(typescript@5.6.3)(zod@3.23.8) - vite: 5.0.7(@types/node@22.5.5) - vite-node: 1.0.2(@types/node@22.5.5) - vite-tsconfig-paths: 4.3.1(typescript@5.6.3)(vite@5.0.7(@types/node@22.5.5)) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-rds-data' - - '@cloudflare/workers-types' - - '@libsql/client' - - '@libsql/kysely-libsql' - - '@neondatabase/serverless' - - '@op-engineering/op-sqlite' - - '@opentelemetry/api' - - '@planetscale/database' - - '@prisma/client' - - '@tediousjs/connection-string' - - '@tidbcloud/serverless' - - '@types/better-sqlite3' - - '@types/node' - - '@types/pg' - - '@types/react' - - '@types/sql.js' - - '@vercel/postgres' - - '@xata.io/client' - - better-sqlite3 - - bufferutil - - bun-types - - expo-sqlite - - knex - - kysely-bun-worker - - less - - lightningcss - - mysql2 - - pg-native - - postgres - - prisma - - react-devtools-core - - sass - - sql.js - - sqlite3 - - stylus - - sugarss - - supports-color - - tarn - - tedious - - terser - - utf-8-validate - - zod - - '@ponder/utils@0.2.2(typescript@5.6.3)(viem@2.21.40(typescript@5.6.3)(zod@3.23.8))': - dependencies: - viem: 2.21.40(typescript@5.6.3)(zod@3.23.8) - optionalDependencies: - typescript: 5.6.3 - - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - - '@pulumi/aws@6.59.1(typescript@5.6.3)': - dependencies: - '@pulumi/pulumi': 3.139.0(typescript@5.6.3) - builtin-modules: 3.0.0 - mime: 2.6.0 - resolve: 1.22.8 - transitivePeerDependencies: - - bluebird - - supports-color - - ts-node - - typescript - - '@pulumi/pulumi@3.139.0(typescript@5.6.3)': - dependencies: - '@grpc/grpc-js': 1.12.2 - '@logdna/tail-file': 2.2.0 - '@npmcli/arborist': 7.5.4 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/exporter-zipkin': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-grpc': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 - '@pulumi/query': 0.3.0 - '@types/google-protobuf': 3.15.12 - '@types/semver': 7.5.8 - '@types/tmp': 0.2.6 - execa: 5.1.1 - fdir: 6.4.2(picomatch@3.0.1) - google-protobuf: 3.21.4 - got: 11.8.6 - ini: 2.0.0 - js-yaml: 3.14.1 - minimist: 1.2.8 - normalize-package-data: 6.0.2 - picomatch: 3.0.1 - pkg-dir: 7.0.0 - require-from-string: 2.0.2 - semver: 7.6.3 - source-map-support: 0.5.21 - tmp: 0.2.3 - upath: 1.2.0 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - bluebird - - supports-color - - '@pulumi/query@0.3.0': {} - - '@repeaterjs/repeater@3.0.6': {} - - '@rollup/rollup-android-arm-eabi@4.27.3': - optional: true - - '@rollup/rollup-android-arm64@4.27.3': - optional: true - - '@rollup/rollup-darwin-arm64@4.27.3': - optional: true - - '@rollup/rollup-darwin-x64@4.27.3': - optional: true - - '@rollup/rollup-freebsd-arm64@4.27.3': - optional: true - - '@rollup/rollup-freebsd-x64@4.27.3': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.27.3': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.27.3': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.27.3': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.27.3': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.27.3': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.27.3': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.27.3': - optional: true - - '@rollup/rollup-linux-x64-musl@4.27.3': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.27.3': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.27.3': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.27.3': - optional: true - - '@scure/base@1.1.9': {} - - '@scure/bip32@1.5.0': - dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.4.0': - dependencies: - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 - - '@sigstore/bundle@2.3.2': - dependencies: - '@sigstore/protobuf-specs': 0.3.2 - - '@sigstore/core@1.1.0': {} - - '@sigstore/protobuf-specs@0.3.2': {} - - '@sigstore/sign@2.3.2': - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 - make-fetch-happen: 13.0.1 - proc-log: 4.2.0 - promise-retry: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@2.3.4': - dependencies: - '@sigstore/protobuf-specs': 0.3.2 - tuf-js: 2.2.1 - transitivePeerDependencies: - - supports-color - - '@sigstore/verify@1.2.1': - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 - - '@sindresorhus/is@4.6.0': {} - - '@sindresorhus/is@7.0.1': {} - - '@sindresorhus/merge-streams@2.3.0': {} - - '@smithy/abort-controller@3.1.8': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/config-resolver@3.0.12': - dependencies: - '@smithy/node-config-provider': 3.1.11 - '@smithy/types': 3.7.1 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.10 - tslib: 2.8.1 - optional: true - - '@smithy/core@2.5.3': - dependencies: - '@smithy/middleware-serde': 3.0.10 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-stream': 3.3.1 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/credential-provider-imds@3.2.7': - dependencies: - '@smithy/node-config-provider': 3.1.11 - '@smithy/property-provider': 3.1.10 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - tslib: 2.8.1 - optional: true - - '@smithy/fetch-http-handler@3.2.9': - dependencies: - '@smithy/protocol-http': 4.1.7 - '@smithy/querystring-builder': 3.0.10 - '@smithy/types': 3.7.1 - '@smithy/util-base64': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/fetch-http-handler@4.1.1': - dependencies: - '@smithy/protocol-http': 4.1.7 - '@smithy/querystring-builder': 3.0.10 - '@smithy/types': 3.7.1 - '@smithy/util-base64': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/hash-node@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/invalid-dependency@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/is-array-buffer@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/middleware-content-length@3.0.12': - dependencies: - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/middleware-endpoint@3.2.3': - dependencies: - '@smithy/core': 2.5.3 - '@smithy/middleware-serde': 3.0.10 - '@smithy/node-config-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - '@smithy/url-parser': 3.0.10 - '@smithy/util-middleware': 3.0.10 - tslib: 2.8.1 - optional: true - - '@smithy/middleware-retry@3.0.27': - dependencies: - '@smithy/node-config-provider': 3.1.11 - '@smithy/protocol-http': 4.1.7 - '@smithy/service-error-classification': 3.0.10 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-retry': 3.0.10 - tslib: 2.8.1 - uuid: 9.0.1 - optional: true - - '@smithy/middleware-serde@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/middleware-stack@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/node-config-provider@3.1.11': - dependencies: - '@smithy/property-provider': 3.1.10 - '@smithy/shared-ini-file-loader': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/node-http-handler@3.3.1': - dependencies: - '@smithy/abort-controller': 3.1.8 - '@smithy/protocol-http': 4.1.7 - '@smithy/querystring-builder': 3.0.10 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/property-provider@3.1.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/protocol-http@4.1.7': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/querystring-builder@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - '@smithy/util-uri-escape': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/querystring-parser@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/service-error-classification@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - optional: true - - '@smithy/shared-ini-file-loader@3.1.11': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/signature-v4@4.2.3': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.10 - '@smithy/util-uri-escape': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/smithy-client@3.4.4': - dependencies: - '@smithy/core': 2.5.3 - '@smithy/middleware-endpoint': 3.2.3 - '@smithy/middleware-stack': 3.0.10 - '@smithy/protocol-http': 4.1.7 - '@smithy/types': 3.7.1 - '@smithy/util-stream': 3.3.1 - tslib: 2.8.1 - optional: true - - '@smithy/types@3.7.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/url-parser@3.0.10': - dependencies: - '@smithy/querystring-parser': 3.0.10 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/util-base64@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-body-length-browser@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/util-body-length-node@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-buffer-from@3.0.0': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-config-provider@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/util-defaults-mode-browser@3.0.27': - dependencies: - '@smithy/property-provider': 3.1.10 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - bowser: 2.11.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-defaults-mode-node@3.0.27': - dependencies: - '@smithy/config-resolver': 3.0.12 - '@smithy/credential-provider-imds': 3.2.7 - '@smithy/node-config-provider': 3.1.11 - '@smithy/property-provider': 3.1.10 - '@smithy/smithy-client': 3.4.4 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/util-endpoints@2.1.6': - dependencies: - '@smithy/node-config-provider': 3.1.11 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/util-hex-encoding@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/util-middleware@3.0.10': - dependencies: - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/util-retry@3.0.10': - dependencies: - '@smithy/service-error-classification': 3.0.10 - '@smithy/types': 3.7.1 - tslib: 2.8.1 - optional: true - - '@smithy/util-stream@3.3.1': - dependencies: - '@smithy/fetch-http-handler': 4.1.1 - '@smithy/node-http-handler': 3.3.1 - '@smithy/types': 3.7.1 - '@smithy/util-base64': 3.0.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-uri-escape@3.0.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.8.1 - optional: true - - '@smithy/util-utf8@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - tslib: 2.8.1 - optional: true - - '@szmarczak/http-timer@4.0.6': - dependencies: - defer-to-connect: 2.0.1 - - '@tufjs/canonical-json@2.0.0': {} - - '@tufjs/models@2.0.1': - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.5 - - '@types/aws-lambda@8.10.138': {} - - '@types/aws-lambda@8.10.145': {} - - '@types/cacheable-request@6.0.3': - dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 22.9.0 - '@types/responselike': 1.0.3 - - '@types/estree@1.0.6': {} - - '@types/google-protobuf@3.15.12': {} - - '@types/http-cache-semantics@4.0.4': {} - - '@types/keyv@3.1.4': - dependencies: - '@types/node': 22.9.0 - - '@types/node@22.5.5': - dependencies: - undici-types: 6.19.8 - - '@types/node@22.9.0': - dependencies: - undici-types: 6.19.8 - - '@types/node@22.9.1': - dependencies: - undici-types: 6.19.8 - optional: true - - '@types/parse-json@4.0.2': {} - - '@types/readable-stream@4.0.18': - dependencies: - '@types/node': 22.9.1 - safe-buffer: 5.1.2 - optional: true - - '@types/responselike@1.0.3': - dependencies: - '@types/node': 22.9.0 - - '@types/semver@7.5.8': {} - - '@types/shimmer@1.2.0': {} - - '@types/tmp@0.2.6': {} - - '@types/ws@8.5.13': - dependencies: - '@types/node': 22.9.1 - optional: true - - '@ubiquity-dao/rpc-handler@1.3.0': - dependencies: - '@ethersproject/providers': 5.7.2 - axios: 1.7.7 - node-fetch: 3.3.2 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@whatwg-node/events@0.1.2': - dependencies: - tslib: 2.8.1 - - '@whatwg-node/fetch@0.10.1': - dependencies: - '@whatwg-node/node-fetch': 0.7.3 - urlpattern-polyfill: 10.0.0 - - '@whatwg-node/node-fetch@0.7.3': - dependencies: - '@kamilkisiela/fast-url-parser': 1.1.4 - busboy: 1.6.0 - fast-querystring: 1.1.2 - tslib: 2.8.1 - - '@whatwg-node/server@0.9.56': - dependencies: - '@whatwg-node/fetch': 0.10.1 - tslib: 2.8.1 - - abbrev@2.0.0: {} - - abitype@0.10.3(typescript@5.6.3)(zod@3.23.8): - optionalDependencies: - typescript: 5.6.3 - zod: 3.23.8 - - abitype@1.0.6(typescript@5.6.3)(zod@3.23.8): - optionalDependencies: - typescript: 5.6.3 - zod: 3.23.8 - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - acorn-import-attributes@1.9.5(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - - agent-base@7.1.1: - dependencies: - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@6.2.1: {} - - ansi-regex@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - ansis@3.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - apisauce@2.1.6: - dependencies: - axios: 0.21.4 - transitivePeerDependencies: - - debug - - app-module-path@2.2.0: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - array-union@2.1.0: {} - - async@3.2.6: {} - - asynckit@0.4.0: {} - - atomic-sleep@1.0.0: {} - - atomically@2.0.3: - dependencies: - stubborn-fs: 1.2.5 - when-exit: 2.1.3 - - auto-bind@5.0.1: {} - - aws-crt@1.22.0: - dependencies: - '@aws-sdk/util-utf8-browser': 3.259.0 - '@httptoolkit/websocket-stream': 6.0.1 - axios: 1.7.7 - buffer: 6.0.3 - crypto-js: 4.2.0 - mqtt: 5.10.2 - process: 0.11.10 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - optional: true - - aws4fetch@1.0.20: {} - - axios@0.21.4: - dependencies: - follow-redirects: 1.15.9 - transitivePeerDependencies: - - debug - - axios@1.7.7: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - bech32@1.1.4: {} - - better-sqlite3@11.5.0: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.2 - optional: true - - bin-links@4.0.4: - dependencies: - cmd-shim: 6.0.3 - npm-normalize-package-bin: 3.0.1 - read-cmd-shim: 4.0.0 - write-file-atomic: 5.0.1 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - - bintrees@1.0.2: {} - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - bl@6.0.16: - dependencies: - '@types/readable-stream': 4.0.18 - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 4.5.2 - optional: true - - bn.js@4.12.1: {} - - bn.js@5.2.1: {} - - boolean@3.2.0: {} - - bowser@2.11.0: - optional: true - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - buffer-from@1.1.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - optional: true - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - builtin-modules@3.0.0: {} - - bundle-require@5.0.0(esbuild@0.24.0): - dependencies: - esbuild: 0.24.0 - load-tsconfig: 0.2.5 - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - cac@6.7.14: {} - - cacache@18.0.4: - dependencies: - '@npmcli/fs': 3.1.1 - fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.6 - tar: 6.2.1 - unique-filename: 3.0.0 - - cacheable-lookup@5.0.4: {} - - cacheable-request@7.0.4: - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - - callsites@3.1.0: {} - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chownr@1.1.4: - optional: true - - chownr@2.0.0: {} - - ci-info@3.9.0: {} - - cjs-module-lexer@1.4.1: {} - - clean-stack@2.2.0: {} - - clean-stack@3.0.1: - dependencies: - escape-string-regexp: 4.0.0 - - cli-boxes@3.0.0: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cli-table3@0.6.0: - dependencies: - object-assign: 4.1.1 - string-width: 4.2.3 - optionalDependencies: - colors: 1.4.0 - - cli-truncate@3.1.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-response@1.0.3: - dependencies: - mimic-response: 1.0.1 - - clone@1.0.4: {} - - cmd-shim@6.0.3: {} - - code-excerpt@4.0.0: - dependencies: - convert-to-spaces: 2.0.1 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - colors@1.4.0: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@12.1.0: {} - - commist@3.2.0: - optional: true - - common-ancestor-path@1.0.1: {} - - concat-map@0.0.1: {} - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - optional: true - - conf@12.0.0: - dependencies: - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - atomically: 2.0.3 - debounce-fn: 5.1.2 - dot-prop: 8.0.2 - env-paths: 3.0.0 - json-schema-typed: 8.0.1 - semver: 7.6.3 - uint8array-extras: 0.3.0 - - consola@3.2.3: {} - - convert-to-spaces@2.0.1: {} - - core-util-is@1.0.3: - optional: true - - cosmiconfig@7.0.1: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cross-inspect@1.0.1: - dependencies: - tslib: 2.8.1 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-js@4.2.0: - optional: true - - cssesc@3.0.0: {} - - data-uri-to-buffer@4.0.1: {} - - dataloader@2.2.2: {} - - debounce-fn@5.1.2: - dependencies: - mimic-fn: 4.0.0 - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - deep-extend@0.6.0: - optional: true - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - defer-to-connect@2.0.1: {} - - delay@5.0.0: {} - - delayed-stream@1.0.0: {} - - detect-libc@2.0.3: - optional: true - - detect-package-manager@3.0.2: - dependencies: - execa: 5.1.1 - - diff@3.5.0: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dot-prop@8.0.2: - dependencies: - type-fest: 3.13.1 - - dotenv-expand@11.0.7: - dependencies: - dotenv: 16.4.5 - - dotenv@16.4.5: {} - - drizzle-orm@0.34.1(@aws-sdk/client-rds-data@3.665.0(aws-crt@1.22.0))(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1)(react@18.3.1): - optionalDependencies: - '@aws-sdk/client-rds-data': 3.665.0(aws-crt@1.22.0) - '@electric-sql/pglite': 0.2.13 - '@opentelemetry/api': 1.9.0 - better-sqlite3: 11.5.0 - kysely: 0.26.3 - pg: 8.13.1 - react: 18.3.1 - - dset@3.1.4: {} - - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - optional: true - - eastasianwidth@0.2.0: {} - - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - ejs@3.1.8: - dependencies: - jake: 10.9.2 - - elliptic@6.5.4: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - - env-paths@2.2.1: {} - - env-paths@3.0.0: {} - - err-code@2.0.3: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - esbuild@0.24.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 - - escalade@3.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - esprima@4.0.1: {} - - event-target-shim@5.0.1: {} - - events@3.3.0: {} - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - expand-template@2.0.3: - optional: true - - exponential-backoff@3.1.1: {} - - fast-decode-uri-component@1.0.1: {} - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-printf@1.6.9: - dependencies: - boolean: 3.2.0 - - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - - fast-redact@3.5.0: {} - - fast-unique-numbers@8.0.13: - dependencies: - '@babel/runtime': 7.26.0 - tslib: 2.8.1 - optional: true - - fast-uri@3.0.3: {} - - fast-xml-parser@4.4.1: - dependencies: - strnum: 1.0.5 - optional: true - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fdir@6.4.2(picomatch@3.0.1): - optionalDependencies: - picomatch: 3.0.1 - - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - file-uri-to-path@1.0.0: - optional: true - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - - follow-redirects@1.15.9: {} - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - fs-constants@1.0.0: - optional: true - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-jetpack@4.3.1: - dependencies: - minimatch: 3.1.2 - rimraf: 2.7.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.2 - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-package-type@0.1.0: {} - - get-stream@5.2.0: - dependencies: - pump: 3.0.2 - - get-stream@6.0.1: {} - - git-diff@2.0.6: - dependencies: - chalk: 2.4.2 - diff: 3.5.0 - loglevel: 1.9.2 - shelljs: 0.8.5 - shelljs.exec: 1.1.8 - - github-from-package@0.0.0: - optional: true - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - globrex@0.1.2: {} - - gluegun@5.2.0: - dependencies: - apisauce: 2.1.6 - app-module-path: 2.2.0 - cli-table3: 0.6.0 - colors: 1.4.0 - cosmiconfig: 7.0.1 - cross-spawn: 7.0.3 - ejs: 3.1.8 - enquirer: 2.3.6 - execa: 5.1.1 - fs-jetpack: 4.3.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.lowercase: 4.3.0 - lodash.lowerfirst: 4.3.1 - lodash.pad: 4.5.1 - lodash.padend: 4.6.1 - lodash.padstart: 4.6.1 - lodash.repeat: 4.1.0 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.trim: 4.5.1 - lodash.trimend: 4.5.1 - lodash.trimstart: 4.5.1 - lodash.uppercase: 4.3.0 - lodash.upperfirst: 4.3.1 - ora: 4.0.2 - pluralize: 8.0.0 - semver: 7.3.5 - which: 2.0.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - debug - - google-protobuf@3.21.4: {} - - got@11.8.6: - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - - graceful-fs@4.2.11: {} - - graphql-yoga@5.10.3(graphql@16.9.0): - dependencies: - '@envelop/core': 5.0.2 - '@graphql-tools/executor': 1.3.3(graphql@16.9.0) - '@graphql-tools/schema': 10.0.8(graphql@16.9.0) - '@graphql-tools/utils': 10.5.6(graphql@16.9.0) - '@graphql-yoga/logger': 2.0.0 - '@graphql-yoga/subscription': 5.0.1 - '@whatwg-node/fetch': 0.10.1 - '@whatwg-node/server': 0.9.56 - dset: 3.1.4 - graphql: 16.9.0 - lru-cache: 10.4.3 - tslib: 2.8.1 - - graphql@16.9.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - help-me@5.0.0: - optional: true - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - hono@4.6.10: {} - - hosted-git-info@7.0.2: - dependencies: - lru-cache: 10.4.3 - - http-cache-semantics@4.1.1: {} - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - http-terminator@3.2.0: - dependencies: - delay: 5.0.0 - p-wait-for: 3.2.0 - roarr: 7.21.1 - type-fest: 2.19.0 - - http2-wrapper@1.0.3: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - https-proxy-agent@7.0.5: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - human-signals@2.1.0: {} - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ieee754@1.2.1: {} - - ignore-walk@6.0.5: - dependencies: - minimatch: 9.0.5 - - ignore@5.3.2: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-in-the-middle@1.11.2: - dependencies: - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) - cjs-module-lexer: 1.4.1 - module-details-from-path: 1.0.3 - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - indent-string@5.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: - optional: true - - ini@2.0.0: {} - - ini@4.1.3: {} - - ink@4.4.1(react@18.3.1): - dependencies: - '@alcalzone/ansi-tokenize': 0.1.3 - ansi-escapes: 6.2.1 - auto-bind: 5.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - cli-cursor: 4.0.0 - cli-truncate: 3.1.0 - code-excerpt: 4.0.0 - indent-string: 5.0.0 - is-ci: 3.0.1 - is-lower-case: 2.0.2 - is-upper-case: 2.0.2 - lodash: 4.17.21 - patch-console: 2.0.0 - react: 18.3.1 - react-reconciler: 0.29.2(react@18.3.1) - scheduler: 0.23.2 - signal-exit: 3.0.7 - slice-ansi: 6.0.0 - stack-utils: 2.0.6 - string-width: 5.1.2 - type-fest: 0.12.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - ws: 8.18.0 - yoga-wasm-web: 0.3.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - interpret@1.4.0: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - is-arrayish@0.2.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-ci@3.0.1: - dependencies: - ci-info: 3.9.0 - - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - - is-docker@2.2.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@1.0.0: {} - - is-lambda@1.0.1: {} - - is-lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - is-number@7.0.0: {} - - is-stream@2.0.1: {} - - is-upper-case@2.0.2: - dependencies: - tslib: 2.8.1 - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isarray@1.0.0: - optional: true - - isexe@2.0.0: {} - - isexe@3.1.1: {} - - isomorphic-ws@4.0.1(ws@8.18.0): - dependencies: - ws: 8.18.0 - optional: true - - isows@1.0.6(ws@8.18.0): - dependencies: - ws: 8.18.0 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jiti@2.0.0-beta.3: {} - - jose@4.15.9: {} - - jose@5.2.3: {} - - js-sdsl@4.3.0: - optional: true - - js-sha3@0.8.0: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - jsbn@1.1.0: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-parse-even-better-errors@3.0.2: {} - - json-schema-traverse@1.0.0: {} - - json-schema-typed@8.0.1: {} - - json-stringify-nice@1.1.4: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - just-diff-apply@5.5.0: {} - - just-diff@6.0.2: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kysely-codegen@0.15.0(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1): - dependencies: - chalk: 4.1.2 - dotenv: 16.4.5 - dotenv-expand: 11.0.7 - git-diff: 2.0.6 - kysely: 0.26.3 - micromatch: 4.0.8 - minimist: 1.2.8 - optionalDependencies: - better-sqlite3: 11.5.0 - pg: 8.13.1 - - kysely-pglite@0.6.1(@electric-sql/pglite@0.2.13)(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1): - dependencies: - '@electric-sql/pglite': 0.2.13 - '@oclif/core': 4.0.33 - '@repeaterjs/repeater': 3.0.6 - '@sindresorhus/is': 7.0.1 - chokidar: 3.6.0 - consola: 3.2.3 - fs-extra: 11.2.0 - globby: 14.0.2 - jiti: 2.0.0-beta.3 - kysely: 0.26.3 - kysely-codegen: 0.15.0(better-sqlite3@11.5.0)(kysely@0.26.3)(pg@8.13.1) - radash: 12.1.0 - transitivePeerDependencies: - - '@libsql/kysely-libsql' - - '@tediousjs/connection-string' - - better-sqlite3 - - kysely-bun-worker - - mysql2 - - pg - - tarn - - tedious - - kysely@0.26.3: {} - - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - load-tsconfig@0.2.5: {} - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.kebabcase@4.1.1: {} - - lodash.lowercase@4.3.0: {} - - lodash.lowerfirst@4.3.1: {} - - lodash.pad@4.5.1: {} - - lodash.padend@4.6.1: {} - - lodash.padstart@4.6.1: {} - - lodash.repeat@4.1.0: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.trim@4.5.1: {} - - lodash.trimend@4.5.1: {} - - lodash.trimstart@4.5.1: {} - - lodash.uppercase@4.3.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-symbols@3.0.0: - dependencies: - chalk: 2.4.2 - - loglevel@1.9.2: {} - - long@5.2.3: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lowercase-keys@2.0.0: {} - - lru-cache@10.4.3: {} - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - make-fetch-happen@13.0.1: - dependencies: - '@npmcli/agent': 2.2.2 - cacache: 18.0.4 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - proc-log: 4.2.0 - promise-retry: 2.0.1 - ssri: 10.0.6 - transitivePeerDependencies: - - supports-color - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@2.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-response@1.0.1: {} - - mimic-response@3.1.0: {} - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.2 - - minipass-fetch@3.0.5: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mkdirp-classic@0.5.3: - optional: true - - mkdirp@1.0.4: {} - - module-details-from-path@1.0.3: {} - - mqtt-packet@9.0.1: - dependencies: - bl: 6.0.16 - debug: 4.3.7(supports-color@8.1.1) - process-nextick-args: 2.0.1 - transitivePeerDependencies: - - supports-color - optional: true - - mqtt@5.10.2: - dependencies: - '@types/readable-stream': 4.0.18 - '@types/ws': 8.5.13 - commist: 3.2.0 - concat-stream: 2.0.0 - debug: 4.3.7(supports-color@8.1.1) - help-me: 5.0.0 - lru-cache: 10.4.3 - minimist: 1.2.8 - mqtt-packet: 9.0.1 - number-allocator: 1.0.14 - readable-stream: 4.5.2 - reinterval: 1.1.0 - rfdc: 1.4.1 - split2: 4.2.0 - worker-timers: 7.1.8 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - - ms@2.1.3: {} - - nanoid@3.3.7: {} - - napi-build-utils@1.0.2: - optional: true - - negotiator@0.6.4: {} - - node-abi@3.71.0: - dependencies: - semver: 7.6.3 - optional: true - - node-domexception@1.0.0: {} - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - node-gyp@10.2.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - make-fetch-happen: 13.0.1 - nopt: 7.2.1 - proc-log: 4.2.0 - semver: 7.6.3 - tar: 6.2.1 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - - nopt@7.2.1: - dependencies: - abbrev: 2.0.0 - - normalize-package-data@6.0.2: - dependencies: - hosted-git-info: 7.0.2 - semver: 7.6.3 - validate-npm-package-license: 3.0.4 - - normalize-path@3.0.0: {} - - normalize-url@6.1.0: {} - - npm-bundled@3.0.1: - dependencies: - npm-normalize-package-bin: 3.0.1 - - npm-install-checks@6.3.0: - dependencies: - semver: 7.6.3 - - npm-normalize-package-bin@3.0.1: {} - - npm-package-arg@11.0.3: - dependencies: - hosted-git-info: 7.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - validate-npm-package-name: 5.0.1 - - npm-packlist@8.0.2: - dependencies: - ignore-walk: 6.0.5 - - npm-pick-manifest@9.1.0: - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.3 - semver: 7.6.3 - - npm-registry-fetch@17.1.0: - dependencies: - '@npmcli/redact': 2.0.1 - jsonparse: 1.3.1 - make-fetch-happen: 13.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minizlib: 2.1.2 - npm-package-arg: 11.0.3 - proc-log: 4.2.0 - transitivePeerDependencies: - - supports-color - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - number-allocator@1.0.14: - dependencies: - debug: 4.3.7(supports-color@8.1.1) - js-sdsl: 4.3.0 - transitivePeerDependencies: - - supports-color - optional: true - - object-assign@4.1.1: {} - - object-hash@2.2.0: {} - - obuf@1.1.2: {} - - oidc-token-hash@5.0.3: {} - - on-exit-leak-free@2.1.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - openid-client@5.6.4: - dependencies: - jose: 4.15.9 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - - ora@4.0.2: - dependencies: - chalk: 2.4.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 3.0.0 - strip-ansi: 5.2.0 - wcwidth: 1.0.1 - - p-cancelable@2.1.1: {} - - p-finally@1.0.0: {} - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-wait-for@3.2.0: - dependencies: - p-timeout: 3.2.0 - - package-json-from-dist@1.0.1: {} - - pacote@18.0.6: - dependencies: - '@npmcli/git': 5.0.8 - '@npmcli/installed-package-contents': 2.1.0 - '@npmcli/package-json': 5.2.1 - '@npmcli/promise-spawn': 7.0.2 - '@npmcli/run-script': 8.1.0 - cacache: 18.0.4 - fs-minipass: 3.0.3 - minipass: 7.1.2 - npm-package-arg: 11.0.3 - npm-packlist: 8.0.2 - npm-pick-manifest: 9.1.0 - npm-registry-fetch: 17.1.0 - proc-log: 4.2.0 - promise-retry: 2.0.1 - sigstore: 2.3.1 - ssri: 10.0.6 - tar: 6.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-conflict-json@3.0.1: - dependencies: - json-parse-even-better-errors: 3.0.2 - just-diff: 6.0.2 - just-diff-apply: 5.5.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - patch-console@2.0.0: {} - - path-exists@5.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-type@4.0.0: {} - - path-type@5.0.0: {} - - pathe@1.1.2: {} - - pg-cloudflare@1.1.1: - optional: true - - pg-connection-string@2.7.0: {} - - pg-copy-streams@6.0.6: - dependencies: - obuf: 1.1.2 - - pg-int8@1.0.1: {} - - pg-pool@3.7.0(pg@8.13.1): - dependencies: - pg: 8.13.1 - - pg-protocol@1.7.0: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg@8.13.1: - dependencies: - pg-connection-string: 2.7.0 - pg-pool: 3.7.0(pg@8.13.1) - pg-protocol: 1.7.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@3.0.1: {} - - pino-abstract-transport@1.2.0: - dependencies: - readable-stream: 4.5.2 - split2: 4.2.0 - - pino-std-serializers@6.2.2: {} - - pino@8.21.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.2.0 - pino-std-serializers: 6.2.2 - process-warning: 3.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 3.8.1 - thread-stream: 2.7.0 - - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - - pluralize@8.0.0: {} - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postgres-array@2.0.0: {} - - postgres-bytea@1.0.0: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.71.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - optional: true - - proc-log@4.2.0: {} - - process-nextick-args@2.0.1: - optional: true - - process-warning@3.0.0: {} - - process@0.11.10: {} - - proggy@2.0.0: {} - - prom-client@15.1.3: - dependencies: - '@opentelemetry/api': 1.9.0 - tdigest: 0.1.2 - - promise-all-reject-late@1.0.1: {} - - promise-call-limit@3.0.2: {} - - promise-inflight@1.0.1: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - protobufjs@7.4.0: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 22.9.0 - long: 5.2.3 - - proxy-from-env@1.1.0: {} - - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - queue-microtask@1.2.3: {} - - quick-format-unescaped@4.0.4: {} - - quick-lru@5.1.1: {} - - radash@12.1.0: {} - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - optional: true - - react-reconciler@0.29.2(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - read-cmd-shim@4.0.0: {} - - read-package-json-fast@3.0.2: - dependencies: - json-parse-even-better-errors: 3.0.2 - npm-normalize-package-bin: 3.0.1 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - optional: true - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - optional: true - - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - real-require@0.2.0: {} - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - regenerator-runtime@0.14.1: - optional: true - - reinterval@1.1.0: - optional: true - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - require-in-the-middle@7.4.0: - dependencies: - debug: 4.3.7(supports-color@8.1.1) - module-details-from-path: 1.0.3 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - resolve-alpn@1.2.1: {} - - resolve-from@4.0.0: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@2.0.1: - dependencies: - lowercase-keys: 2.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - retry@0.12.0: {} - - reusify@1.0.4: {} - - rfdc@1.4.1: - optional: true - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - roarr@7.21.1: - dependencies: - fast-printf: 1.6.9 - safe-stable-stringify: 2.5.0 - semver-compare: 1.0.0 - - rollup@4.27.3: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.27.3 - '@rollup/rollup-android-arm64': 4.27.3 - '@rollup/rollup-darwin-arm64': 4.27.3 - '@rollup/rollup-darwin-x64': 4.27.3 - '@rollup/rollup-freebsd-arm64': 4.27.3 - '@rollup/rollup-freebsd-x64': 4.27.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 - '@rollup/rollup-linux-arm-musleabihf': 4.27.3 - '@rollup/rollup-linux-arm64-gnu': 4.27.3 - '@rollup/rollup-linux-arm64-musl': 4.27.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 - '@rollup/rollup-linux-riscv64-gnu': 4.27.3 - '@rollup/rollup-linux-s390x-gnu': 4.27.3 - '@rollup/rollup-linux-x64-gnu': 4.27.3 - '@rollup/rollup-linux-x64-musl': 4.27.3 - '@rollup/rollup-win32-arm64-msvc': 4.27.3 - '@rollup/rollup-win32-ia32-msvc': 4.27.3 - '@rollup/rollup-win32-x64-msvc': 4.27.3 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: - optional: true - - safe-buffer@5.2.1: {} - - safe-stable-stringify@2.5.0: {} - - safer-buffer@2.1.2: - optional: true - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - semver-compare@1.0.0: {} - - semver@7.3.5: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.3: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shelljs.exec@1.1.8: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - shimmer@1.2.1: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sigstore@2.3.1: - dependencies: - '@sigstore/bundle': 2.3.2 - '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 - '@sigstore/sign': 2.3.2 - '@sigstore/tuf': 2.3.4 - '@sigstore/verify': 1.2.1 - transitivePeerDependencies: - - supports-color - - simple-concat@1.0.1: - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - slash@3.0.0: {} - - slash@5.1.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@6.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - smart-buffer@4.2.0: {} - - socks-proxy-agent@8.0.4: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7(supports-color@8.1.1) - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - sonic-boom@3.8.1: - dependencies: - atomic-sleep: 1.0.0 - - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 - - spdx-license-ids@3.0.20: {} - - split2@4.2.0: {} - - sprintf-js@1.0.3: {} - - sprintf-js@1.1.3: {} - - ssri@10.0.6: - dependencies: - minipass: 7.1.2 - - sst-darwin-arm64@3.3.22: - optional: true - - sst-darwin-x64@3.3.22: - optional: true - - sst-linux-arm64@3.3.22: - optional: true - - sst-linux-x64@3.3.22: - optional: true - - sst-linux-x86@3.3.22: - optional: true - - sst@3.3.22(hono@4.6.10): - dependencies: - aws4fetch: 1.0.20 - jose: 5.2.3 - openid-client: 5.6.4 - optionalDependencies: - hono: 4.6.10 - sst-darwin-arm64: 3.3.22 - sst-darwin-x64: 3.3.22 - sst-linux-arm64: 3.3.22 - sst-linux-x64: 3.3.22 - sst-linux-x86: 3.3.22 - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - - stream-shift@1.0.3: - optional: true - - streamsearch@1.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - optional: true - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-final-newline@2.0.0: {} - - strip-json-comments@2.0.1: - optional: true - - strnum@1.0.5: - optional: true - - stubborn-fs@1.2.5: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - optional: true - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tdigest@0.1.2: - dependencies: - bintrees: 1.0.2 - - thread-stream@2.7.0: - dependencies: - real-require: 0.2.0 - - tmp@0.2.3: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - treeverse@3.0.0: {} - - tsconfck@3.1.4(typescript@5.6.3): - optionalDependencies: - typescript: 5.6.3 - - tslib@2.8.1: {} - - tuf-js@2.2.1: - dependencies: - '@tufjs/models': 2.0.1 - debug: 4.3.7(supports-color@8.1.1) - make-fetch-happen: 13.0.1 - transitivePeerDependencies: - - supports-color - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - - type-fest@0.12.0: {} - - type-fest@0.21.3: {} - - type-fest@0.7.1: {} - - type-fest@2.19.0: {} - - type-fest@3.13.1: {} - - typedarray@0.0.6: - optional: true - - typescript@5.6.3: {} - - uint8array-extras@0.3.0: {} - - undici-types@6.19.8: {} - - unicorn-magic@0.1.0: {} - - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - - universalify@2.0.1: {} - - upath@1.2.0: {} - - urlpattern-polyfill@10.0.0: {} - - util-deprecate@1.0.2: {} - - uuid@9.0.1: - optional: true - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - validate-npm-package-name@5.0.1: {} - - value-or-promise@1.0.12: {} - - viem@2.21.40(typescript@5.6.3)(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/bip32': 1.5.0 - '@scure/bip39': 1.4.0 - abitype: 1.0.6(typescript@5.6.3)(zod@3.23.8) - isows: 1.0.6(ws@8.18.0) - webauthn-p256: 0.0.10 - ws: 8.18.0 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - vite-node@1.0.2(@types/node@22.5.5): - dependencies: - cac: 6.7.14 - debug: 4.3.7(supports-color@8.1.1) - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.0.7(@types/node@22.5.5) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-tsconfig-paths@4.3.1(typescript@5.6.3)(vite@5.0.7(@types/node@22.5.5)): - dependencies: - debug: 4.3.7(supports-color@8.1.1) - globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.6.3) - optionalDependencies: - vite: 5.0.7(@types/node@22.5.5) - transitivePeerDependencies: - - supports-color - - typescript - - vite@5.0.7(@types/node@22.5.5): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.49 - rollup: 4.27.3 - optionalDependencies: - '@types/node': 22.5.5 - fsevents: 2.3.3 - - walk-up-path@3.0.1: {} - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web-streams-polyfill@3.3.3: {} - - webauthn-p256@0.0.10: - dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - - when-exit@2.1.3: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@4.0.0: - dependencies: - isexe: 3.1.1 - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - widest-line@4.0.1: - dependencies: - string-width: 5.1.2 - - wordwrap@1.0.0: {} - - worker-timers-broker@6.1.8: - dependencies: - '@babel/runtime': 7.26.0 - fast-unique-numbers: 8.0.13 - tslib: 2.8.1 - worker-timers-worker: 7.0.71 - optional: true - - worker-timers-worker@7.0.71: - dependencies: - '@babel/runtime': 7.26.0 - tslib: 2.8.1 - optional: true - - worker-timers@7.1.8: - dependencies: - '@babel/runtime': 7.26.0 - tslib: 2.8.1 - worker-timers-broker: 6.1.8 - worker-timers-worker: 7.0.71 - optional: true - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - - ws@7.4.6: {} - - ws@8.18.0: {} - - xtend@4.0.2: {} - - y18n@5.0.8: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yaml@2.6.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@1.1.1: {} - - yoga-wasm-web@0.3.3: {} - - zod@3.23.8: - optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index 9c9be4b..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -packages: - - "packages/**" diff --git a/sst.config.ts.bk b/sst.config.ts.bk deleted file mode 100644 index 01abab3..0000000 --- a/sst.config.ts.bk +++ /dev/null @@ -1,34 +0,0 @@ -import type { SSTConfig } from "sst"; -import { ClusterStack } from "./iac/Cluster"; -import { ConfigStack } from "./iac/Config"; -import { ErpcStack } from "./iac/Erpc"; -import { IndexerStack } from "./iac/Indexer"; - -export default { - config(_input) { - // Extract the stage from config, or from env data - return { - name: "frak-indexer", - region: "eu-west-1", - ssmPrefix: "/indexer/sst/", - }; - }, - async stacks(app) { - app.setDefaultRemovalPolicy("destroy"); - app.setDefaultFunctionProps({ - // Log param's - logRetention: "three_days", - // Runtime node env - runtime: "nodejs20.x", - // Use arm64 - architecture: "arm_64", - // Disable xray tracing - tracing: "disabled", - }); - - app.stack(ConfigStack) - .stack(ClusterStack) - .stack(ErpcStack) - .stack(IndexerStack); - }, -} satisfies SSTConfig;