@layer0/core

4.20.0 • Public • Published

Overview

Core library for the Layer0, infrastructure to run your big, dynamic website frontend and make it load in less than one second.

The @layer0/core package provides a CDN-as-JavaScript API for defining edge routing and logic on Layer0.

Example Routes File

// routes.js

import { Router } from '@layer0/core/router'
import { createNextPlugin } = from '@layer0/next'
import { renderNextPage, nextRoutes } from '@layer0/next'

export default new Router()
  // redirect at edge
  .match('/some/path/:withVar', async ({ redirect }) => {
    redirect('/some/other/path/:withVar', { statusCode: 301 })
  })

  // proxy the legacy site
  .match('/some/path/:withVar', async ({ proxy }) => {
    proxy('legacy', {
      path: '/some/other/path/:withVar',
    })
  })

  // match based on header and proxy the legacy site
  .match({ headers: { 'layer0-device-type': /desktop/ } }, async ({ proxy }) => {
    proxy('legacy')
  })

  // vanity URL for next.js
  .match('/some/vanity/url/:productId', res => {
    renderNextPage('/p/[productId]', res)
  })

  // Send a synthetic html response
  .match('/static-html', ({ setResponseHeader, send }) => {
    setResponseHeader('Content-Type', 'text/html; charset=UTF-8')
    send('<html><body><h1>Hello world!</h1></body></html>', 200)
  })

  // match Next.js routes based on the pages directory
  .use(nextRoutes)

  // fall back to proxying the legacy site
  .fallback(({ proxy }) => proxy('legacy'))

Readme

Keywords

none

Package Sidebar

Install

npm i @layer0/core

Weekly Downloads

192

Version

4.20.0

License

UNLICENSED

Unpacked Size

1.22 MB

Total Files

267

Last publish

Collaborators

  • moovweb-admin