open-index/open-npm huggingface dataset:
npm package: @jmcg/tiny-local-http-server
Description: Rudimentary HTTP server for serving local files via the loopback interface
Author: John McIntyre Grimau
Latest version: 1.0.0

# `@jmcg/tiny-local-http-server`

A rudimentary HTTP server for when you just need to serve a few static files out
of a directory tree on your local machine.  No external dependencies; only
`node` builtins.  The server listens on the IPv6 loopback address (`::1`).

## CLI

```
tiny-local-http-server [port] [directory]
```

The default port number is zero, which causes the operating system to assign an
arbitrary unused port.  The default directory is the current working directory;
otherwise, the process will `chdir()` into the given directory before starting
the server.

The following signals are handled:

- `SIGUSR2`: Print working directory and port number.
- `SIGINT`: Wait for the server to stop, then terminate the process.
- `SIGTERM`: Wait for the server to stop, then terminate the process.
- `SIGTSTP`: Wait for the server to stop, then suspend the process.
- `SIGCONT`: If the server was stopped, start it again.
- `SIGQUIT`: Print a warning, then terminate the process immediately.

## API

```javascript
import TinyLocalHTTPServer from "@jmcg/tiny-local-http-server";
const server = new TinyLocalHTTPServer();
await server.start();
console.log(server.rootURL);
```

### Constructor

`new TinyLocalHTTPServer(options)`

- **`options`:**
  - **`port`:** The number of the port on which the server should listen.
    Omitting this option, or providing a value of `0`, `null`, or `undefined`,
    will cause the operating system to assign an arbitrary unused port.
  - Additional options are passed to [the `node.js` `http.Server` constructor](https://nodejs.org/api/http.html#class-httpserver).

### Properties

- **`rootURL`:** A `URL` object which always has `"http"` as its scheme,
  `"\[::1\]"` as its hostname, and an empty path.  After the server has been
  started, the `port` property will reflect the number of the port on which the
  server is listening; if the port is 80 (the default port number for the HTTP
  protocol), `port` will be an empty string.

### Methods

- **`async start()`:** Start the server and wait for it to start listening.  If
  this method is called again before its `Promise` has resolved, it will return
  the same `Promise` each time.  If this method is called while waiting for the
  server to stop, the `Promise` from `stop()` will be rejected.
- **`async stop()`:** Stop the server and wait for it to close all its open
  connections.  If this method is called again before its `Promise` has
  resolved, it will return the same `Promise` each time.  If this method is
  called while waiting for the server to start, the `Promise` from `start()`
  will be rejected.

## License

This package is released under
[the Creative Commons Attribution 4.0 International (CC-BY-4.0) license](LICENSE.txt).