From 2f49ea2f71b784722f79b757418e8be45e8c034a Mon Sep 17 00:00:00 2001 From: sevenzing Date: Fri, 22 May 2026 14:01:48 +0300 Subject: [PATCH 1/3] add enssdk and enskit to static example --- docs/ensnode.io/package.json | 3 + .../fetch-omnigraph-example-responses.mts | 9 +- .../scripts/snapshot-omnigraph-version.mts | 11 +- .../atoms/logos/astro/StackBlitzLogo.astro | 16 + .../molecules/OmnigraphAPIExamplePanels.astro | 638 +++++++++++++----- .../organisms/OmnigraphAPIExample.astro | 14 + .../integrate/omnigraph/examples/index.mdx | 4 +- .../src/data/omnigraph-examples/active.ts | 9 +- .../{v1.13.1 => 1.13.1}/examples.json | 0 .../{v1.13.1 => 1.13.1}/responses.json | 0 .../{v1.13.1 => 1.13.1}/schema.graphql | 0 .../{v1.13.1 => 1.13.1}/snapshot.json | 4 +- .../build-integration-snippets.test.ts | 294 ++++++++ .../build-integration-snippets.ts | 224 ++++++ .../typecheck-integration-snippet.ts | 95 +++ pnpm-lock.yaml | 412 ++++++++--- 16 files changed, 1478 insertions(+), 255 deletions(-) create mode 100644 docs/ensnode.io/src/components/atoms/logos/astro/StackBlitzLogo.astro rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.13.1 => 1.13.1}/examples.json (100%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.13.1 => 1.13.1}/responses.json (100%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.13.1 => 1.13.1}/schema.graphql (100%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.13.1 => 1.13.1}/snapshot.json (89%) create mode 100644 docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.test.ts create mode 100644 docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.ts create mode 100644 docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts diff --git a/docs/ensnode.io/package.json b/docs/ensnode.io/package.json index 9b75e9c0e9..f9e03e9a1a 100644 --- a/docs/ensnode.io/package.json +++ b/docs/ensnode.io/package.json @@ -55,9 +55,12 @@ "tailwindcss": "catalog:" }, "devDependencies": { + "@types/node": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", + "enskit": "workspace:*", "tsx": "^4.19.3", + "typescript": "catalog:", "vitest": "catalog:" } } diff --git a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts index 8b4755e16d..2e6dc9260d 100644 --- a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts +++ b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts @@ -2,7 +2,10 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; -import { ACTIVE_OMNIGRAPH_VERSION } from "../src/data/omnigraph-examples/active.ts"; +import { + ACTIVE_OMNIGRAPH_VERSION, + normalizeOmnigraphVersion, +} from "../src/data/omnigraph-examples/active.ts"; import { OMNIGRAPH_EXAMPLES_META } from "../src/data/omnigraph-examples/meta.ts"; import type { SnapshotExample } from "../src/data/omnigraph-examples/types.ts"; import { ENSNODE_URL } from "../src/lib/playground/constants.ts"; @@ -16,7 +19,9 @@ function logError(message: string, id?: string) { } // Target version defaults to the active one; override to fill responses for a staged version. -const version = process.env.OMNIGRAPH_VERSION ?? ACTIVE_OMNIGRAPH_VERSION; +const version = normalizeOmnigraphVersion( + process.env.OMNIGRAPH_VERSION ?? ACTIVE_OMNIGRAPH_VERSION, +); // Used as a directory name; reject anything that could escape the versions/ dir. if (!/^[0-9A-Za-z._-]+$/.test(version) || version.includes("..")) { logError(`Invalid version "${version}": use only letters, digits, '.', '_', '-'.`); diff --git a/docs/ensnode.io/scripts/snapshot-omnigraph-version.mts b/docs/ensnode.io/scripts/snapshot-omnigraph-version.mts index 7a23a5e0f3..701cd00fd6 100644 --- a/docs/ensnode.io/scripts/snapshot-omnigraph-version.mts +++ b/docs/ensnode.io/scripts/snapshot-omnigraph-version.mts @@ -8,6 +8,7 @@ import { buildSchema, parse, validate } from "graphql"; import { getNamespaceSpecificValue } from "@ensnode/ensnode-sdk"; import { GRAPHQL_API_EXAMPLE_QUERIES } from "@ensnode/ensnode-sdk/internal"; +import { normalizeOmnigraphVersion } from "../src/data/omnigraph-examples/active.ts"; import type { SnapshotExample } from "../src/data/omnigraph-examples/types.ts"; import { DOCS_OMNIGRAPH_NAMESPACE, ENSNODE_URL } from "../src/lib/playground/constants.ts"; @@ -16,16 +17,18 @@ import { DOCS_OMNIGRAPH_NAMESPACE, ENSNODE_URL } from "../src/lib/playground/con // — by construction — valid against that release's schema. Responses are filled separately // (`pnpm omnigraph-examples:refresh-responses`) once the version is live in production. // -// Usage: pnpm omnigraph:snapshot e.g. pnpm omnigraph:snapshot v1.14.0 +// Usage: pnpm omnigraph:snapshot e.g. pnpm omnigraph:snapshot 1.14.0 +// Accepts an optional leading `v` (`v1.14.0` → `1.14.0`). -const version = process.argv[2]; -if (!version) { +const rawVersion = process.argv[2]; +if (!rawVersion) { console.error("Usage: pnpm omnigraph:snapshot "); process.exit(1); } +const version = normalizeOmnigraphVersion(rawVersion); // Used as a directory name; reject anything that could escape the versions/ dir. if (!/^[0-9A-Za-z._-]+$/.test(version) || version.includes("..")) { - console.error(`Invalid version "${version}": use only letters, digits, '.', '_', '-'.`); + console.error(`Invalid version "${rawVersion}": use only letters, digits, '.', '_', '-'.`); process.exit(1); } diff --git a/docs/ensnode.io/src/components/atoms/logos/astro/StackBlitzLogo.astro b/docs/ensnode.io/src/components/atoms/logos/astro/StackBlitzLogo.astro new file mode 100644 index 0000000000..648d6c9e49 --- /dev/null +++ b/docs/ensnode.io/src/components/atoms/logos/astro/StackBlitzLogo.astro @@ -0,0 +1,16 @@ +--- +import type { AstroLogoProps } from "./shared-types"; + +const { className, ...props } = Astro.props as AstroLogoProps; +--- + + diff --git a/docs/ensnode.io/src/components/molecules/OmnigraphAPIExamplePanels.astro b/docs/ensnode.io/src/components/molecules/OmnigraphAPIExamplePanels.astro index 666c238187..c5da409706 100644 --- a/docs/ensnode.io/src/components/molecules/OmnigraphAPIExamplePanels.astro +++ b/docs/ensnode.io/src/components/molecules/OmnigraphAPIExamplePanels.astro @@ -1,9 +1,14 @@ --- -import { Code } from "@astrojs/starlight/components"; +import { Code, Icon } from "@astrojs/starlight/components"; import type { ENSNamespaceId } from "@ensnode/ensnode-sdk"; import { buildOmnigraphCurlExample, getHostedEnsNodeInstanceDocUrl } from "@lib/playground/utils"; +import { + SETUP_PACKAGE_MANAGERS, + type SetupPackageManager, +} from "@lib/omnigraph-examples/build-integration-snippets"; import ENSAdminLogoDark from "@components/atoms/logos/astro/ENSAdminLogoDark.astro"; +import StackBlitzLogo from "@components/atoms/logos/astro/StackBlitzLogo.astro"; export interface OmnigraphAPIExamplePanelsProps { /** Unique id prefix for aria / tab wiring (e.g. example id). */ @@ -20,6 +25,10 @@ export interface OmnigraphAPIExamplePanelsProps { hostedInstanceNamespace: ENSNamespaceId; adminUrl: string; hideCurl?: boolean; + enssdkSnippet: string; + enskitSnippet: string; + enssdkSetupSnippets: Record; + enskitSetupSnippets: Record; } const { @@ -33,182 +42,506 @@ const { hostedInstanceNamespace, adminUrl, hideCurl = false, + enssdkSnippet, + enskitSnippet, + enssdkSetupSnippets, + enskitSetupSnippets, } = Astro.props; const hostedInstanceDocUrl = getHostedEnsNodeInstanceDocUrl(hostedInstanceAnchor); const uid = panelId.replace(/[^a-zA-Z0-9_-]/g, "-"); -const tabIds = { - vars: `${uid}-tab-vars`, - resp: `${uid}-tab-resp`, - curl: `${uid}-tab-curl`, -} as const; const curlExample = !hideCurl ? buildOmnigraphCurlExample({ connectionBaseUrl, query, variables: variablesObject }) : ""; -const tabList: { id: string; label: string }[] = [ - { id: tabIds.vars, label: "Variables" }, - ...(responseJson ? [{ id: tabIds.resp, label: "Response" }] : []), - ...(!hideCurl && curlExample ? [{ id: tabIds.curl, label: "Curl" }] : []), + +// Secondary tab list for GraphQL panel +const graphqlSecondaryTabs: { id: string; label: string; copyRaw: string }[] = [ + { id: `${uid}-tab-vars`, label: "Variables", copyRaw: `${uid}-raw-vars` }, + ...(responseJson + ? [{ id: `${uid}-tab-resp`, label: "Response", copyRaw: `${uid}-raw-resp` }] + : []), + ...(!hideCurl && curlExample + ? [{ id: `${uid}-tab-curl`, label: "Curl", copyRaw: `${uid}-raw-curl` }] + : []), ]; + +function buildSetupPackageManagerTabs(prefix: "enssdk" | "enskit") { + return SETUP_PACKAGE_MANAGERS.map((pm) => ({ + id: `${uid}-tab-setup-${prefix}-${pm}`, + label: pm, + icon: pm, + copyRaw: `${uid}-raw-setup-${prefix}-${pm}`, + })); +} + +const enssdkSetupTabs = buildSetupPackageManagerTabs("enssdk"); +const enskitSetupTabs = buildSetupPackageManagerTabs("enskit"); ---
+
- - - Run in ENSAdmin - - + Omnigraph (GraphQL) + + +
+
{query}
{variablesJson}
{responseJson ?
{responseJson}
: null} {curlExample ?
{curlExample}
: null} +
{enssdkSnippet}
+
{enskitSnippet}
+ { + SETUP_PACKAGE_MANAGERS.map((pm) => ( +
+        {enssdkSetupSnippets[pm]}
+      
+ )) + } + { + SETUP_PACKAGE_MANAGERS.map((pm) => ( +
+        {enskitSetupSnippets[pm]}
+      
+ )) + } -
-
- +
+ +
+ - ENS Omnigraph GraphQL + + Run in ENSAdmin + + +
+ + +
+
+ + GraphQL Query + + +
+
+ +
+
+ + +
+

Payload and transport examples

+
+
+ { + graphqlSecondaryTabs.map((t, i) => ( + + )) + } +
+ +
+
+
+
+ +
+
+ { + responseJson ? ( + + ) : null + } + { + !hideCurl && curlExample ? ( + + ) : null + } +
+
+
+ +

+ Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to + {connectionBaseUrl}/api/omnigraph +

+
+ + +
-
-

Payload and transport examples

+ +
+
+ + TypeScript + + +
+
+ +
+
+ + +
+

enssdk setup

+
+
+ { + enssdkSetupTabs.map((t, i) => ( + + )) + } +
+ +
+
+ { + SETUP_PACKAGE_MANAGERS.map((pm, i) => ( + + )) + } +
+
+
-
-
+ See the{" "} + enssdk docs + {" "}for gql.tada plugin and tsconfig setup. +

+
+ + +
-

- Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to - {connectionBaseUrl}/api/omnigraph -

+

+ See the{" "} + enskit docs + {" "}for gql.tada plugin and provider setup. +

+
diff --git a/docs/ensnode.io/src/components/organisms/OmnigraphAPIExample.astro b/docs/ensnode.io/src/components/organisms/OmnigraphAPIExample.astro index a151950a53..3d849b4cd4 100644 --- a/docs/ensnode.io/src/components/organisms/OmnigraphAPIExample.astro +++ b/docs/ensnode.io/src/components/organisms/OmnigraphAPIExample.astro @@ -7,6 +7,12 @@ import { ENSADMIN_URL } from "astro:env/client"; import { getOmnigraphExampleById } from "@data/omnigraph-examples/examples"; import { DOCS_HOSTED_INSTANCE_ANCHOR, DOCS_OMNIGRAPH_NAMESPACE } from "@lib/playground/constants"; +import { + buildEnskitSetupSnippets, + buildEnskitSnippet, + buildEnssdkSetupSnippets, + buildEnssdkSnippet, +} from "@lib/omnigraph-examples/build-integration-snippets"; import { buildEnsAdminOmnigraphUrl, stringifyJsonForDocs } from "@lib/playground/utils"; interface Props { @@ -27,6 +33,10 @@ const adminUrl = buildEnsAdminOmnigraphUrl({ }); const variablesJson = stringifyJsonForDocs(example.variables); const responseJson = example.response ? stringifyJsonForDocs(example.response) : null; +const enssdkSnippet = buildEnssdkSnippet({ query: example.query, variables: example.variables }); +const enskitSnippet = buildEnskitSnippet({ query: example.query, variables: example.variables }); +const enssdkSetupSnippets = buildEnssdkSetupSnippets(); +const enskitSetupSnippets = buildEnskitSetupSnippets(); --- {!hideDescription && example.description} @@ -42,6 +52,10 @@ const responseJson = example.response ? stringifyJsonForDocs(example.response) : hostedInstanceNamespace={DOCS_OMNIGRAPH_NAMESPACE} adminUrl={adminUrl} hideCurl={hideCurl} + enssdkSnippet={enssdkSnippet} + enskitSnippet={enskitSnippet} + enssdkSetupSnippets={enssdkSetupSnippets} + enskitSetupSnippets={enskitSetupSnippets} /> { diff --git a/docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdx b/docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdx index 25dadbf6a8..715e06000b 100644 --- a/docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdx +++ b/docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdx @@ -1,6 +1,6 @@ --- title: ENS Omnigraph Example Queries -description: Ready-to-run ENS Omnigraph GraphQL examples with variables, sample JSON, cURL, and ENSAdmin links. +description: Ready-to-run Omnigraph examples with `GraphQL`, `enssdk`, and `enskit` snippets, plus links to ENSAdmin and `curl` samples. sidebar: order: 1 --- @@ -9,7 +9,7 @@ import { LinkCard, CardGrid } from "@astrojs/starlight/components"; import { graphqlApiOmnigraphExamples } from "@data/omnigraph-examples/examples"; -The **Omnigraph examples** are GraphQL queries with input variables, response examples, `curl` samples, and links to the ENSAdmin playground. +The **Omnigraph examples** are GraphQL queries with input variables, response examples, `curl` samples, and links to the ENSAdmin playground. Each example also includes ready-to-run **enssdk** (TypeScript) and **enskit** (React) code snippets. {graphqlApiOmnigraphExamples.map((recipe) => ( diff --git a/docs/ensnode.io/src/data/omnigraph-examples/active.ts b/docs/ensnode.io/src/data/omnigraph-examples/active.ts index a5d04663a9..34fe23242d 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/active.ts +++ b/docs/ensnode.io/src/data/omnigraph-examples/active.ts @@ -10,5 +10,12 @@ * To promote a newly-deployed version: snapshot it (`pnpm omnigraph:snapshot `), * fill its responses (`pnpm omnigraph-examples:refresh-responses`), then bump this constant * in a one-line PR. + * + * Version strings are semver without a leading `v` (e.g. `1.14.0`). */ -export const ACTIVE_OMNIGRAPH_VERSION = "v1.13.1"; +export const ACTIVE_OMNIGRAPH_VERSION = "1.13.1"; + +/** Strip a leading `v` from version strings (`v1.14.0` → `1.14.0`). */ +export function normalizeOmnigraphVersion(version: string): string { + return version.replace(/^v/, ""); +} diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/examples.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/examples.json similarity index 100% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/examples.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/examples.json diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/responses.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/responses.json similarity index 100% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/responses.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/responses.json diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/schema.graphql b/docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/schema.graphql similarity index 100% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/schema.graphql rename to docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/schema.graphql diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/snapshot.json similarity index 89% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/snapshot.json index efb4294ec0..8978d38ea2 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/1.13.1/snapshot.json @@ -1,8 +1,8 @@ { - "version": "v1.13.1", + "version": "1.13.1", "commit": "89c022b", "sdkVersion": "0.0.0-preview-fix-sha-89c022b-20260519094840", - "schemaTag": "v1.13.1", + "schemaTag": "1.13.1", "endpoint": "https://api.v2-sepolia.ensnode.io", "snapshottedAt": "2026-05-21", "note": "Bootstrap snapshot. v1.13.1 predates the Omnigraph examples feature, so examples + responses were frozen from the production-pinned SDK preview (which validates 13/13 against the v1.13.1 schema), not from the v1.13.1 release commit." diff --git a/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.test.ts b/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.test.ts new file mode 100644 index 0000000000..82fca2b44c --- /dev/null +++ b/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.test.ts @@ -0,0 +1,294 @@ +import { describe, expect, it } from "vitest"; + +import { + ACTIVE_OMNIGRAPH_VERSION, + normalizeOmnigraphVersion, +} from "@data/omnigraph-examples/active"; +import type { SnapshotExample } from "@data/omnigraph-examples/types"; + +import { + buildEnskitSetupSnippets, + buildEnskitSnippet, + buildEnssdkSetupSnippets, + buildEnssdkSnippet, + extractGraphQLOperationName, + formatVariablesForTypeScript, + parseGraphQLVariableTypes, + SETUP_PACKAGE_MANAGERS, +} from "./build-integration-snippets"; +import { expectIntegrationSnippetTypechecks } from "./typecheck-integration-snippet"; + +const snapshotExamples = import.meta.glob( + "../../data/omnigraph-examples/versions/*/examples.json", + { eager: true, import: "default" }, +); +const activeSnapshotExamples = + snapshotExamples[ + `../../data/omnigraph-examples/versions/${ACTIVE_OMNIGRAPH_VERSION}/examples.json` + ] ?? []; + +// Minimal real-ish query fixtures +const domainByNameQuery = `query DomainByName($name: InterpretedName!) { + domain(by: {name: $name}) { + name + owner { address } + } +}`; + +const domainsByAddressQuery = `query AccountDomains( + $address: Address! +) { + account(by: { address: $address }) { + domains { edges { node { name } } } + } +}`; + +const registryDomainsQuery = `query RegistryDomains( + $registry: AccountIdInput! +) { + registry(by: { contract: $registry }) { + domains { edges { node { name } } } + } +}`; + +const namegraphQuery = `query Namegraph { + domains { edges { node { name } } } +}`; + +const queryWithComments = `# query NotHelloWorld { this is not a query but a comment haha } +query HelloWorld { domain { name } }`; + +describe("extractGraphQLOperationName", () => { + it("extracts the operation name from a standard query", () => { + expect(extractGraphQLOperationName(domainByNameQuery)).toBe("DomainByName"); + }); + + it("extracts operation name from a multi-line query", () => { + expect(extractGraphQLOperationName(registryDomainsQuery)).toBe("RegistryDomains"); + }); + + it("returns 'Query' when no operation name is found", () => { + expect(extractGraphQLOperationName("{ domain { name } }")).toBe("Query"); + }); + + it("handles queries without variables", () => { + expect(extractGraphQLOperationName(namegraphQuery)).toBe("Namegraph"); + }); + + it("ignores operation-like text in # line comments", () => { + expect(extractGraphQLOperationName(queryWithComments)).toBe("HelloWorld"); + }); +}); + +describe("parseGraphQLVariableTypes", () => { + it("parses InterpretedName variable", () => { + expect(parseGraphQLVariableTypes(domainByNameQuery)).toMatchObject({ + name: "InterpretedName!", + }); + }); + + it("parses Address variable", () => { + expect(parseGraphQLVariableTypes(domainsByAddressQuery)).toMatchObject({ + address: "Address!", + }); + }); + + it("parses nested object type variable", () => { + expect(parseGraphQLVariableTypes(registryDomainsQuery)).toMatchObject({ + registry: "AccountIdInput!", + }); + }); + + it("returns empty object when there are no variables", () => { + expect(parseGraphQLVariableTypes(namegraphQuery)).toMatchObject({}); + }); +}); + +describe("formatVariablesForTypeScript", () => { + it("wraps InterpretedName values with asInterpretedName()", () => { + const types = { name: "InterpretedName!" }; + const vars = { name: "test-name.eth" }; + const result = formatVariablesForTypeScript(vars, types); + expect(result).toContain('asInterpretedName("test-name.eth")'); + }); + + it("serializes plain address as a JSON string", () => { + const types = { address: "Address!" }; + const vars = { address: "0x1234" }; + const result = formatVariablesForTypeScript(vars, types); + expect(result).toContain('"0x1234"'); + expect(result).not.toContain("asInterpretedName"); + }); + + it("serializes nested objects", () => { + const types = { registry: "AccountIdInput!" }; + const vars = { registry: { chainId: 1, address: "0xabc" } }; + const result = formatVariablesForTypeScript(vars, types); + expect(result).toContain('"chainId"'); + expect(result).toContain('"address"'); + }); + + it("returns '{}' for empty variables", () => { + expect(formatVariablesForTypeScript({}, {})).toBe("{}"); + }); +}); + +describe("buildEnssdkSnippet", () => { + it("includes the operation name and query", () => { + const snippet = buildEnssdkSnippet({ + query: domainByNameQuery, + variables: { name: "test-name.eth" }, + }); + expect(snippet).toContain("DomainByNameQuery"); + expect(snippet).toContain("domain(by: {name: $name})"); + }); + + it("includes asInterpretedName import when query uses InterpretedName", () => { + const snippet = buildEnssdkSnippet({ + query: domainByNameQuery, + variables: { name: "test-name.eth" }, + }); + expect(snippet).toContain('import { asInterpretedName } from "enssdk"'); + }); + + it("does not include asInterpretedName import for plain address vars and includes enssdk imports", () => { + const snippet = buildEnssdkSnippet({ + query: domainsByAddressQuery, + variables: { address: "0x205d" }, + }); + expect(snippet).not.toContain("asInterpretedName"); + expect(snippet).toContain('from "enssdk/core"'); + expect(snippet).toContain('from "enssdk/omnigraph"'); + }); + + it("handles empty variables (namegraph-style)", () => { + const snippet = buildEnssdkSnippet({ query: namegraphQuery, variables: {} }); + expect(snippet).toContain("variables: {},"); + expect(snippet).not.toContain("asInterpretedName"); + }); +}); + +describe("buildEnskitSnippet", () => { + it("includes OmnigraphProvider, useOmnigraphQuery, graphql from enskit, and asInterpretedName import", () => { + const snippet = buildEnskitSnippet({ + query: domainByNameQuery, + variables: { name: "test-name.eth" }, + }); + expect(snippet).toContain("OmnigraphProvider"); + expect(snippet).toContain("useOmnigraphQuery"); + expect(snippet).toContain('from "enskit/react/omnigraph"'); + expect(snippet).toContain("graphql"); + expect(snippet).toContain("asInterpretedName"); + }); + + it("renders loading/error/data UI", () => { + const snippet = buildEnskitSnippet({ + query: registryDomainsQuery, + variables: { registry: { chainId: 1, address: "0x1" } }, + }); + expect(snippet).toContain("fetching"); + expect(snippet).toContain("Loading"); + expect(snippet).toContain("error.message"); + expect(snippet).toContain("JSON.stringify("); + expect(snippet).toContain('typeof value === "bigint"'); + expect(snippet).not.toContain("asInterpretedName"); + }); +}); + +describe("buildEnssdkSetupSnippets", () => { + it.each(SETUP_PACKAGE_MANAGERS)("includes versioned enssdk install for %s", (pm) => { + const snippet = buildEnssdkSetupSnippets()[pm]; + expect(snippet).toContain(`enssdk@${ACTIVE_OMNIGRAPH_VERSION}`); + expect(snippet).toContain("my-ens-script"); + expect(snippet).toContain("src/index.ts"); + }); + + it("uses npm-specific commands for npm", () => { + const snippet = buildEnssdkSetupSnippets().npm; + expect(snippet).toContain("npm init -y"); + expect(snippet).toContain("npm pkg set"); + expect(snippet).toContain("npm install"); + expect(snippet).toContain("npm start"); + }); + + it("uses pnpm-specific commands for pnpm", () => { + const snippet = buildEnssdkSetupSnippets().pnpm; + expect(snippet).toContain("pnpm init"); + expect(snippet).toContain("pnpm pkg set"); + expect(snippet).toContain("pnpm add"); + expect(snippet).toContain("pnpm start"); + }); +}); + +describe("buildEnskitSetupSnippets", () => { + it.each(SETUP_PACKAGE_MANAGERS)("includes versioned enskit and enssdk for %s", (pm) => { + const snippet = buildEnskitSetupSnippets()[pm]; + expect(snippet).toContain(`enskit@${ACTIVE_OMNIGRAPH_VERSION}`); + expect(snippet).toContain(`enssdk@${ACTIVE_OMNIGRAPH_VERSION}`); + expect(snippet).toContain("my-ens-app"); + expect(snippet).toContain("--no-interactive --no-immediate"); + }); + + it("uses npm create vite for npm", () => { + const snippet = buildEnskitSetupSnippets().npm; + expect(snippet).toContain("npm create vite@latest"); + expect(snippet).toContain("npm run dev"); + }); + + it("uses pnpm create vite for pnpm", () => { + const snippet = buildEnskitSetupSnippets().pnpm; + expect(snippet).toContain("pnpm create vite@latest"); + expect(snippet).toContain("pnpm run dev"); + }); +}); + +describe("integration snippet typechecking", () => { + const fixtureCases = [ + { + label: "InterpretedName domain lookup", + query: domainByNameQuery, + variables: { name: "test-name.eth" }, + }, + { + label: "address domains lookup", + query: domainsByAddressQuery, + variables: { address: "0x205d2686da3bf33f64c17f21462c51b5ead462cf" }, + }, + { + label: "registry domains lookup", + query: registryDomainsQuery, + variables: { + registry: { chainId: 1, address: "0x31a2bb5d933557cce1b3129993193896d074db92" }, + }, + }, + { + label: "namegraph without variables", + query: namegraphQuery, + variables: {}, + }, + ] as const; + + it.each(fixtureCases)("enssdk snippet typechecks ($label)", ({ query, variables }) => { + expectIntegrationSnippetTypechecks(buildEnssdkSnippet({ query, variables }), "enssdk"); + }); + + it.each(fixtureCases)("enskit snippet typechecks ($label)", ({ query, variables }) => { + expectIntegrationSnippetTypechecks(buildEnskitSnippet({ query, variables }), "enskit"); + }); + + it.each( + activeSnapshotExamples.map( + (example) => [example.id, example.query, example.variables] as const, + ), + )("enssdk snippet typechecks active snapshot %s", (_id, query, variables) => { + expectIntegrationSnippetTypechecks(buildEnssdkSnippet({ query, variables }), "enssdk"); + }); + + it.each( + activeSnapshotExamples.map( + (example) => [example.id, example.query, example.variables] as const, + ), + )("enskit snippet typechecks active snapshot %s", (_id, query, variables) => { + expectIntegrationSnippetTypechecks(buildEnskitSnippet({ query, variables }), "enskit"); + }); +}); diff --git a/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.ts b/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.ts new file mode 100644 index 0000000000..f48c0b031f --- /dev/null +++ b/docs/ensnode.io/src/lib/omnigraph-examples/build-integration-snippets.ts @@ -0,0 +1,224 @@ +import { ACTIVE_OMNIGRAPH_VERSION } from "@data/omnigraph-examples/active"; +import { ENSNODE_URL } from "@lib/playground/constants"; + +/** Package managers shown in Setup tabs (npm default). */ +export type SetupPackageManager = "npm" | "pnpm"; + +export const SETUP_PACKAGE_MANAGERS: SetupPackageManager[] = ["npm", "pnpm"]; + +/** Setup steps for enssdk per package manager: scaffold, install, copy snippet, run. */ +export function buildEnssdkSetupSnippets(): Record { + const version = ACTIVE_OMNIGRAPH_VERSION; + const deps = `enssdk@${version}`; + const devDeps = "tsx typescript @types/node"; + const pasteStep = "# 3. Paste the TypeScript snippet above into src/index.ts"; + const runEnv = `ENSNODE_URL=${ENSNODE_URL}`; + + return { + npm: `# 1. Create project +mkdir -p my-ens-script/src && cd my-ens-script +npm init -y && touch src/index.ts +npm pkg set type=module scripts.start="tsx src/index.ts" +# 2. Install dependencies +npm install ${deps} && npm install -D ${devDeps} +${pasteStep} +# 4. Run +${runEnv} npm start`, + + pnpm: `# 1. Create project +mkdir -p my-ens-script/src && cd my-ens-script +pnpm init && touch src/index.ts +pnpm pkg set type=module scripts.start="tsx src/index.ts" +# 2. Install dependencies +pnpm add ${deps} && pnpm add -D ${devDeps} +${pasteStep} +# 4. Run +${runEnv} pnpm start`, + }; +} + +/** Setup steps for enskit per package manager: scaffold, install, copy snippet, run. */ +export function buildEnskitSetupSnippets(): Record { + const version = ACTIVE_OMNIGRAPH_VERSION; + const deps = `enskit@${version} enssdk@${version}`; + const viteFlags = "--template react-ts --no-interactive --no-immediate"; + const pasteStep = "# 3. Copy the TSX snippet above into src/App.tsx"; + const runEnv = `VITE_ENSNODE_URL=${ENSNODE_URL}`; + + return { + npm: `# 1. Create project +npm create vite@latest my-ens-app -- ${viteFlags} +cd my-ens-app +# 2. Install dependencies +npm install +npm install ${deps} +${pasteStep} +# 4. Run +${runEnv} npm run dev`, + + pnpm: `# 1. Create project +pnpm create vite@latest my-ens-app ${viteFlags} +cd my-ens-app +# 2. Install dependencies +pnpm install +pnpm add ${deps} +${pasteStep} +# 4. Run +${runEnv} pnpm run dev`, + }; +} + +/** Strip GraphQL `#` line comments so operation parsing ignores comment text like `your query here`. */ +export function stripGraphQLLineComments(query: string): string { + return query.replace(/^\s*#.*$/gm, ""); +} + +/** Parse the operation name from a GraphQL query string (e.g. `query RegistryDomains` → `"RegistryDomains"`). */ +export function extractGraphQLOperationName(query: string): string { + const match = stripGraphQLLineComments(query).match(/(?:query|mutation|subscription)\s+(\w+)/); + return match?.[1] ?? "Query"; +} + +/** + * Parse variable name → type from a GraphQL operation signature. + * e.g. `query Foo($name: InterpretedName!, $limit: Int)` → `{ name: "InterpretedName!", limit: "Int" }` + */ +export function parseGraphQLVariableTypes(query: string): Record { + const sigMatch = stripGraphQLLineComments(query).match( + /(?:query|mutation|subscription)\s+\w+\s*\(([^)]+)\)/, + ); + if (!sigMatch) return {}; + const types: Record = {}; + for (const part of sigMatch[1].split(",")) { + const m = part.trim().match(/^\$(\w+)\s*:\s*(.+)$/); + if (m) types[m[1]] = m[2].trim(); + } + return types; +} + +function hasInterpretedNameVars(types: Record): boolean { + return Object.values(types).some((t) => t.replace("!", "") === "InterpretedName"); +} + +/** + * Emit a TypeScript object literal for the given variables, wrapping `InterpretedName` values + * with `asInterpretedName("…")`. + */ +export function formatVariablesForTypeScript( + variables: Record, + types: Record, +): string { + if (Object.keys(variables).length === 0) return "{}"; + const entries = Object.entries(variables).map(([key, val]) => { + const baseType = (types[key] ?? "").replace("!", ""); + if (baseType === "InterpretedName" && typeof val === "string") { + return ` ${key}: asInterpretedName(${JSON.stringify(val)})`; + } + const serialized = JSON.stringify(val, null, 2).replace(/\n/g, "\n "); + return ` ${key}: ${serialized}`; + }); + return `{\n${entries.join(",\n")},\n}`; +} + +function indentGraphqlQuery(query: string): string { + return query + .split("\n") + .map((line) => ` ${line}`) + .join("\n"); +} + +function indentVariablesBlock(varsLiteral: string, indent: string): string { + return varsLiteral.replace(/\n/g, `\n${indent}`); +} + +/** Build a runnable enssdk TypeScript snippet for the given query and variables. */ +export function buildEnssdkSnippet(params: { + query: string; + variables: Record; +}): string { + const { query, variables } = params; + const opName = extractGraphQLOperationName(query); + const types = parseGraphQLVariableTypes(query); + const needsInterpretedName = hasInterpretedNameVars(types); + const hasVars = Object.keys(variables).length > 0; + const varsLiteral = formatVariablesForTypeScript(variables, types); + const indentedQuery = indentGraphqlQuery(query); + const variablesBlock = hasVars ? indentVariablesBlock(varsLiteral, " ") : "{}"; + const interpretedNameImport = needsInterpretedName + ? 'import { asInterpretedName } from "enssdk";\n' + : ""; + + return `import { createEnsNodeClient } from "enssdk/core"; +${interpretedNameImport}import { graphql, omnigraph } from "enssdk/omnigraph"; + +const client = createEnsNodeClient({ + url: process.env.ENSNODE_URL || "${ENSNODE_URL}" +}).extend(omnigraph); + +const ${opName}Query = graphql(\` +${indentedQuery} +\`); + +const result = await client.omnigraph.query({ + query: ${opName}Query, + variables: ${variablesBlock}, +}); + +if (result.errors) throw new Error(JSON.stringify(result.errors)); +console.log(JSON.stringify(result.data, null, 2));`; +} + +/** Build a minimal React component snippet using enskit for the given query and variables. */ +export function buildEnskitSnippet(params: { + query: string; + variables: Record; +}): string { + const { query, variables } = params; + const opName = extractGraphQLOperationName(query); + const types = parseGraphQLVariableTypes(query); + const needsInterpretedName = hasInterpretedNameVars(types); + const hasVars = Object.keys(variables).length > 0; + const varsLiteral = formatVariablesForTypeScript(variables, types); + const indentedQuery = indentGraphqlQuery(query); + const variablesBlock = hasVars ? indentVariablesBlock(varsLiteral, " ") : "{}"; + const interpretedNameImport = needsInterpretedName + ? 'import { asInterpretedName } from "enssdk";\n' + : ""; + + return `import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph"; +import { createEnsNodeClient } from "enssdk/core"; +${interpretedNameImport}import { omnigraph } from "enssdk/omnigraph"; + +const client = createEnsNodeClient({ + url: import.meta.env.VITE_ENSNODE_URL || "${ENSNODE_URL}" +}).extend(omnigraph); + +const ${opName}Query = graphql(\` +${indentedQuery} +\`); + +function ${opName}Result() { + const [result] = useOmnigraphQuery({ + query: ${opName}Query, + variables: ${variablesBlock}, + }); + const { data, fetching, error } = result; + if (!data && fetching) return

Loading…

; + if (error) return

Error: {error.message}

; + if (!data) return

No data returned.

; + const formatted = JSON.stringify( + data, + (_, value) => (typeof value === "bigint" ? value.toString() : value), + 2, + ); + return {formatted}; +} + +export default function App() { + return ( + + <${opName}Result /> + + ); +}`; +} diff --git a/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts b/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts new file mode 100644 index 0000000000..743d100973 --- /dev/null +++ b/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts @@ -0,0 +1,95 @@ +import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; + +import ts from "typescript"; + +const docsRoot = fileURLToPath(new URL("../../../", import.meta.url)); +const enssdkRoot = fileURLToPath(new URL("../../../../packages/enssdk", import.meta.url)); +const enssdkSchemaPath = join(enssdkRoot, "src/omnigraph/generated/schema.graphql"); +const enssdkIntrospectionPath = join(enssdkRoot, "src/omnigraph/generated/introspection.ts"); + +const snippetTypecheckCacheRoot = join(docsRoot, "node_modules/.cache/snippet-typecheck"); + +const preambles = { + enssdk: `/// \n\n`, + enskit: `/// + +declare global { + interface ImportMetaEnv { + readonly VITE_ENSNODE_URL: string; + } + interface ImportMeta { + readonly env: ImportMetaEnv; + } +} +export {}; + +`, +} as const; + +export type IntegrationSnippetKind = keyof typeof preambles; + +function getSnippetCompilerOptions(kind: IntegrationSnippetKind): ts.CompilerOptions { + const configPath = join(docsRoot, "tsconfig.json"); + const read = ts.readConfigFile(configPath, ts.sys.readFile); + if (read.error) { + throw new Error(ts.formatDiagnostic(read.error, ts.createCompilerHost({}))); + } + const parsed = ts.parseJsonConfigFileContent(read.config, ts.sys, docsRoot); + const gqlTadaPlugin = { + name: "gql.tada/ts-plugin", + schema: enssdkSchemaPath, + tadaOutputLocation: enssdkIntrospectionPath, + }; + + return { + ...parsed.options, + noEmit: true, + jsx: kind === "enskit" ? ts.JsxEmit.ReactJSX : parsed.options.jsx, + plugins: [gqlTadaPlugin], + } as ts.CompilerOptions; +} + +function formatDiagnostic(diagnostic: ts.Diagnostic): string { + if (diagnostic.file && diagnostic.start !== undefined) { + const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); + const location = `${line + 1}:${character + 1}`; + const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); + return `${location}: ${message}`; + } + return ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); +} + +/** Return TypeScript errors for a generated integration snippet (empty if it typechecks). */ +export function getIntegrationSnippetTypeErrors( + snippet: string, + kind: IntegrationSnippetKind, +): string[] { + mkdirSync(snippetTypecheckCacheRoot, { recursive: true }); + const dir = mkdtempSync(join(snippetTypecheckCacheRoot, `${kind}-`)); + const fileName = kind === "enskit" ? "snippet.tsx" : "snippet.ts"; + const filePath = join(dir, fileName); + + try { + const fullSnippet = preambles[kind] + snippet; + writeFileSync(filePath, fullSnippet); + const program = ts.createProgram([filePath], getSnippetCompilerOptions(kind)); + return ts.getPreEmitDiagnostics(program).map(formatDiagnostic); + } finally { + rmSync(dir, { recursive: true, force: true }); + } +} + +/** Fail the test runner when the snippet does not typecheck. */ +export function expectIntegrationSnippetTypechecks( + snippet: string, + kind: IntegrationSnippetKind, +): void { + const errors = getIntegrationSnippetTypeErrors(snippet, kind); + if (errors.length > 0) { + throw new Error( + `Expected ${kind} integration snippet to typecheck.\n\n${errors.join("\n")}\n\n--- snippet ---\n${snippet}`, + ); + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a507dc016..737abc7ff6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,102 +6,12 @@ settings: catalogs: default: - '@astrojs/react': - specifier: ^5.0.5 - version: 5.0.5 - '@hono/node-server': - specifier: ^1.19.13 - version: 1.19.14 - '@ponder/client': - specifier: 0.16.6 - version: 0.16.6 - '@tailwindcss/vite': - specifier: ^4.3.0 - version: 4.3.0 - '@testing-library/react': - specifier: ^16.3.0 - version: 16.3.0 '@types/node': specifier: 24.10.9 version: 24.10.9 - '@types/react': - specifier: 19.2.7 - version: 19.2.7 - '@types/react-dom': - specifier: 19.2.3 - version: 19.2.3 - astro: - specifier: ^6.3.3 - version: 6.3.3 - astro-font: - specifier: ^1.1.0 - version: 1.1.0 - astro-seo: - specifier: ^1.1.0 - version: 1.1.0 - caip: - specifier: 1.1.1 - version: 1.1.1 - date-fns: - specifier: 4.1.0 - version: 4.1.0 - drizzle-orm: - specifier: 0.41.0 - version: 0.41.0 - hono: - specifier: ^4.12.18 - version: 4.12.18 - lucide-react: - specifier: ^0.548.0 - version: 0.548.0 - p-retry: - specifier: 7.1.1 - version: 7.1.1 - pg-connection-string: - specifier: ^2.9.1 - version: 2.9.1 - pino: - specifier: 10.1.0 - version: 10.1.0 - ponder: - specifier: 0.16.6 - version: 0.16.6 - postcss: - specifier: 8.5.12 - version: 8.5.12 - react: - specifier: 19.2.1 - version: 19.2.1 - react-dom: - specifier: 19.2.1 - version: 19.2.1 - tailwind-merge: - specifier: ^3.4.0 - version: 3.4.0 - tailwindcss: - specifier: ^4.3.0 - version: 4.3.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7 - tsup: - specifier: ^8.3.6 - version: 8.5.0 typescript: - specifier: ^5.7.3 + specifier: ^5.9.3 version: 5.9.3 - viem: - specifier: ^2.50.3 - version: 2.50.3 - vite: - specifier: ^7.3.2 - version: 7.3.2 - vitest: - specifier: ^4.0.2 - version: 4.0.5 - zod: - specifier: ^4.3.6 - version: 4.3.6 overrides: '@adraffy/ens-normalize': 1.11.1 @@ -782,15 +692,24 @@ importers: specifier: ^2.8.3 version: 2.8.3 devDependencies: + '@types/node': + specifier: 'catalog:' + version: 24.10.9 '@types/react': specifier: 'catalog:' version: 19.2.7 '@types/react-dom': specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) + enskit: + specifier: workspace:* + version: link:../../packages/enskit tsx: specifier: ^4.19.3 version: 4.21.0 + typescript: + specifier: 'catalog:' + version: 5.9.3 vitest: specifier: 'catalog:' version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) @@ -909,6 +828,22 @@ importers: specifier: 'catalog:' version: 5.9.3 + my-ens-script: + dependencies: + enssdk: + specifier: 1.13.1 + version: 1.13.1(gql.tada@1.9.1(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6)) + devDependencies: + '@types/node': + specifier: 'catalog:' + version: 24.10.9 + tsx: + specifier: ^4.22.3 + version: 4.22.3 + typescript: + specifier: 'catalog:' + version: 5.9.3 + packages/datasources: dependencies: '@ponder/utils': @@ -2088,6 +2023,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.11': resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} engines: {node: '>=18'} @@ -2106,6 +2047,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.11': resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} engines: {node: '>=18'} @@ -2124,6 +2071,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.11': resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} engines: {node: '>=18'} @@ -2142,6 +2095,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.11': resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} engines: {node: '>=18'} @@ -2160,6 +2119,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.11': resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} engines: {node: '>=18'} @@ -2178,6 +2143,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.11': resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} engines: {node: '>=18'} @@ -2196,6 +2167,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.11': resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} engines: {node: '>=18'} @@ -2214,6 +2191,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.11': resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} engines: {node: '>=18'} @@ -2232,6 +2215,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.11': resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} engines: {node: '>=18'} @@ -2250,6 +2239,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.11': resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} engines: {node: '>=18'} @@ -2268,6 +2263,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.11': resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} engines: {node: '>=18'} @@ -2286,6 +2287,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.11': resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} engines: {node: '>=18'} @@ -2304,6 +2311,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.11': resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} engines: {node: '>=18'} @@ -2322,6 +2335,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.11': resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} engines: {node: '>=18'} @@ -2340,6 +2359,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.11': resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} engines: {node: '>=18'} @@ -2358,6 +2383,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.11': resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} engines: {node: '>=18'} @@ -2376,6 +2407,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.11': resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} engines: {node: '>=18'} @@ -2394,6 +2431,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.11': resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} engines: {node: '>=18'} @@ -2412,6 +2455,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.11': resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} engines: {node: '>=18'} @@ -2430,6 +2479,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.11': resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} engines: {node: '>=18'} @@ -2448,6 +2503,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.11': resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} engines: {node: '>=18'} @@ -2466,6 +2527,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.11': resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} engines: {node: '>=18'} @@ -2484,6 +2551,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.11': resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} engines: {node: '>=18'} @@ -2502,6 +2575,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.11': resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} engines: {node: '>=18'} @@ -2520,6 +2599,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.11': resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} engines: {node: '>=18'} @@ -2538,6 +2623,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@escape.tech/graphql-armor-max-aliases@2.6.2': resolution: {integrity: sha512-SDk7pAzY6gutsdZ3NlyY55RrytrCPxJJxSN/DBfIGKphTrfBvKQWTnioQ9OlLP9kPjCE6XM5UWwGt7uqbpKSYA==} engines: {node: '>=18.0.0'} @@ -6533,6 +6624,13 @@ packages: graphql: ^16 viem: ^2 + enssdk@1.13.1: + resolution: {integrity: sha512-xE5LAXDLmfEgLqfVJ7BNN9XT5b8J8bwMVhYsowfy0riiWBH7syex3vPt3kAq5XuOfzoIc3qUhUrqBw4JtVy2+Q==} + peerDependencies: + gql.tada: ^1.8.10 + graphql: ^16 + viem: ^2 + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -6602,6 +6700,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -9516,6 +9619,11 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsx@4.22.3: + resolution: {integrity: sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==} + engines: {node: '>=18.0.0'} + hasBin: true + tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} @@ -11501,6 +11609,9 @@ snapshots: '@esbuild/aix-ppc64@0.27.4': optional: true + '@esbuild/aix-ppc64@0.28.0': + optional: true + '@esbuild/android-arm64@0.25.11': optional: true @@ -11510,6 +11621,9 @@ snapshots: '@esbuild/android-arm64@0.27.4': optional: true + '@esbuild/android-arm64@0.28.0': + optional: true + '@esbuild/android-arm@0.25.11': optional: true @@ -11519,6 +11633,9 @@ snapshots: '@esbuild/android-arm@0.27.4': optional: true + '@esbuild/android-arm@0.28.0': + optional: true + '@esbuild/android-x64@0.25.11': optional: true @@ -11528,6 +11645,9 @@ snapshots: '@esbuild/android-x64@0.27.4': optional: true + '@esbuild/android-x64@0.28.0': + optional: true + '@esbuild/darwin-arm64@0.25.11': optional: true @@ -11537,6 +11657,9 @@ snapshots: '@esbuild/darwin-arm64@0.27.4': optional: true + '@esbuild/darwin-arm64@0.28.0': + optional: true + '@esbuild/darwin-x64@0.25.11': optional: true @@ -11546,6 +11669,9 @@ snapshots: '@esbuild/darwin-x64@0.27.4': optional: true + '@esbuild/darwin-x64@0.28.0': + optional: true + '@esbuild/freebsd-arm64@0.25.11': optional: true @@ -11555,6 +11681,9 @@ snapshots: '@esbuild/freebsd-arm64@0.27.4': optional: true + '@esbuild/freebsd-arm64@0.28.0': + optional: true + '@esbuild/freebsd-x64@0.25.11': optional: true @@ -11564,6 +11693,9 @@ snapshots: '@esbuild/freebsd-x64@0.27.4': optional: true + '@esbuild/freebsd-x64@0.28.0': + optional: true + '@esbuild/linux-arm64@0.25.11': optional: true @@ -11573,6 +11705,9 @@ snapshots: '@esbuild/linux-arm64@0.27.4': optional: true + '@esbuild/linux-arm64@0.28.0': + optional: true + '@esbuild/linux-arm@0.25.11': optional: true @@ -11582,6 +11717,9 @@ snapshots: '@esbuild/linux-arm@0.27.4': optional: true + '@esbuild/linux-arm@0.28.0': + optional: true + '@esbuild/linux-ia32@0.25.11': optional: true @@ -11591,6 +11729,9 @@ snapshots: '@esbuild/linux-ia32@0.27.4': optional: true + '@esbuild/linux-ia32@0.28.0': + optional: true + '@esbuild/linux-loong64@0.25.11': optional: true @@ -11600,6 +11741,9 @@ snapshots: '@esbuild/linux-loong64@0.27.4': optional: true + '@esbuild/linux-loong64@0.28.0': + optional: true + '@esbuild/linux-mips64el@0.25.11': optional: true @@ -11609,6 +11753,9 @@ snapshots: '@esbuild/linux-mips64el@0.27.4': optional: true + '@esbuild/linux-mips64el@0.28.0': + optional: true + '@esbuild/linux-ppc64@0.25.11': optional: true @@ -11618,6 +11765,9 @@ snapshots: '@esbuild/linux-ppc64@0.27.4': optional: true + '@esbuild/linux-ppc64@0.28.0': + optional: true + '@esbuild/linux-riscv64@0.25.11': optional: true @@ -11627,6 +11777,9 @@ snapshots: '@esbuild/linux-riscv64@0.27.4': optional: true + '@esbuild/linux-riscv64@0.28.0': + optional: true + '@esbuild/linux-s390x@0.25.11': optional: true @@ -11636,6 +11789,9 @@ snapshots: '@esbuild/linux-s390x@0.27.4': optional: true + '@esbuild/linux-s390x@0.28.0': + optional: true + '@esbuild/linux-x64@0.25.11': optional: true @@ -11645,6 +11801,9 @@ snapshots: '@esbuild/linux-x64@0.27.4': optional: true + '@esbuild/linux-x64@0.28.0': + optional: true + '@esbuild/netbsd-arm64@0.25.11': optional: true @@ -11654,6 +11813,9 @@ snapshots: '@esbuild/netbsd-arm64@0.27.4': optional: true + '@esbuild/netbsd-arm64@0.28.0': + optional: true + '@esbuild/netbsd-x64@0.25.11': optional: true @@ -11663,6 +11825,9 @@ snapshots: '@esbuild/netbsd-x64@0.27.4': optional: true + '@esbuild/netbsd-x64@0.28.0': + optional: true + '@esbuild/openbsd-arm64@0.25.11': optional: true @@ -11672,6 +11837,9 @@ snapshots: '@esbuild/openbsd-arm64@0.27.4': optional: true + '@esbuild/openbsd-arm64@0.28.0': + optional: true + '@esbuild/openbsd-x64@0.25.11': optional: true @@ -11681,6 +11849,9 @@ snapshots: '@esbuild/openbsd-x64@0.27.4': optional: true + '@esbuild/openbsd-x64@0.28.0': + optional: true + '@esbuild/openharmony-arm64@0.25.11': optional: true @@ -11690,6 +11861,9 @@ snapshots: '@esbuild/openharmony-arm64@0.27.4': optional: true + '@esbuild/openharmony-arm64@0.28.0': + optional: true + '@esbuild/sunos-x64@0.25.11': optional: true @@ -11699,6 +11873,9 @@ snapshots: '@esbuild/sunos-x64@0.27.4': optional: true + '@esbuild/sunos-x64@0.28.0': + optional: true + '@esbuild/win32-arm64@0.25.11': optional: true @@ -11708,6 +11885,9 @@ snapshots: '@esbuild/win32-arm64@0.27.4': optional: true + '@esbuild/win32-arm64@0.28.0': + optional: true + '@esbuild/win32-ia32@0.25.11': optional: true @@ -11717,6 +11897,9 @@ snapshots: '@esbuild/win32-ia32@0.27.4': optional: true + '@esbuild/win32-ia32@0.28.0': + optional: true + '@esbuild/win32-x64@0.25.11': optional: true @@ -11726,6 +11909,9 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true + '@esbuild/win32-x64@0.28.0': + optional: true + '@escape.tech/graphql-armor-max-aliases@2.6.2': dependencies: graphql: 16.11.0 @@ -16247,6 +16433,15 @@ snapshots: graphql: 16.11.0 viem: 2.50.3(typescript@5.9.3)(zod@4.3.6) + enssdk@1.13.1(gql.tada@1.9.1(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6)): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@ensdomains/address-encoder': 1.1.4 + caip: 1.1.1 + gql.tada: 1.9.1(graphql@16.11.0)(typescript@5.9.3) + graphql: 16.11.0 + viem: 2.50.3(typescript@5.9.3)(zod@4.3.6) + entities@4.5.0: {} entities@6.0.1: {} @@ -16383,6 +16578,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.4 '@esbuild/win32-x64': 0.27.4 + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 + escalade@3.2.0: {} escape-string-regexp@5.0.0: {} @@ -19942,6 +20166,12 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tsx@4.22.3: + dependencies: + esbuild: 0.28.0 + optionalDependencies: + fsevents: 2.3.3 + tw-animate-css@1.4.0: {} tweetnacl@0.14.5: {} From c7fa9043984af3535a934291e9f86981a0efdbbc Mon Sep 17 00:00:00 2001 From: sevenzing Date: Fri, 22 May 2026 19:03:17 +0300 Subject: [PATCH 2/3] oops lock file --- pnpm-lock.yaml | 485 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 378 insertions(+), 107 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 737abc7ff6..b5df749935 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,12 +6,102 @@ settings: catalogs: default: + '@astrojs/react': + specifier: ^5.0.5 + version: 5.0.5 + '@hono/node-server': + specifier: ^1.19.13 + version: 1.19.14 + '@ponder/client': + specifier: 0.16.6 + version: 0.16.6 + '@tailwindcss/vite': + specifier: ^4.3.0 + version: 4.3.0 + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0 '@types/node': specifier: 24.10.9 version: 24.10.9 + '@types/react': + specifier: 19.2.7 + version: 19.2.7 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3 + astro: + specifier: ^6.3.3 + version: 6.3.3 + astro-font: + specifier: ^1.1.0 + version: 1.1.0 + astro-seo: + specifier: ^1.1.0 + version: 1.1.0 + caip: + specifier: 1.1.1 + version: 1.1.1 + date-fns: + specifier: 4.1.0 + version: 4.1.0 + drizzle-orm: + specifier: 0.41.0 + version: 0.41.0 + hono: + specifier: ^4.12.18 + version: 4.12.18 + lucide-react: + specifier: ^0.548.0 + version: 0.548.0 + p-retry: + specifier: 7.1.1 + version: 7.1.1 + pg-connection-string: + specifier: ^2.9.1 + version: 2.9.1 + pino: + specifier: 10.1.0 + version: 10.1.0 + ponder: + specifier: 0.16.6 + version: 0.16.6 + postcss: + specifier: 8.5.12 + version: 8.5.12 + react: + specifier: 19.2.1 + version: 19.2.1 + react-dom: + specifier: 19.2.1 + version: 19.2.1 + tailwind-merge: + specifier: ^3.4.0 + version: 3.5.0 + tailwindcss: + specifier: ^4.3.0 + version: 4.3.0 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7 + tsup: + specifier: ^8.3.6 + version: 8.5.0 typescript: - specifier: ^5.9.3 + specifier: ^5.7.3 version: 5.9.3 + viem: + specifier: ^2.50.3 + version: 2.50.3 + vite: + specifier: ^7.3.2 + version: 7.3.2 + vitest: + specifier: ^4.0.2 + version: 4.0.5 + zod: + specifier: ^4.3.6 + version: 4.3.6 overrides: '@adraffy/ens-normalize': 1.11.1 @@ -85,13 +175,13 @@ importers: version: 27.0.1(postcss@8.5.12) tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) apps/ensadmin: dependencies: @@ -214,7 +304,7 @@ importers: version: 2.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) tailwind-merge: specifier: 'catalog:' - version: 3.4.0 + version: 3.5.0 tailwindcss-animate: specifier: 'catalog:' version: 1.0.7(tailwindcss@4.3.0) @@ -248,7 +338,7 @@ importers: version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) apps/ensapi: dependencies: @@ -456,7 +546,7 @@ importers: version: 7.1.1 ponder: specifier: 'catalog:' - version: 0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6) + version: 0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6) viem: specifier: 'catalog:' version: 2.50.3(typescript@5.9.3)(zod@4.3.6) @@ -481,7 +571,7 @@ importers: version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) apps/ensrainbow: dependencies: @@ -718,7 +808,7 @@ importers: dependencies: '@astrojs/react': specifier: 'catalog:' - version: 5.0.5(@types/node@24.10.9)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.32.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tsx@4.21.0)(yaml@2.8.3) + version: 5.0.5(@types/node@24.10.9)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.32.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tsx@4.22.3)(yaml@2.8.3) '@heroicons/react': specifier: ^2.2.0 version: 2.2.0(react@19.2.1) @@ -727,10 +817,10 @@ importers: version: link:../../packages/namehash-ui '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.3.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) astro: specifier: 'catalog:' - version: 6.3.3(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.0)(tsx@4.21.0)(yaml@2.8.3) + version: 6.3.3(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.0)(tsx@4.22.3)(yaml@2.8.3) astro-font: specifier: 'catalog:' version: 1.1.0 @@ -786,7 +876,7 @@ importers: version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.7.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) gql.tada: specifier: ^1.8.10 version: 1.9.1(graphql@16.11.0)(typescript@5.9.3) @@ -795,7 +885,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) examples/enssdk-example: dependencies: @@ -828,22 +918,6 @@ importers: specifier: 'catalog:' version: 5.9.3 - my-ens-script: - dependencies: - enssdk: - specifier: 1.13.1 - version: 1.13.1(gql.tada@1.9.1(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6)) - devDependencies: - '@types/node': - specifier: 'catalog:' - version: 24.10.9 - tsx: - specifier: ^4.22.3 - version: 4.22.3 - typescript: - specifier: 'catalog:' - version: 5.9.3 - packages/datasources: dependencies: '@ponder/utils': @@ -861,7 +935,7 @@ importers: version: 24.10.9 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -870,7 +944,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ens-referrals: dependencies: @@ -892,7 +966,7 @@ importers: version: 24.10.9 tsup: specifier: ^8.3.6 - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -901,7 +975,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/enscli: {} @@ -931,10 +1005,10 @@ importers: version: 0.41.0(@electric-sql/pglite@0.2.13)(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/pg@8.16.0)(kysely@0.28.17)(pg@8.16.3) ponder: specifier: 'catalog:' - version: 0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6) + version: 0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6) tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -943,7 +1017,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ensindexer-perf-testing: {} @@ -979,7 +1053,7 @@ importers: version: 19.2.1 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -988,7 +1062,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ensnode-sdk: dependencies: @@ -1019,7 +1093,7 @@ importers: version: 24.10.9 tsup: specifier: ^8.3.6 - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1028,7 +1102,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ensrainbow-sdk: dependencies: @@ -1047,13 +1121,13 @@ importers: version: link:../shared-configs tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/enssdk: dependencies: @@ -1081,7 +1155,7 @@ importers: version: 16.11.0 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1090,7 +1164,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ensskills: {} @@ -1168,7 +1242,7 @@ importers: version: 2.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) tailwind-merge: specifier: 'catalog:' - version: 3.4.0 + version: 3.5.0 tailwindcss-animate: specifier: 'catalog:' version: 1.0.7(tailwindcss@4.3.0) @@ -1202,7 +1276,7 @@ importers: version: 8.5.12 postcss-cli: specifier: ^11.0.1 - version: 11.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0) + version: 11.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3) react: specifier: 'catalog:' version: 19.2.1 @@ -1211,7 +1285,7 @@ importers: version: 4.3.0 tsup: specifier: ^8.3.6 - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1220,7 +1294,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) packages/ponder-sdk: dependencies: @@ -1236,7 +1310,7 @@ importers: version: 24.10.9 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1245,7 +1319,7 @@ importers: version: 2.50.3(typescript@5.9.3)(zod@4.3.6) vitest: specifier: 'catalog:' - version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) zod: specifier: 'catalog:' version: 4.3.6 @@ -1291,7 +1365,7 @@ importers: version: 4.12.18 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3) typescript: specifier: 'catalog:' version: 5.9.3 @@ -4679,9 +4753,6 @@ packages: '@stackblitz/sdk@1.11.0': resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -6624,13 +6695,6 @@ packages: graphql: ^16 viem: ^2 - enssdk@1.13.1: - resolution: {integrity: sha512-xE5LAXDLmfEgLqfVJ7BNN9XT5b8J8bwMVhYsowfy0riiWBH7syex3vPt3kAq5XuOfzoIc3qUhUrqBw4JtVy2+Q==} - peerDependencies: - gql.tada: ^1.8.10 - graphql: ^16 - viem: ^2 - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -9406,9 +9470,6 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tailwind-merge@3.4.0: - resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} - tailwind-merge@3.5.0: resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} @@ -10554,6 +10615,31 @@ snapshots: - tsx - yaml + '@astrojs/react@5.0.5(@types/node@24.10.9)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.32.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tsx@4.22.3)(yaml@2.8.3)': + dependencies: + '@astrojs/internal-helpers': 0.9.1 + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + '@vitejs/plugin-react': 5.2.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) + devalue: 5.8.1 + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + ultrahtml: 1.6.0 + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + '@astrojs/sitemap@3.7.2': dependencies: sitemap: 9.0.1 @@ -14420,8 +14506,6 @@ snapshots: '@stackblitz/sdk@1.11.0': {} - '@standard-schema/spec@1.0.0': {} - '@standard-schema/spec@1.1.0': {} '@standard-schema/utils@0.3.0': {} @@ -14571,6 +14655,13 @@ snapshots: tailwindcss: 4.3.0 vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + '@tailwindcss/vite@4.3.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + '@tanstack/query-core@5.90.5': {} '@tanstack/react-query@5.90.5(react@19.2.1)': @@ -14949,7 +15040,7 @@ snapshots: '@vercel/oidc@3.1.0': {} - '@vitejs/plugin-react@4.7.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -14957,7 +15048,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -14973,9 +15064,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@5.2.0(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.3 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + transitivePeerDependencies: + - supports-color + '@vitest/expect@4.0.5': dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 '@vitest/spy': 4.0.5 '@vitest/utils': 4.0.5 @@ -14990,6 +15093,14 @@ snapshots: optionalDependencies: vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + '@vitest/mocker@4.0.5(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3))': + dependencies: + '@vitest/spy': 4.0.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + '@vitest/pretty-format@4.0.5': dependencies: tinyrainbow: 3.0.3 @@ -15491,7 +15602,7 @@ snapshots: svgo: 4.0.1 tinyclip: 0.1.12 tinyexec: 1.1.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 @@ -15538,6 +15649,99 @@ snapshots: - uploadthing - yaml + astro@6.3.3(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.0)(tsx@4.22.3)(yaml@2.8.3): + dependencies: + '@astrojs/compiler': 4.0.0 + '@astrojs/internal-helpers': 0.9.1 + '@astrojs/markdown-remark': 7.1.2 + '@astrojs/telemetry': 3.3.2 + '@capsizecss/unpack': 4.0.0 + '@clack/prompts': 1.4.0 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 1.1.1 + devalue: 5.8.1 + diff: 8.0.4 + dset: 3.1.4 + es-module-lexer: 2.1.0 + esbuild: 0.27.4 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.1.1 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + magicast: 0.5.3 + mrmime: 2.0.1 + neotraverse: 0.6.18 + obug: 2.1.1 + p-limit: 7.3.0 + p-queue: 9.3.0 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 + picomatch: 4.0.4 + rehype: 13.0.2 + semver: 7.8.0 + shiki: 4.0.2 + smol-toml: 1.6.1 + svgo: 4.0.1 + tinyclip: 0.1.12 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + ultrahtml: 1.6.0 + unifont: 0.7.4 + unist-util-visit: 5.1.0 + unstorage: 1.17.5 + vfile: 6.0.3 + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + vitefu: 1.1.3(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.3.6 + optionalDependencies: + sharp: 0.34.5 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - uploadthing + - yaml + async-lock@1.4.1: {} async@3.2.6: {} @@ -15906,7 +16110,7 @@ snapshots: dot-prop: 8.0.2 env-paths: 3.0.0 json-schema-typed: 8.0.1 - semver: 7.7.3 + semver: 7.8.0 uint8array-extras: 0.3.0 confbox@0.1.8: {} @@ -16433,15 +16637,6 @@ snapshots: graphql: 16.11.0 viem: 2.50.3(typescript@5.9.3)(zod@4.3.6) - enssdk@1.13.1(gql.tada@1.9.1(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6)): - dependencies: - '@adraffy/ens-normalize': 1.11.1 - '@ensdomains/address-encoder': 1.1.4 - caip: 1.1.1 - gql.tada: 1.9.1(graphql@16.11.0)(typescript@5.9.3) - graphql: 16.11.0 - viem: 2.50.3(typescript@5.9.3)(zod@4.3.6) - entities@4.5.0: {} entities@6.0.1: {} @@ -16606,6 +16801,7 @@ snapshots: '@esbuild/win32-arm64': 0.28.0 '@esbuild/win32-ia32': 0.28.0 '@esbuild/win32-x64': 0.28.0 + optional: true escalade@3.2.0: {} @@ -18837,7 +19033,7 @@ snapshots: graphql: 16.11.0 hono: 4.12.18 - ponder@0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6): + ponder@0.16.6(@opentelemetry/api@1.9.0(patch_hash=4b2adeefaf7c22f9987d0a125d69cab900719bec7ed7636648bea6947107033a))(@types/node@24.10.9)(@types/pg@8.16.0)(hono@4.12.18)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(typescript@5.9.3)(viem@2.50.3(typescript@5.9.3)(zod@4.3.6))(yaml@2.8.3)(zod@4.3.6): dependencies: '@babel/code-frame': 7.29.0 '@commander-js/extra-typings': 12.1.0(commander@12.1.0) @@ -18868,14 +19064,14 @@ snapshots: picocolors: 1.1.1 pino: 8.21.0 prom-client: 15.1.3 - semver: 7.7.3 + semver: 7.8.0 stacktrace-parser: 0.1.11 superjson: 2.2.6 terminal-size: 4.0.0 viem: 2.50.3(typescript@5.9.3)(zod@4.3.6) - vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) - vite-node: 1.0.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) - vite-tsconfig-paths: 4.3.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) + vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + vite-node: 1.0.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + vite-tsconfig-paths: 4.3.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) ws: 8.20.1 optionalDependencies: typescript: 5.9.3 @@ -18922,14 +19118,14 @@ snapshots: - yaml - zod - postcss-cli@11.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0): + postcss-cli@11.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.3 picocolors: 1.1.1 postcss: 8.5.12 - postcss-load-config: 5.1.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0) + postcss-load-config: 5.1.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3) postcss-reporter: 7.1.0(postcss@8.5.12) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -18940,22 +19136,22 @@ snapshots: - jiti - tsx - postcss-load-config@5.1.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0): + postcss-load-config@5.1.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3): dependencies: lilconfig: 3.1.3 yaml: 2.8.3 optionalDependencies: jiti: 2.6.1 postcss: 8.5.12 - tsx: 4.21.0 + tsx: 4.22.3 - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(yaml@2.8.3): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(yaml@2.8.3): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.6.1 postcss: 8.5.12 - tsx: 4.21.0 + tsx: 4.22.3 yaml: 2.8.3 postcss-nested@6.2.0(postcss@8.5.12): @@ -19920,8 +20116,6 @@ snapshots: tagged-tag@1.0.0: {} - tailwind-merge@3.4.0: {} - tailwind-merge@3.5.0: {} tailwindcss-animate@1.0.7(tailwindcss@4.3.0): @@ -20124,7 +20318,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3): + tsup@8.5.0(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(typescript@5.9.3)(yaml@2.8.3): dependencies: bundle-require: 5.1.0(esbuild@0.25.11) cac: 6.7.14 @@ -20135,7 +20329,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.21.0)(yaml@2.8.3) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.12)(tsx@4.22.3)(yaml@2.8.3) resolve-from: 5.0.0 rollup: 4.59.0 source-map: 0.8.0-beta.0 @@ -20171,6 +20365,7 @@ snapshots: esbuild: 0.28.0 optionalDependencies: fsevents: 2.3.3 + optional: true tw-animate-css@1.4.0: {} @@ -20192,7 +20387,7 @@ snapshots: typescript-auto-import-cache@0.3.6: dependencies: - semver: 7.7.3 + semver: 7.8.0 typescript-logging@1.0.1: dependencies: @@ -20396,13 +20591,13 @@ snapshots: - utf-8-validate - zod - vite-node@1.0.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3): + vite-node@1.0.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3): dependencies: cac: 6.7.14 debug: 4.4.3 pathe: 1.1.2 picocolors: 1.1.1 - vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -20421,13 +20616,13 @@ snapshots: dependencies: monaco-editor: 0.55.1 - vite-tsconfig-paths@4.3.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)): + vite-tsconfig-paths@4.3.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) transitivePeerDependencies: - supports-color - typescript @@ -20439,7 +20634,7 @@ snapshots: picomatch: 4.0.4 postcss: 8.5.12 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.10.9 fsevents: 2.3.3 @@ -20455,7 +20650,7 @@ snapshots: picomatch: 4.0.4 postcss: 8.5.12 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.10.9 fsevents: 2.3.3 @@ -20464,6 +20659,22 @@ snapshots: tsx: 4.21.0 yaml: 2.8.3 + vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3): + dependencies: + esbuild: 0.25.11 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.12 + rollup: 4.59.0 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.10.9 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + tsx: 4.22.3 + yaml: 2.8.3 + vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3): dependencies: esbuild: 0.27.4 @@ -20471,7 +20682,7 @@ snapshots: picomatch: 4.0.4 postcss: 8.5.12 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.10.9 fsevents: 2.3.3 @@ -20480,14 +20691,34 @@ snapshots: tsx: 4.21.0 yaml: 2.8.3 + vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3): + dependencies: + esbuild: 0.27.4 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.12 + rollup: 4.59.0 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.10.9 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + tsx: 4.22.3 + yaml: 2.8.3 + vitefu@1.1.3(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)): optionalDependencies: vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + vitefu@1.1.3(vite@7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)): + optionalDependencies: + vite: 7.3.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + vitest@4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.20.6)(yaml@2.8.3): dependencies: '@vitest/expect': 4.0.5 - '@vitest/mocker': 4.0.5(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.0.5(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) '@vitest/pretty-format': 4.0.5 '@vitest/runner': 4.0.5 '@vitest/snapshot': 4.0.5 @@ -20502,7 +20733,7 @@ snapshots: std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinyrainbow: 3.0.3 vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.20.6)(yaml@2.8.3) why-is-node-running: 2.3.0 @@ -20542,7 +20773,7 @@ snapshots: std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinyrainbow: 3.0.3 vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 @@ -20564,6 +20795,46 @@ snapshots: - tsx - yaml + vitest@4.0.5(@types/debug@4.1.12)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.12))(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3): + dependencies: + '@vitest/expect': 4.0.5 + '@vitest/mocker': 4.0.5(vite@6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3)) + '@vitest/pretty-format': 4.0.5 + '@vitest/runner': 4.0.5 + '@vitest/snapshot': 4.0.5 + '@vitest/spy': 4.0.5 + '@vitest/utils': 4.0.5 + debug: 4.4.3 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.0.3 + vite: 6.4.2(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.22.3)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 24.10.9 + jsdom: 27.0.1(postcss@8.5.12) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + volar-service-css@0.0.70(@volar/language-service@2.4.28): dependencies: vscode-css-languageservice: 6.3.8 @@ -20605,7 +20876,7 @@ snapshots: volar-service-typescript@0.0.70(@volar/language-service@2.4.28): dependencies: path-browserify: 1.0.1 - semver: 7.7.3 + semver: 7.8.0 typescript-auto-import-cache: 0.3.6 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 @@ -20682,7 +20953,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.4 scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.32(typescript@5.9.3) From 5c802a1239551e8e1722c5add3ff4276df37d236 Mon Sep 17 00:00:00 2001 From: sevenzing Date: Fri, 22 May 2026 19:23:03 +0300 Subject: [PATCH 3/3] fix import path --- .../src/lib/omnigraph-examples/typecheck-integration-snippet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts b/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts index 743d100973..c1f96d29f5 100644 --- a/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts +++ b/docs/ensnode.io/src/lib/omnigraph-examples/typecheck-integration-snippet.ts @@ -5,7 +5,7 @@ import { fileURLToPath } from "node:url"; import ts from "typescript"; const docsRoot = fileURLToPath(new URL("../../../", import.meta.url)); -const enssdkRoot = fileURLToPath(new URL("../../../../packages/enssdk", import.meta.url)); +const enssdkRoot = fileURLToPath(new URL("../../../../../packages/enssdk", import.meta.url)); const enssdkSchemaPath = join(enssdkRoot, "src/omnigraph/generated/schema.graphql"); const enssdkIntrospectionPath = join(enssdkRoot, "src/omnigraph/generated/introspection.ts");