UNPKG

private-registry-mock

Version:

Simple mocked server and package of an npm private registry.

172 lines (100 loc) 4.35 kB
# private-registry-mock Simple mocked server and package of an npm private registry. Inspired by [`mock-private-registry`](https://github.com/rexxars/mock-private-registry). ## Install ```sh npm install --save-dev private-registry-mock ``` <details> <summary>Other Package Managers</summary> ```sh yarn add --dev private-registry-mock ``` </details> ## Usage This package exports a function that starts a server and exposes an endpoint for the given package name, returning a JSON object with a mock of the [package's metadata](https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md) from the npm registry. The default route is shown below: ```ts import mockPrivateRegistry from "private-registry-mock"; import ky from "ky"; const server = await mockPrivateRegistry(); const response = await ky.get("http://localhost:63142/@mockscope%2Ffoobar", { headers: { authorization: "Bearer SecretToken" } }).json(); console.log(response); //=> { name: "@mockscope/foobar", ... } await server.close(); ``` Also exposes a health-check endpoint at `/` for testing connectivity: ```ts import mockPrivateRegistry from "private-registry-mock"; import ky from "ky"; const server = await mockPrivateRegistry(); const response = await ky.get("http://localhost:63142/").json(); console.log(response); //=> { message: "Connected!" } await server.close(); ``` ## API ### mockPrivateRegistry(packageName) ### mockPrivateRegistry(options?) Returns a `Promise<object>` with the computed server [options](#options) and: - `close()`: - Gracefully closes the server. Returns a [`Promise<TerminationResponse>`](#terminationresponse). #### packageName Type: `string`\ Default: `"@mockscope/foobar"` The name of the mocked package. Determines the route of the server. Names are soft encoded, preserving `@`s but escaping all other special characters via [`encodeURIComponent`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) (i.e. `/` becomes `%2F`). #### options Type: `object` Options for the server to use while mocking. ##### port Type: `number`\ Default: `63142 | 63143 | 63144`, in order of availability. The port to listen on. If not provided, attempts to use a set of default ports, and falls back to a random port if unavailable. ##### hostname Type: `string`\ Default: `"localhost"` The hostname to listen on. ##### token Type: `object`\ Default: `{ type: "bearer", value: "SecretToken" }` The authentication type and token to use. ###### type Type: `"bearer" | "basic"`\ Default: `"bearer"` The type of authentication to use. ###### value Type: `string`\ Default: `"SecretToken"` The token to use for authentication. ##### package Type: `object`\ Default: `{ name: "@mockscope/foobar", version: "1.0.0" }` Information about the mocked package. Determines the route of the server. Names are soft encoded, preserving `@`s but escaping all other special characters via [`encodeURIComponent`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) (i.e. `/` becomes `%2F`). ###### name Type: `string`\ Default: `"@mockscope/foobar"` The name of the mocked package. Determines the route of the server. ###### version Type: `string`\ Default: `"1.0.0"` The version of the mocked package. ### TerminationResponse Internally, [`lil-http-terminator`](https://github.com/flash-oss/lil-http-terminator) is used to gracefully close the server. #### code Type: `"TIMED_OUT" | "SERVER_ERROR" | "TERMINATED" | "INTERNAL_ERROR"` Termination state. #### success Type: `boolean` Whether or not the server was successfully closed. #### message Type: `string` Termination or error message. #### error Type: `Error | undefined` If termination fails, the error that caused it. ## Related - [mock-private-registry](https://github.com/rexxars/mock-private-registry) - Mock of a private npm registry, useful for testing npm-related stuff. - [@probablyup/mock-private-registry](https://github.com/quantizor/mock-private-registry) - Mock of a private npm registry, useful for testing npm-related stuff. This is a fork of "mock-private-registry" with support for mocking multiple packages. - [package-json](https://github.com/sindresorhus/package-json) - Get metadata of a package from the npm registry.