Skip to content
Draft
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
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/components/SdkReferenceLinkByFramework.mdx
67 changes: 0 additions & 67 deletions src/components/SdkReferenceLinkByFramework.astro

This file was deleted.

68 changes: 68 additions & 0 deletions src/components/SdkReferenceLinkByFramework.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{/**
* @import { FrameworkKey, IntegrationKey } from "@/lib/prefs";
*/}

import SlotByFramework from "@/components/SlotByFramework";
import { frameworkToIntegration, frameworks } from "@/lib/prefs";
import { LinkCard } from "@astrojs/starlight/components";

{/**
* List of frameworks that have SDK reference guides for their integrations.
*
* @type {Array<FrameworkKey>}
*/}
export const documented = [
"astro",
"bun-hono",
"bun",
"deno",
"fastify",
"nest-js",
"next-js",
"node-js-express",
"node-js-hono",
"node-js",
"nuxt",
"react-router",
"remix",
"sveltekit",
]

{/**
* @type {Record<IntegrationKey, string>}
*/}
export const pathOverwrites = {
"nest-js": "nestjs",
"next-js": "nextjs",
"node-js": "nodejs"
}

<SlotByFramework client:load>
{
frameworks.map(function (framework) {
/** @type {IntegrationKey} */
const integration = Object.hasOwn(frameworkToIntegration, framework.key) ? frameworkToIntegration[framework.key] : framework.key;
const info = frameworks.find(function (d) {
return d.key === integration;
});
if (!info) throw new Error('Cannot find integration `' + integration + '`');

if (!documented.includes(framework.key)) {
console.warn('Missing reference guide for `%s`; if it exists, add it to `documented` in `SdkReferenceLinkByFramework.mdx`', framework.key);
return;
}

/** @type {string} */
const pathname = Object.hasOwn(pathOverwrites, integration) ? pathOverwrites[integration] : integration;

return (
<LinkCard
description={`${info.label} SDK reference guide.`}
href={`/reference/${pathname}`}
slot={framework.key}
title="SDK reference"
/>
)
})
}
</SlotByFramework>
2 changes: 1 addition & 1 deletion src/content/docs/bot-protection/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ import FrameworkName from "@/components/FrameworkName";
import FAQs from "/src/components/FAQs.astro";
import FrameworkLinks from "@/components/FrameworkLinks";
import Comments from "/src/components/Comments.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import AstroStep1 from "@/snippets/shared/astro/InstallWithInspect.mdx";
import AstroStep2 from "@/snippets/get-started/astro/Step2.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/email-validation/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ ajToc:
---

import { LinkCard, CardGrid } from "@astrojs/starlight/components";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";
import WhatIsArcjet from "/src/components/WhatIsArcjet.astro";
import FrameworkLinks from "@/components/FrameworkLinks";
import SlotByFramework from "@/components/SlotByFramework";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/filters/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ title: "Filters"
import { CardGrid, LinkCard } from "@astrojs/starlight/components";
import Comments from "/src/components/Comments.astro";
import Faqs from "/src/components/FAQs.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";
import WhatIsArcjet from "/src/components/WhatIsArcjet.astro";
import SlotByFramework from "@/components/SlotByFramework";
import FrameworkLinks from "@/components/FrameworkLinks";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/get-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import FrameworkLinks from "@/components/FrameworkLinks";
import { LinkButton, LinkCard, CardGrid } from "@astrojs/starlight/components";
import FAQs from "/src/components/FAQs.astro";
import WhatIsArcjet from "/src/components/WhatIsArcjet.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";
import { YouTube } from "astro-embed";

import AstroStep0 from "@/snippets/get-started/astro/Step0.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/nosecone/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import SlotByFramework from "@/components/SlotByFramework";
import { frameworks } from "@/lib/prefs";
import { LinkCard, CardGrid } from "@astrojs/starlight/components";
import Comments from "/src/components/Comments.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import BunStep1 from "@/snippets/nosecone/quick-start/bun/Step1.mdx";
import BunStep2 from "@/snippets/nosecone/quick-start/bun/Step2.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/rate-limiting/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ import FrameworkLinks from "@/components/FrameworkLinks";
import FAQs from "@/components/FAQs.astro";
import Comments from "@/components/Comments.astro";
import { frameworks } from "@/lib/prefs";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import BunStep1 from "@/snippets/rate-limiting/quick-start/bun/Step1.mdx";
import BunStep2 from "@/snippets/rate-limiting/quick-start/bun/Step2.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/redact/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import FAQs from "/src/components/FAQs.astro";
import QuickStartRedact from "/src/snippets/redact/QuickStartRedact.ts?raw";
import QuickStartUnredact from "/src/snippets/redact/QuickStartUnredact.ts?raw";
import Comments from "/src/components/Comments.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

The Arcjet Redaction library makes it easy to redact sensitive information
locally.
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/sensitive-info/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import FrameworkName from "@/components/FrameworkName";
import { frameworks } from "@/lib/prefs";
import FAQs from "/src/components/FAQs.astro";
import Comments from "/src/components/Comments.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import Step1Bun from "@/snippets/sensitive-info/quick-start/bun/Step1.mdx";
import Step1NestJs from "@/snippets/sensitive-info/quick-start/nestjs/Step1.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/shield/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ import { CardGrid, LinkCard } from "@astrojs/starlight/components";
import Comments from "/src/components/Comments.astro";
import FAQs from "/src/components/FAQs.astro";
import WhatIsArcjet from "/src/components/WhatIsArcjet.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import Step1Bun from "@/snippets/shield/quick-start/bun/Step1.mdx";
import Step3Bun from "@/snippets/shield/quick-start/bun/Step3.mdx";
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/signup-protection/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import SlotByFramework from "@/components/SlotByFramework";
import FrameworkLinks from "@/components/FrameworkLinks";
import FrameworkName from "@/components/FrameworkName";
import { frameworks } from "@/lib/prefs";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.astro";
import SdkReferenceLinkByFramework from "/src/components/SdkReferenceLinkByFramework.mdx";

import Step1Bun from "@/snippets/signup-protection/quick-start/bun/Step1.mdx";
import Step1NestJs from "@/snippets/signup-protection/quick-start/nestjs/Step1.mdx";
Expand Down
18 changes: 18 additions & 0 deletions src/lib/prefs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ export type FrameworkLabel = Framework["label"];
*/
export type Framework = (typeof frameworks)[number];

/**
* Integration keys.
*/
export type IntegrationKey = Exclude<
FrameworkKey,
"bun-hono" | "node-js-express" | "node-js-hono"
>;

/**
* The available user prefs
* Defines the user preferences that are persisted.
Expand Down Expand Up @@ -63,6 +71,16 @@ export const frameworks = [
{ key: "sveltekit", label: "SvelteKit" },
] as const;

/**
* Some framework choices add some third party onto another framework.
* These are mapped here.
*/
export const frameworkToIntegration = {
"bun-hono": "bun",
"node-js-express": "node-js",
"node-js-hono": "node-js",
} as const;

/**
* Default Selected Framework
* The framework selected by default if the user didn't make a choice.
Expand Down