15.3.1 • Published 10 months ago

@jsenv/server v15.3.1

Weekly downloads
248
License
MIT
Repository
github
Last release
10 months ago

server npm package

@jsenv/server helps to write flexible server code with a declarative API.

import { startServer } from "@jsenv/server";

await startServer({
  port: 8080,
  services: [
    {
      handleRequest: () => {
        return {
          status: 200,
          headers: {
            "content-type": "text/plain",
          },
          body: "Hello world",
        };
      },
    },
  ],
});

Examples

Code starting a server with 2 request handlers:

/*
 * starts a server which:
 * - when requested at "/"
 *   -> respond with 200
 * - otherwise
 *   -> respond with 404
 */
import { startServer, composeServices } from "@jsenv/server";

const server = await startServer({
  services: [
    {
      name: "index",
      handleRequest: (request) => {
        if (request.resource === "/") {
          return { status: 200 };
        }
        return null;
      },
    },
    {
      name: "otherwise",
      handleRequest: () => {
        return { status: 404 };
      },
    },
  ],
});

const fetch = await import("node-fetch");
const responseForOrigin = await fetch(server.origin);
responseForOrigin.status; // 200

const responseForFoo = await fetch(`${server.origin}/foo`);
responseForFoo.status; // 404

Code starting a server in https:

import { readFileSync } from "node:fs";
import { startServer } from "@jsenv/server";

await startServer({
  https: {
    certificate: readFileSync(new URL("./server.crt", import.meta.url), "utf8"),
    privateKey: readFileSync(new URL("./server.key", import.meta.url), "utf8"),
  },
  allowHttpRequestOnHttps: true,
  services: [
    {
      handleRequest: (request) => {
        const clientUsesHttp = request.origin.startsWith("http:");

        return {
          status: 200,
          headers: {
            "content-type": "text/plain",
          },
          body: clientUsesHttp ? `Welcome http user` : `Welcome https user`,
        };
      },
    },
  ],
});

Code starting a server for static files:

import { startServer, fetchFileSystem } from "@jsenv/server";

await startServer({
  services: [
    {
      handleRequest: async (request) => {
        const fileUrl = new URL(request.resource.slice(1), import.meta.url);
        const response = await fetchFileSystem(fileUrl, request);
        return response;
      },
    },
  ],
});

Documentation

Installation

npm install @jsenv/server
15.2.19

10 months ago

15.2.17

11 months ago

15.2.18

11 months ago

15.2.15

11 months ago

15.2.16

11 months ago

15.2.13

11 months ago

15.2.14

11 months ago

15.2.11

11 months ago

15.2.12

11 months ago

15.2.10

11 months ago

15.3.0

10 months ago

15.3.1

10 months ago

15.2.4

12 months ago

15.2.5

12 months ago

15.2.3

12 months ago

15.2.8

11 months ago

15.2.9

11 months ago

15.2.6

12 months ago

15.2.7

11 months ago

15.2.1

1 year ago

15.2.2

1 year ago

15.2.0

1 year ago

15.1.1

2 years ago

15.1.2

2 years ago

15.1.0

2 years ago

15.1.5

2 years ago

15.1.6

2 years ago

15.1.3

2 years ago

15.1.4

2 years ago

15.1.7

2 years ago

15.1.8

2 years ago

15.0.3

2 years ago

15.0.4

2 years ago

15.0.2

2 years ago

15.0.0

2 years ago

15.0.1

2 years ago

14.1.16

2 years ago

14.1.10

3 years ago

14.1.14

2 years ago

14.1.13

2 years ago

14.1.12

2 years ago

14.1.11

3 years ago

14.1.15

2 years ago

14.1.8

3 years ago

14.1.9

3 years ago

14.1.7

3 years ago

14.1.3

3 years ago

14.1.4

3 years ago

14.1.5

3 years ago

14.1.6

3 years ago

14.1.0

3 years ago

14.1.1

3 years ago

14.1.2

3 years ago

12.8.0

3 years ago

13.0.0

3 years ago

12.7.0

3 years ago

12.7.1

3 years ago

12.7.2

3 years ago

