Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gatehill/imposter-js-types
TypeScript types for Imposter scripts.
https://github.com/gatehill/imposter-js-types
imposter javascript mocks openapi typescript
Last synced: 18 days ago
JSON representation
TypeScript types for Imposter scripts.
- Host: GitHub
- URL: https://github.com/gatehill/imposter-js-types
- Owner: gatehill
- Created: 2021-09-30T19:38:06.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-16T07:11:57.000Z (3 months ago)
- Last Synced: 2024-11-19T19:25:13.211Z (about 1 month ago)
- Topics: imposter, javascript, mocks, openapi, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@imposter-js/types
- Size: 107 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Imposter TypeScript types
- Code autocompletion for your [Imposter](https://github.com/outofcoffee/imposter) JavaScript or TypeScript scripts.
- ES6 and TypeScript support.## Getting started
The types are published as an [npm package](https://www.npmjs.com/package/@imposter-js/types).
The fastest way to get started is to clone this repository and copy one of the [sample](./samples) projects:
- JavaScript: [imposter-sample-javascript](./samples/imposter-sample-javascript)
- TypeScript: [imposter-sample-typescript](./samples/imposter-sample-typescript)These samples are preconfigured to transpile and bundle source files down to a single JS file. This can be referenced as the `scriptFile` in your Imposter mock config.
> Note: just update the dependency for `@imposter-js/types` in the `package.json` to the latest from [npmjs.com](https://www.npmjs.com/package/@imposter-js/types)
In the sample project, bundle your script:
npm run build
In the `dist` directory you will have two files:
```
$ ls
bundle.js
mock-config.yaml
```This is a valid Imposter configuration - just run `imposter up`
> Install [Imposter CLI](https://github.com/gatehill/imposter-cli) if you don't already have it.
Start your mock:
$ imposter up
...
Mock server up and running on http://localhost:8080Hit it:
$ curl http://localhost:8080
{ "name": "Ada Lovelace" }The name is dynamically chosen from a list by the script.
Also notice the log output in Imposter:
DEBUG ... Executed script 'dist/bundle.js' for request: GET http://localhost:8080/ in 6.34ms
## Worked example
This example shows the process in more detail.
Note - this example assumes you know how to set up a bundler/transpiler to emit a single JS file. For a working configuration you can copy see the [sample projects](./samples).
### Prerequisites
- Node.js
- A bundler such as webpack
- Recommended: Install [Imposter CLI](https://github.com/gatehill/imposter-cli)### Steps
Add the types to your Node.js module as a dev dependency:
npm install @imposter-js/types --save-dev
Import the types in your Imposter scripts:
import {context, logger, respond} from "@imposter-js/types"
Use the objects to write your script, with code autocompletion in your editor/IDE:
```js
logger.info(`Received request: ${context.request}`)const request = context.request
const body = JSON.stringify({
"name": "Ada Lovelace",
})respond()
.withStatusCode(200)
.withData(body)
```Bundle your script:
npm run build
In the `dist` directory you will have two files:
```
$ ls
bundle.js
mock-config.yaml
```This is a valid Imposter configuration - just run `imposter up`
> Install [Imposter CLI](https://github.com/gatehill/imposter-cli) if you don't already have it.
Start your mock:
$ imposter up
...
Mock server up and running on http://localhost:8080Hit it:
$ curl http://localhost:8080
{ "name": "Ada Lovelace" }Also notice the log output in Imposter:
DEBUG ... Executed script 'dist/bundle.js' for request: GET http://localhost:8080/ in 6.34ms
### Next steps
Because we use a bundler, you can split your scripts across multiple files.
See the `src` directory of the [sample projects](./samples) for an example.
## Related
- [Imposter Mock Engine](https://github.com/outofcoffee/imposter)
- [Imposter JS](https://github.com/gatehill/imposter-js)