Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tommy-mitchell/private-registry-mock
Simple mocked server and package of an npm private registry.
https://github.com/tommy-mitchell/private-registry-mock
Last synced: 8 days ago
JSON representation
Simple mocked server and package of an npm private registry.
- Host: GitHub
- URL: https://github.com/tommy-mitchell/private-registry-mock
- Owner: tommy-mitchell
- License: mit
- Created: 2024-02-20T07:09:39.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-02-23T17:07:42.000Z (9 months ago)
- Last Synced: 2024-05-11T10:08:45.028Z (6 months ago)
- Language: TypeScript
- Homepage: https://npm.im/private-registry-mock
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
# 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
```Other Package Managers
```sh
yarn add --dev private-registry-mock
```## 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` with the computed server [options](#options) and:
- `close()`: - Gracefully closes the server. Returns a [`Promise`](#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.