An open API service indexing awesome lists of open source software.

https://github.com/leetcode-opensource/typed-path-generator

🏇 A more effective way to handle path parameters, which works perfectly with Typescript
https://github.com/leetcode-opensource/typed-path-generator

Last synced: 7 months ago
JSON representation

🏇 A more effective way to handle path parameters, which works perfectly with Typescript

Awesome Lists containing this project

README

          

🏇 typed-path-generator


Convert path /user/:userID to (params: { userID: string | number }) => string




GitHub license


PRs Welcome


code style: prettier


npm version

With [Typescript](https://typescriptlang.org/), handling [path parameters](https://github.com/pillarjs/path-to-regexp#parameters) could be very frustrating. Because there is no type checking for path parameters which is only a `string` type, we have to define it manually in an error-prone way. To free us from those work, `typed-path-generator` was created. By pre-processing the path string, `typed-path-generator` will extract the type info from path parameters and generate a well defined Typescript file.

## Quick Start

### Install

using [yarn](https://yarnpkg.com/):

```bash
yarn add typed-path-generator
```

or via [npm](https://docs.npmjs.com):

```bash
npm install typed-path-generator
```

### Config paths

`typed-path-generator` using [YAML](https://yaml.org) as configuration file. Here's an example:

```yaml
options:
variableName:
# Used to customize the export variables of generated file.
# import { path, to } from './generated-file.ts'

# Optional, default is `staticPath`
staticPath: path
# Optional, default is `pathFactory`
pathFactory: to
# Optional, default is `ParamsInterface`
ParamsInterface: Params

paths:
# type URL = string // any valid URL path that path-to-regexp understands. see https://github.com/pillarjs/path-to-regexp for more details.
# interface Paths {
# [key: string]: URL | Paths
# }
user: /user/:userID
settings:
emails: /settings/emails
discuss:
list: /discuss
detail: /discuss/:discussID
```

### Generate code

run `typed-path-generator` to generate a relative typescript file:

```bash
typed-path-generator ./your-config-file.yaml
```

furthermore, you can use **[glob patterns]()** to specify a group of configuration files:

```bash
typed-path-generator ./packages/**/route.yaml
```

##### Options:

```
-V, --version output the version number
-P, --prettier [path] specify the config path of Prettier
-h, --help output usage information
```