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
- Host: GitHub
- URL: https://github.com/leetcode-opensource/typed-path-generator
- Owner: LeetCode-OpenSource
- License: mit
- Created: 2019-03-06T09:53:12.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-04-07T09:50:57.000Z (over 2 years ago)
- Last Synced: 2025-04-18T21:41:42.604Z (8 months ago)
- Language: TypeScript
- Homepage:
- Size: 980 KB
- Stars: 7
- Watchers: 4
- Forks: 2
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
🏇 typed-path-generator
Convert path /user/:userID to (params: { userID: string | number }) => string
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
```