typed-path-generator

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

Usage no npm install needed!

<script type="module">
  import typedPathGenerator from 'https://cdn.skypack.dev/typed-path-generator';
</script>

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, handling path 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:

yarn add typed-path-generator

or via npm:

npm install typed-path-generator

Config paths

typed-path-generator using YAML as configuration file. Here's an example:

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:

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

furthermore, you can use glob patterns to specify a group of configuration files:

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