12.7.3

3 years ago

12.7.4

3 years ago

12.7.5

3 years ago

13.1.0

3 years ago

14.0.0

3 years ago

12.6.1

3 years ago

12.6.2

3 years ago

12.6.3

3 years ago

12.6.0

3 years ago

12.5.9

3 years ago

12.5.3

3 years ago

12.5.4

3 years ago

12.5.5

3 years ago

12.5.6

3 years ago

12.5.7

3 years ago

12.5.8

3 years ago

12.4.0

3 years ago

12.4.1

3 years ago

12.4.2

3 years ago

12.3.0

3 years ago

12.3.1

3 years ago

12.3.2

3 years ago

12.3.3

3 years ago

12.5.2

3 years ago

12.5.0

3 years ago

10.0.5

4 years ago

10.0.6

4 years ago

10.0.7

4 years ago

10.0.8

4 years ago

10.0.9

4 years ago

10.0.1

4 years ago

10.0.2

4 years ago

10.0.3

4 years ago

10.0.4

4 years ago

12.0.0

4 years ago

10.0.11

4 years ago

10.2.0

4 years ago

10.2.1

4 years ago

12.2.1

3 years ago

12.2.0

4 years ago

11.0.0

4 years ago

10.1.4

4 years ago

10.1.5

4 years ago

10.1.6

4 years ago

10.1.0

4 years ago

10.1.1

4 years ago

10.1.2

4 years ago

10.1.3

4 years ago

12.1.0

4 years ago

10.0.0

4 years ago

9.0.1

4 years ago

9.0.0

4 years ago

9.2.4

4 years ago

9.2.3

4 years ago

9.2.2

4 years ago

9.2.1

4 years ago

9.1.1

4 years ago

9.1.0

4 years ago

9.2.0

4 years ago

7.3.1

4 years ago

7.3.0

4 years ago

8.0.0

4 years ago

7.2.0

4 years ago

7.1.0

4 years ago

6.2.0

4 years ago

7.0.0

4 years ago

6.1.1

4 years ago

6.1.0

4 years ago

6.0.3

4 years ago

6.0.2

4 years ago

6.0.1

4 years ago

6.0.0

4 years ago

5.6.0

4 years ago

5.5.0

4 years ago

5.4.2

4 years ago

5.4.1

4 years ago

5.4.0

4 years ago

5.3.0

4 years ago

5.2.3

4 years ago

5.2.2

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.0

5 years ago

5.0.0

5 years ago

4.2.3

5 years ago

4.2.2

5 years ago

4.2.1

5 years ago

4.2.0

5 years ago

4.1.2

5 years ago

4.1.1

5 years ago

4.1.0

5 years ago

4.0.9

5 years ago

4.0.8

5 years ago

4.0.7

5 years ago

4.0.6

5 years ago

4.0.5

5 years ago

4.0.4

5 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

3.0.0-alpha.8

5 years ago

3.0.0

5 years ago

3.0.0-alpha.7

5 years ago

3.0.0-alpha.6

5 years ago

3.0.0-alpha.5

5 years ago

3.0.0-alpha.4

5 years ago

3.0.0-alpha.3

5 years ago

3.0.0-alpha.2

5 years ago

3.0.0-alpha.1

5 years ago

3.0.0-alpha.0

5 years ago

2.11.0

5 years ago

2.10.1

5 years ago

2.10.0

5 years ago

2.9.0

5 years ago

2.7.2

5 years ago

2.8.0

5 years ago

2.9.1

5 years ago

2.7.0

5 years ago

2.7.1

5 years ago

2.6.0

5 years ago

2.5.2

5 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.3.1

5 years ago

2.3.0

5 years ago

2.2.0

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.6.1

5 years ago

1.6.0

5 years ago

1.6.0-alpha.1

5 years ago

1.6.0-alpha.0

5 years ago

1.5.9

5 years ago

1.5.8

5 years ago

1.5.7

5 years ago

1.5.6

5 years ago

1.5.5

5 years ago

1.5.3

5 years ago

1.5.2

5 years ago

1.5.1

5 years ago

1.5.0

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago