@netacea/vercel
TypeScript icon, indicating that this package has built-in type declarations

0.1.11 • Public • Published

Netacea Vercel

Netacea Header

TypeScript

@netacea/vercel is a package designed to add Netacea functionality to Vercel edge middleware.

This package has been released for Beta testing and interfaces may change without warning.

Installation

Within your Vercel project, run:

npm i @netacea/vercel

Netacea Config

This integration is best configured using Vercel environment variables.

Please consult the following table for the environment variables which must be set. The Netacea Solutions Engineering team can assist in providing this config.

Name Description
NETACEA_COOKIE_NAME Name of the Netacea session cookie.
NETACEA_CAPTCHA_COOKIE_NAME Name of the Netacea captcha cookie.
NETACEA_PROTECTOR_API_URL URL for the Netacea Protector API.
NETACEA_PROTECTION_MODE The Protection Mode for the integration.

The following variables should be set as sensitive:

Name Description
NETACEA_API_KEY API Key to contact Netacea services.
NETACEA_COOKIE_ENCRYPTION_KEY Key used to secure the session cookie.
NETACEA_SECRET_KEY Additional key for securing the session cookie.
NETACEA_KINESIS_ACCESS_KEY Key to write to Netacea Kinesis ingest.
NETACEA_KINESIS_SECRET_KEY Key to write to Netacea Kinesis ingest.
NETACEA_KINESIS_STREAM_NAME Name of the stream to write ingested logs.

Middleware Setup

The following code should be placed in the middleware.ts file within your project:

import { NextRequest, NextResponse } from 'next/server'
import { waitUntil } from '@vercel/functions'
import {
  NetaceaVercelIntegration,
  getNetaceaArgsFromEnv,
  type NetaceaVercelIntegrationArgs
} from '@netacea/vercel'

let netaceaWorker: NetaceaVercelIntegration | undefined = undefined

export default async function middleware(req: NextRequest) {
  try {
    /**
     * Initialize the Netacea worker.
     */
    if (netaceaWorker === undefined) {
      netaceaWorker = new NetaceaVercelIntegration({
        ...getNetaceaArgsFromEnv(process.env)
      } as NetaceaVercelIntegrationArgs)
    }

    // Run Netacea integration
    const event = { request: req }
    const netaceaResult = await netaceaWorker.run(event, originRequest)

    // Asynchronously ingest the Netacea result, without adding latency to the request
    waitUntil(netaceaWorker.ingest(req, netaceaResult))

    return netaceaResult.response
  } catch (error) {
    console.error("Netacea Middleware Error:", error)
    return NextResponse.next()
  }
}

async function originRequest(request: Request): Promise<NextResponse> {
  return NextResponse.next({
    headers: request.headers
  })
}

Readme

Keywords

none

Package Sidebar

Install

npm i @netacea/vercel

Weekly Downloads

201

Version

0.1.11

License

ISC

Unpacked Size

64 kB

Total Files

4

Last publish

Collaborators

  • netacea