Skip to content

Commit 2222707

Browse files
authored
Some tweaks in tool docs (#847)
* Some tweaks in tool docs * adding to exclusion list * simplifying action * Renamed workflow to "Toolkit docs coverage" and updated file names. * Update excluded-toolkits.txt * only warning when link broken * fixing workflow * fixing again * fix: replace broken PagerDuty OAuth 2.0 guide URL The previous URL (build-sophisticated-apps-for-your-pagerduty-environment-using-oauth-2-0-and-api-scopes) returns 404. Replaced with updating-your-tools-for-api-scopes which covers the same topic: OAuth 2.0, API scopes, app setup, and token management. Made-with: Cursor * deleting when not found in api call * Rename middleware.ts to proxy.ts for Next.js 16 compatibility Next.js 16 deprecated the middleware file convention in favour of proxy. Rename the file and its export accordingly. The API surface (NextRequest, NextResponse, config matcher) is identical, no behaviour changes. Fixes Vercel build warning: ⚠ The "middleware" file convention is deprecated. Please use "proxy" instead. Made-with: Cursor * Revert "Rename middleware.ts to proxy.ts for Next.js 16 compatibility" This reverts commit 752a7b5. * some minor fixes and adding a test case to be remove in gh * chore: remove DemoRemoveMe test toolkit Made-with: Cursor
1 parent 3e46699 commit 2222707

25 files changed

Lines changed: 895 additions & 1037 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: External URL check
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [opened, synchronize, reopened]
7+
branches:
8+
- main
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
check:
15+
name: External URL check
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
21+
22+
- name: Install pnpm
23+
uses: pnpm/action-setup@v4
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: "22"
29+
cache: pnpm
30+
31+
- name: Install dependencies
32+
run: pnpm install
33+
34+
- name: Check external URLs
35+
run: pnpm vitest run --config vitest.external-urls.config.ts
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { MetaRecord } from "nextra";
2+
3+
type ToolkitType =
4+
| "arcade"
5+
| "arcade_starter"
6+
| "community"
7+
| "verified"
8+
| "auth";
9+
10+
export type CategoryEntry = {
11+
slug: string;
12+
title: string;
13+
href: string;
14+
type: ToolkitType;
15+
};
16+
17+
/**
18+
* Builds a Nextra MetaRecord for an integration category, automatically
19+
* inserting "Optimized" and "Starter" separator headings based on toolkit type.
20+
*
21+
* - "Optimized" group: any entry whose type is not "arcade_starter"
22+
* - "Starter" group: entries with type "arcade_starter"
23+
*
24+
* A separator is only emitted when its group is non-empty, so categories
25+
* with a single type do not show an unnecessary heading.
26+
*/
27+
export function createCategoryMeta(entries: CategoryEntry[]): MetaRecord {
28+
const optimized = entries.filter((e) => e.type !== "arcade_starter");
29+
const starter = entries.filter((e) => e.type === "arcade_starter");
30+
31+
const result: MetaRecord = {};
32+
33+
if (optimized.length > 0) {
34+
result["-- Optimized"] = { type: "separator", title: "Optimized" };
35+
for (const entry of optimized) {
36+
result[entry.slug] = { title: entry.title, href: entry.href };
37+
}
38+
}
39+
40+
if (starter.length > 0) {
41+
result["-- Starter"] = { type: "separator", title: "Starter" };
42+
for (const entry of starter) {
43+
result[entry.slug] = { title: entry.title, href: entry.href };
44+
}
45+
}
46+
47+
return result;
48+
}
Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
1-
import type { MetaRecord } from "nextra";
1+
import { createCategoryMeta } from "../create-category-meta";
22

3-
const meta: MetaRecord = {
4-
"-- Optimized": {
5-
type: "separator",
6-
title: "Optimized",
7-
},
8-
zendesk: {
3+
export default createCategoryMeta([
4+
{
5+
slug: "zendesk",
96
title: "Zendesk",
107
href: "/en/resources/integrations/customer-support/zendesk",
8+
type: "arcade",
119
},
12-
"-- Starter": {
13-
type: "separator",
14-
title: "Starter",
15-
},
16-
"customerio-api": {
10+
{
11+
slug: "customerio-api",
1712
title: "Customer.io API",
1813
href: "/en/resources/integrations/customer-support/customerio-api",
14+
type: "arcade_starter",
1915
},
20-
"customerio-pipelines-api": {
16+
{
17+
slug: "customerio-pipelines-api",
2118
title: "Customer.io Pipelines API",
2219
href: "/en/resources/integrations/customer-support/customerio-pipelines-api",
20+
type: "arcade_starter",
2321
},
24-
"customerio-track-api": {
22+
{
23+
slug: "customerio-track-api",
2524
title: "Customer.io Track API",
2625
href: "/en/resources/integrations/customer-support/customerio-track-api",
26+
type: "arcade_starter",
2727
},
28-
"freshservice-api": {
28+
{
29+
slug: "freshservice-api",
2930
title: "Freshservice API",
3031
href: "/en/resources/integrations/customer-support/freshservice-api",
32+
type: "arcade_starter",
3133
},
32-
"intercom-api": {
34+
{
35+
slug: "intercom-api",
3336
title: "Intercom API",
3437
href: "/en/resources/integrations/customer-support/intercom-api",
38+
type: "arcade_starter",
3539
},
36-
};
37-
38-
export default meta;
40+
]);
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
import type { MetaRecord } from "nextra";
1+
import { createCategoryMeta } from "../create-category-meta";
22

3-
const meta: MetaRecord = {
4-
"-- Optimized": {
5-
type: "separator",
6-
title: "Optimized",
7-
},
8-
clickhouse: {
3+
export default createCategoryMeta([
4+
{
5+
slug: "clickhouse",
96
title: "Clickhouse",
107
href: "/en/resources/integrations/databases/clickhouse",
8+
type: "community",
119
},
12-
mongodb: {
10+
{
11+
slug: "mongodb",
1312
title: "MongoDB",
1413
href: "/en/resources/integrations/databases/mongodb",
14+
type: "community",
1515
},
16-
postgres: {
16+
{
17+
slug: "postgres",
1718
title: "Postgres",
1819
href: "/en/resources/integrations/databases/postgres",
20+
type: "community",
1921
},
20-
"-- Starter": {
21-
type: "separator",
22-
title: "Starter",
23-
},
24-
"weaviate-api": {
22+
{
23+
slug: "weaviate-api",
2524
title: "Weaviate API",
2625
href: "/en/resources/integrations/databases/weaviate-api",
26+
type: "arcade_starter",
2727
},
28-
yugabytedb: {
28+
{
29+
slug: "yugabytedb",
2930
title: "YugabyteDB",
3031
href: "/en/resources/integrations/databases/yugabytedb",
32+
type: "arcade_starter",
3133
},
32-
};
33-
34-
export default meta;
34+
]);
Lines changed: 60 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,102 +1,118 @@
1-
import type { MetaRecord } from "nextra";
1+
import { createCategoryMeta } from "../create-category-meta";
22

3-
const meta: MetaRecord = {
4-
"-- Optimized": {
5-
type: "separator",
6-
title: "Optimized",
7-
},
8-
brightdata: {
3+
export default createCategoryMeta([
4+
{
5+
slug: "brightdata",
96
title: "Bright Data",
107
href: "/en/resources/integrations/development/brightdata",
8+
type: "community",
119
},
12-
complextools: {
13-
title: "ComplexTools",
14-
href: "/en/resources/integrations/development/complextools",
15-
},
16-
daytona: {
10+
{
11+
slug: "daytona",
1712
title: "Daytona",
1813
href: "/en/resources/integrations/development/daytona",
14+
type: "arcade",
1915
},
20-
deepwiki: {
21-
title: "Deepwiki",
22-
href: "/en/resources/integrations/development/deepwiki",
23-
},
24-
e2b: {
16+
{
17+
slug: "e2b",
2518
title: "E2B",
2619
href: "/en/resources/integrations/development/e2b",
20+
type: "arcade",
2721
},
28-
figma: {
22+
{
23+
slug: "figma",
2924
title: "Figma",
3025
href: "/en/resources/integrations/development/figma",
26+
type: "arcade",
3127
},
32-
firecrawl: {
28+
{
29+
slug: "firecrawl",
3330
title: "Firecrawl",
3431
href: "/en/resources/integrations/development/firecrawl",
32+
type: "arcade",
3533
},
36-
github: {
34+
{
35+
slug: "github",
3736
title: "GitHub",
3837
href: "/en/resources/integrations/development/github",
38+
type: "arcade",
3939
},
40-
math: {
40+
{
41+
slug: "math",
4142
title: "Math",
4243
href: "/en/resources/integrations/development/math",
44+
type: "arcade",
4345
},
44-
pagerduty: {
46+
{
47+
slug: "pagerduty",
4548
title: "Pagerduty",
4649
href: "/en/resources/integrations/development/pagerduty",
50+
type: "arcade",
4751
},
48-
pylon: {
52+
{
53+
slug: "pylon",
4954
title: "Pylon",
5055
href: "/en/resources/integrations/development/pylon",
56+
type: "arcade",
5157
},
52-
search: {
58+
{
59+
slug: "search",
5360
title: "Search",
5461
href: "/en/resources/integrations/development/search",
62+
type: "arcade",
5563
},
56-
test2: {
57-
title: "Test2",
58-
href: "/en/resources/integrations/development/test2",
59-
},
60-
web: {
64+
{
65+
slug: "web",
6166
title: "Web",
6267
href: "/en/resources/integrations/development/web",
68+
type: "arcade",
6369
},
64-
"-- Starter": {
65-
type: "separator",
66-
title: "Starter",
67-
},
68-
"arcade-engine-api": {
70+
{
71+
slug: "arcade-engine-api",
6972
title: "Arcade Engine API",
7073
href: "/en/resources/integrations/development/arcade-engine-api",
74+
type: "arcade_starter",
7175
},
72-
"cursor-agents-api": {
76+
{
77+
slug: "cursor-agents-api",
7378
title: "Cursor Agents API",
7479
href: "/en/resources/integrations/development/cursor-agents-api",
80+
type: "arcade_starter",
7581
},
76-
"datadog-api": {
82+
{
83+
slug: "datadog-api",
7784
title: "Datadog API",
7885
href: "/en/resources/integrations/development/datadog-api",
86+
type: "arcade_starter",
7987
},
80-
"github-api": {
88+
{
89+
slug: "github-api",
8190
title: "GitHub API",
8291
href: "/en/resources/integrations/development/github-api",
92+
type: "arcade_starter",
8393
},
84-
"pagerduty-api": {
94+
{
95+
slug: "pagerduty-api",
8596
title: "PagerDuty API",
8697
href: "/en/resources/integrations/development/pagerduty-api",
98+
type: "arcade_starter",
8799
},
88-
"posthog-api": {
100+
{
101+
slug: "posthog-api",
89102
title: "PostHog API",
90103
href: "/en/resources/integrations/development/posthog-api",
104+
type: "arcade_starter",
91105
},
92-
pylonapi: {
106+
{
107+
slug: "pylonapi",
93108
title: "PylonApi",
94109
href: "/en/resources/integrations/development/pylonapi",
110+
type: "arcade_starter",
95111
},
96-
"vercel-api": {
112+
{
113+
slug: "vercel-api",
97114
title: "Vercel API",
98115
href: "/en/resources/integrations/development/vercel-api",
116+
type: "arcade_starter",
99117
},
100-
};
101-
102-
export default meta;
118+
]);
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import type { MetaRecord } from "nextra";
1+
import { createCategoryMeta } from "../create-category-meta";
22

3-
const meta: MetaRecord = {
4-
imgflip: {
3+
export default createCategoryMeta([
4+
{
5+
slug: "imgflip",
56
title: "Imgflip",
67
href: "/en/resources/integrations/entertainment/imgflip",
8+
type: "arcade",
79
},
8-
spotify: {
10+
{
11+
slug: "spotify",
912
title: "Spotify",
1013
href: "/en/resources/integrations/entertainment/spotify",
14+
type: "arcade",
1115
},
12-
};
13-
14-
export default meta;
16+
]);

0 commit comments

Comments
 (0)