Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d391047
add sandbox and ensv2readiness
sevenzing May 13, 2026
787609b
temp remove quickstart from llmtext
sevenzing May 13, 2026
f01ce76
create static graphql examples
sevenzing May 13, 2026
0e9b76e
revert quickstart and ensv2 readiness changes
sevenzing May 14, 2026
894b9b6
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 14, 2026
ab9e0de
playgroud examples
sevenzing May 14, 2026
394dd38
rename cookbook to examples
sevenzing May 14, 2026
58cef6a
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 15, 2026
28b1a51
add description to examples
sevenzing May 15, 2026
4f9ec7c
add interactive enssdk example
sevenzing May 15, 2026
8335ddf
add enskit interactive example
sevenzing May 15, 2026
b867a9c
remove title from code example
sevenzing May 15, 2026
0b720c5
add sidebar docked
sevenzing May 15, 2026
6d29219
add schema reference
sevenzing May 15, 2026
239109f
use @ import instead of ..
sevenzing May 15, 2026
e4045e4
add cleanup
sevenzing May 15, 2026
15959fc
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 15, 2026
5dceafa
fix AI comments
sevenzing May 15, 2026
9e7be1a
fix production bug
sevenzing May 15, 2026
85825e1
replace rocket with zap
sevenzing May 17, 2026
9c47174
update interactive example descriptions
sevenzing May 17, 2026
8b5dca6
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 17, 2026
4f30016
fix wrong git merge
sevenzing May 18, 2026
42def48
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 18, 2026
2ed324c
Update examples export to be published to NPM
tk-o May 18, 2026
e6413bb
Fix import paths
tk-o May 18, 2026
100fda5
Add specific package entrypoint for gql examples
tk-o May 18, 2026
6239a61
Update GQL examples
tk-o May 18, 2026
410e6ff
revert examples to use previous data model version
tk-o May 18, 2026
d5ce33d
publish the internal module for ENSNode SDK package
tk-o May 18, 2026
f2f7ac2
Pin package version to make GQL examples work with the current produc…
tk-o May 18, 2026
8fb2f07
fix example start
sevenzing May 18, 2026
9c223af
final fixes
sevenzing May 18, 2026
ea80606
Merge branch 'main' into ll/docs-query-sandbox
sevenzing May 18, 2026
821e2f3
Merge remote-tracking branch 'origin/fix-sha-89c022b' into ll/docs-qu…
sevenzing May 18, 2026
97d434f
fix final
sevenzing May 18, 2026
98c57d2
revert deleting why ensnode
sevenzing May 18, 2026
348661b
super final fixes after self review. always self review before merge!…
sevenzing May 18, 2026
922e358
final fixes
sevenzing May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,20 @@ import { type OperationDefinitionNode, parse } from "graphql";
import { describe, expect, it } from "vitest";

import { ENSNamespaceIds } from "@ensnode/datasources";
import { getNamespaceSpecificValue } from "@ensnode/ensnode-sdk";
import { GRAPHQL_API_EXAMPLE_QUERIES } from "@ensnode/ensnode-sdk/internal";

import { request } from "@/test/integration/graphql-utils";

const namespace = ENSNamespaceIds.EnsTestEnv;

