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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/actions/sdk-drift-check/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ A composite GitHub Action that validates vocs.config sidebar SDK references matc
- name: Run SDK drift check
uses: ./.github/actions/sdk-drift-check
with:
sdk-package: mpay
sdk-package: mppx
sdk-version: latest
output-dir: ./drift-results

Expand All @@ -32,9 +32,9 @@ pnpm check:sdk-drift --output results.json

| Input | Description | Default |
|-------|-------------|---------|
| `sdk-package` | npm package name to check | `mpay` |
| `sdk-package` | npm package name to check | `mppx` |
| `sdk-version` | SDK version to check | `latest` |
| `vocs-config` | Path to vocs config file | `./vocs.config.tsx` |
| `vocs-config` | Path to vocs config file | `./vocs.config.ts` |
| `sdk-path-prefix` | Sidebar path prefix for SDK references | `/sdk/typescript` |
| `output-dir` | Directory to write results | `./drift-results` |

Expand Down
4 changes: 2 additions & 2 deletions .github/actions/sdk-drift-check/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ inputs:
sdk-package:
description: "npm package name to check"
required: false
default: "mpay"
default: "mppx"
sdk-version:
description: "SDK version to check (default: latest)"
required: false
default: "latest"
vocs-config:
description: "Path to vocs config file"
required: false
default: "./vocs.config.tsx"
default: "./vocs.config.ts"
sdk-path-prefix:
description: "Sidebar path prefix for SDK references"
required: false
Expand Down
104 changes: 104 additions & 0 deletions .github/actions/sdk-drift-check/check-sdk-drift.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,54 @@ describe("parseLink", () => {
member: "http",
});
});

it("maps method docs to the actual client export", () => {
const result = parseLink(
"/sdk/typescript/client/Method.tempo.charge",
prefix,
);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/client/Method.tempo.charge",
area: "client",
namespace: "tempo",
member: "charge",
});
});

it("maps session manager docs to tempo.session", () => {
const result = parseLink(
"/sdk/typescript/client/Method.tempo.session-manager",
prefix,
);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/client/Method.tempo.session-manager",
area: "client",
namespace: "tempo",
member: "session",
});
});

it("maps MCP client docs to the MCP SDK entrypoint", () => {
const result = parseLink("/sdk/typescript/client/McpClient.wrap", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/client/McpClient.wrap",
area: "client",
namespace: "McpClient",
member: "wrap",
entrypoint: "mcp-sdk/client",
});
});

it("maps Html docs to the html entrypoint", () => {
const result = parseLink("/sdk/typescript/Html.init", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/Html.init",
area: "core",
namespace: "Html",
member: "init",
entrypoint: "html",
});
});
});

describe("server area links", () => {
Expand All @@ -135,6 +183,62 @@ describe("parseLink", () => {
member: "toNodeListener",
});
});

it("maps method docs to the actual server export", () => {
const result = parseLink(
"/sdk/typescript/server/Method.stripe.charge",
prefix,
);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/server/Method.stripe.charge",
area: "server",
namespace: "stripe",
member: "charge",
});
});
});

describe("special entrypoints", () => {
it("parses middleware entrypoints", () => {
const result = parseLink("/sdk/typescript/middlewares/hono", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/middlewares/hono",
area: "middlewares",
namespace: "hono",
entrypoint: "hono",
});
});

it("parses proxy entrypoint", () => {
const result = parseLink("/sdk/typescript/proxy", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/proxy",
area: "proxy",
namespace: "proxy",
entrypoint: "proxy",
});
});

it("parses cli entrypoint", () => {
const result = parseLink("/sdk/typescript/cli", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/cli",
area: "cli",
namespace: "cli",
entrypoint: "cli",
});
});

it("parses html custom docs page as docs-only", () => {
const result = parseLink("/sdk/typescript/html/custom", prefix);
expect(result).toEqual<SidebarReference>({
link: "/sdk/typescript/html/custom",
area: "html",
namespace: "custom",
entrypoint: "html",
docsOnly: true,
});
});
});

describe("top-level links (default to core)", () => {
Expand Down
Loading
Loading