JSPM

  • Created
  • Published
  • Downloads 40905
  • Score
    100M100P100Q165224F
  • License Apache-2.0

Arcjet TypeScript and JavaScript SDK core

Package Exports

  • arcjet
  • arcjet/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) 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

npm badge

Arcjet helps developers protect their apps. Installed as an SDK, it provides a set of core primitives such as rate limiting and bot protection. These can be used independently or combined to create a set of layered defenses, such as signup form protection.

This is the Arcjet TypeScript and JavaScript SDK core.

Getting started

Visit docs.arcjet.com to get started.

Generally, you'll want to use the Arcjet SDK for your specific framework, such as @arcjet/next for Next.js. However, this package can be used to interact with Arcjet if your framework does not have an integration.

Installation

npm install -S arcjet

Example

import http from "http";
import arcjet, { createRemoteClient, defaultBaseUrl } from "arcjet";
import { createConnectTransport } from "@connectrpc/connect-node";

const aj = arcjet({
  key: "ajkey_mykey",
  rules: [],
  client: createRemoteClient({
    transport: createConnectTransport({
      baseUrl: defaultBaseUrl(),
      httpVersion: "1.1",
    }),
  }),
});

const server = http.createServer(async function (
  req: http.IncomingMessage,
  res: http.ServerResponse,
) {
  // Construct an object with Arcjet request details
  const details = {
    ip: req.socket.remoteAddress,
  };

  const decision = await aj.protect(details);

  if (decision.isDenied()) {
    res.writeHead(403, { "Content-Type": "application/json" });
    res.end(JSON.stringify({ error: "Forbidden" }));
  } else {
    res.writeHead(200, { "Content-Type": "application/json" });
    res.end(JSON.stringify({ data: "Hello World!" }));
  }
});

server.listen(8000);

API

Reference documentation is available at docs.arcjet.com.

License

Licensed under the Apache License, Version 2.0.