JSPM

  • Created
  • Published
  • Downloads 276
  • Score
    100M100P100Q88855F
  • License Apache-2.0

Arcjet SDK for Deno

Package Exports

  • @arcjet/deno
  • @arcjet/deno/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@arcjet/deno) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Arcjet Logo

@arcjet/deno

npm badge

Arcjet helps developers protect their apps in just a few lines of code. Implement rate limiting, bot protection, email verification & defense against common attacks.

This is the Arcjet SDK for Deno.

What is this?

This is our adapter to integrate Arcjet into Deno. Arcjet helps you secure your Deno server. This package exists so that we can provide the best possible experience to Deno users.

When should I use this?

You can use this if you are using Deno. See our Get started guide for other supported runtimes.

Example

Try an Arcjet protected Next.js app live at example.arcjet.com (source code). See arcjet/example-deno for a Deno example.

Install

This package is ESM only. Install with Deno:

deno install npm:@arcjet/deno

Use

import "jsr:@std/dotenv/load";
import arcjet, { shield } from "npm:@arcjet/deno";

// Get your Arcjet key at <https://app.arcjet.com>.
// Set it as an environment variable instead of hard coding it.
const arcjetKey = Deno.env.get("ARCJET_KEY");

if (!arcjetKey) {
  throw new Error("Cannot find `ARCJET_KEY` environment variable");
}

const aj = arcjet({
  key: arcjetKey,
  rules: [
    // Shield protects your app from common attacks.
    // Use `DRY_RUN` instead of `LIVE` to only log.
    shield({ mode: "LIVE" }),
  ],
});

Deno.serve(
  aj.handler(async function (request: Request) {
    const decision = await aj.protect(request);

    if (decision.isDenied()) {
      return Response.json({ message: "Forbidden" }, { status: 403 });
    }

    return Response.json({ message: "Hello world" });
  }),
);

For more on how to configure Arcjet with Deno and how to protect Deno, see the Arcjet Deno SDK reference on our website.

Test

This monorepo is tested with Node.js but this package targets Deno. Run the tests from this package folder with:

deno test test/index.test.ts --allow-env --allow-net --no-check

License

Apache License, Version 2.0 © Arcjet Labs, Inc.