Skip to main content

path-to-regexp-v8-migration

Migrate @data-client/rest path strings from path-to-regexp v6 to v8 syntax. Use when upgrading path-to-regexp, updating RestEndpoint.path or resource path strings, or when seeing errors about unexpected ?, +, (, or ) in paths.

Informations de source

Dépôt
reactive/data-client
Dernière activité de la source
19 août 2026 à 17:11
Langue détectée de SKILL.md
anglais
Étoiles
2 037
Forks
99

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
path-to-regexp-v8-migration
description
Migrate @data-client/rest path strings from path-to-regexp v6 to v8 syntax. Use when upgrading path-to-regexp, updating RestEndpoint.path or resource path strings, or when seeing errors about unexpected ?, +, (, or ) in paths.
# path-to-regexp v6 → v8 Migration Applies to `path` in `RestEndpoint`, `resource()`, and any string passed to path-to-regexp. Reference: [path-to-regexp README errors section](https://github.com/pillarjs/path-to-regexp#errors) ## Migration Rules ### Optional parameters `?` suffix removed. Wrap the optional segment (including its prefix) in `{}`. ``` /:id? → {/:id} /users/:id? → /users{/:id} /files/:name? → /files{/:name} ``` ### Repeating parameters `+` (one-or-more) and `*` (zero-or-more) suffixes removed. Use `*name` wildcard syntax. ``` /:path+ → /*path /:path* → {/*path} ``` ### Quoted parameter names Parameter names must be valid JS identifiers. Names with special characters need double quotes. ``` /:with-dash → /:"with-dash" /:my.param → /:"my.param" ``` ### Escaping special characters Characters including `{}()[]+?!:*\\` must be escaped with `\\` when used as **literals** (see [path-to-regexp errors](https://github.com/pillarjs/path-to-regexp#errors)). A literal `?` in the path (e.g. before fixed query text like `?per_page=50`) must stay as `\\?` in the source string — removing the backslash causes `Unexpected ?` at `compile()` time. ``` /(literal) → /\\(literal\\) /[bracket] → /\\[bracket\\] /a+b → /a\\+b (+ is special unless escaped) /resource?p=1 → /resource\\?p=1 (? starts a modifier unless escaped) ``` Optional path params no longer use a trailing `?` on `:name` — use `{/:name}` instead (see above); that is different from a **literal** `?` in the URL. ### Custom regex removed Inline regex like `/:id(\d+)` is no longer supported. Remove regex patterns. ``` /:id(\d+) → /:id ``` ## Combined Examples Optional with prefix: ``` /:attr1?{-:attr2}?{-:attr3}? → {/:attr1}{-:attr2}{-:attr3} ``` Query params embedded in path (prefer grouped params; do **not** drop `\\` before a literal `?` unless you rewrite to this form): ``` /search\\?q=:q?&page=:page? → /search?{q=:q}{&page=:page} ``` ## Where to Find Paths Search patterns for locating v6 paths in a codebase: - `path:` properties in `RestEndpoint`, `resource()`, `.extend()` calls - Docs under `docs/rest/api/` - Type tests in `typescript-tests/` - Blog posts and changelogs with code examples ## Type System `pathTypes.ts` infers TypeScript parameter types from path strings: - `:name` and `*name` → required parameter - `{/:name}` and `{/*name}` → optional parameter (trailing `}` signals optionality) - `:"quoted"` → `CleanKey` strips quotes for the property name - `\\:` / `\\*` / `\\}` → escaped, not treated as parameters
Voir sur GitHub