const EXAMPLE_QUERY_TEST_CASES = GRAPHQL_API_EXAMPLE_QUERIES.map((entry, i) => {
const EXAMPLE_QUERY_TEST_CASES = GRAPHQL_API_EXAMPLE_QUERIES.map((entry) => {
const document = parse(entry.query);
const operation = document.definitions.find(
(d): d is OperationDefinitionNode => d.kind === "OperationDefinition",
);
const name = operation?.name?.value ?? `Query #${i}`;
const variables = entry.variables[namespace] ?? entry.variables.default;
const name = operation?.name?.value ?? entry.id;
const variables = getNamespaceSpecificValue(namespace, entry.variables);
return { name, query: entry.query, variables };
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { GRAPHQL_API_EXAMPLE_QUERIES } from "@ensnode/ensnode-sdk/internal";

describe("Example Queries", () => {
it.each(
GRAPHQL_API_EXAMPLE_QUERIES.map((entry, i) => ({
name: `Query #${i}`,
GRAPHQL_API_EXAMPLE_QUERIES.map((entry) => ({
name: entry.id,
query: entry.query,
})),
)("$name parses as valid GraphQL", ({ query }) => {
Expand Down
16 changes: 16 additions & 0 deletions docs/ensnode.io/config/integrations/llms-txt.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import starlightLlmsTxt from "starlight-llms-txt";

/**
* `starlight-llms-txt` renders each docs entry for `/llms-full.txt` and `/llms-small.txt` through
* an Astro container that only registers the MDX SSR renderer, not React. MDX pages that import
* `.tsx` islands must be omitted from those exports or `astro build` fails with `NoMatchingRenderer`.
*
* Patterns use micromatch against each entry's `id` in the Starlight `docs` collection (paths are
* relative to `src/content/docs/`). Interactive Cookbook recipe pages live under
* `docs/integrate/integration-options/enssdk/cookbook/*`; the enssdk Cookbook hub (`.../enssdk/cookbook` index) stays static and
* remains included in LLM exports. Recipe slugs use one path segment (`.../cookbook/<slug>`); add
* another pattern here if nested recipe routes are introduced.
*/
export const starlightLlmsTxtPlugin = starlightLlmsTxt({
exclude: ["docs/integrate/integration-options/enssdk/cookbook/*"],
});
4 changes: 2 additions & 2 deletions docs/ensnode.io/config/integrations/starlight/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import AstroStarlight from "@astrojs/starlight";
import type { AstroIntegration } from "astro";
import starlightLlmsTxt from "starlight-llms-txt";
import starlightSidebarTopics from "starlight-sidebar-topics";

import { starlightLlmsTxtPlugin } from "../llms-txt";
import { starlightSidebarTopicsConfig } from "./sidebar-topics";

export function starlight(): AstroIntegration {
Expand All @@ -29,7 +29,7 @@ export function starlight(): AstroIntegration {
"@fontsource/inter/800.css",
"@fontsource/inter/900.css",
],
plugins: [starlightLlmsTxt(), starlightSidebarTopics(starlightSidebarTopicsConfig)],
plugins: [starlightLlmsTxtPlugin, starlightSidebarTopics(starlightSidebarTopicsConfig)],
title: "ENSNode",
disable404Route: true,
logo: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,21 @@ export const integrateSidebarTopic = {
},
{
label: "Cookbook",
link: "/docs/integrate/omnigraph/cookbook",
collapsed: true,
items: [
{
label: "Overview",
link: "/docs/integrate/omnigraph/cookbook",
},
{
label: "Domain By Name",
link: "/docs/integrate/omnigraph/cookbook/domain-by-name",
},
{
label: "Account Domains",
link: "/docs/integrate/omnigraph/cookbook/account-domains",
},
],
},
{
label: "Schema Reference",
Expand All @@ -51,7 +65,27 @@ export const integrateSidebarTopic = {
},
{
label: "enssdk (TypeScript)",
link: "/docs/integrate/integration-options/enssdk",
collapsed: false,
items: [
{
label: "Overview",
link: "/docs/integrate/integration-options/enssdk",
},
{
label: "Cookbook",
collapsed: true,
items: [
{
label: "Overview",
link: "/docs/integrate/integration-options/enssdk/cookbook",
},
{
label: "Resolution API",
link: "/docs/integrate/integration-options/enssdk/cookbook/resolution-api",
},
],
},
],
},
{
label: "Raw GraphQL",
Expand Down
2 changes: 2 additions & 0 deletions docs/ensnode.io/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@
"@iconify-json/lucide": "^1.2.52",
"@namehash/namehash-ui": "workspace:*",
Comment thread
sevenzing marked this conversation as resolved.
"@octokit/rest": "^20.1.2",
"@ensnode/ensnode-sdk": "workspace:*",
Comment thread
sevenzing marked this conversation as resolved.
Outdated
"@scalar/astro": "^0.2.4",
"@stackblitz/sdk": "^1.11.0",
"@tailwindcss/vite": "^4.1.15",
"astro": "catalog:",
"astro-font": "catalog:",
Expand Down
Binary file added docs/ensnode.io/public/ensomnigraph.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions docs/ensnode.io/src/components/docs/EnssdkExamplePanels.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
import { Code } from "@astrojs/starlight/components";

interface Props {
code: string;
responseJson: string;
}

const { code, responseJson } = Astro.props;
---

<div class="not-prose grid gap-6 lg:grid-cols-2 lg:gap-8">
<div class="min-w-0">
<p class="mb-2 text-sm font-medium text-gray-900">TypeScript (enssdk)</p>
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
<Code code={code} lang="ts" title="index.ts" />
</div>
<div class="min-w-0">
<p class="mb-2 text-sm font-medium text-gray-900">Example Omnigraph response</p>
<Code code={responseJson} lang="json" title="response.json" />
</div>
</div>
34 changes: 34 additions & 0 deletions docs/ensnode.io/src/components/docs/OmnigraphRecipeExample.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
import OmnigraphRecipePanels from "./OmnigraphRecipePanels.astro";

import { getOmnigraphExampleById } from "../../data/ens-v2-examples-queries";
import { buildEnsadminOmnigraphUrl } from "../../content/snippets/omnigraphAdmin";
import { stringifyJsonForDocs } from "../../data/ens-v2-examples-queries/common";

interface Props {
exampleId: string;
/** Hide curl tab (e.g. if connection is admin-only). */
showCurl?: boolean;
}

const { exampleId, showCurl = true } = Astro.props;
const example = getOmnigraphExampleById(exampleId);
const adminUrl = buildEnsadminOmnigraphUrl({
query: example.query,
connection: example.connection,
variables: example.variables,
});
const variablesJson = stringifyJsonForDocs(example.variables);
const responseJson = example.response ? stringifyJsonForDocs(example.response) : null;
---

<OmnigraphRecipePanels
panelId={exampleId}
query={example.query}
variablesJson={variablesJson}
variablesObject={example.variables}
responseJson={responseJson}
connectionBaseUrl={example.connection}
adminUrl={adminUrl}
showCurl={showCurl}
/>
Loading
Loading