Path case transformation plugin for Spoosh - enables camelCase API paths with automatic conversion to kebab-case, snake_case, etc.
npm install @spoosh/plugin-path-casePath case transformation plugin for Spoosh - write camelCase in TypeScript, send kebab-case (or snake_case) to your API.
Documentation · Requirements: TypeScript >= 5.0 · Peer Dependencies: @spoosh/core
When your API uses kebab-case or snake_case URLs, you're forced to write ugly bracket notation:
``typescript`
// Ugly bracket notation
api["user-profiles"]["profile-settings"].$get();
api"blog-posts"["related-articles"].$get();
With pathCasePlugin, write clean camelCase:
`typescript`
// Clean dot notation
api.userProfiles.profileSettings.$get();
api.blogPosts(":postId").relatedArticles.$get();
// HTTP: GET /blog-posts/123/related-articles
`bash`
npm install @spoosh/plugin-path-case
`typescript
import { Spoosh } from "@spoosh/core";
import { createReactSpoosh } from "@spoosh/react";
import { CamelCaseKeys, pathCasePlugin } from "@spoosh/plugin-path-case";
import type { ApiSchema } from "./generated/api-schema";
// 1. Wrap your schema type with CamelCaseKeys
// 2. Add pathCasePlugin with your target case
const client = new Spoosh
pathCasePlugin({ targetCase: "kebab" }),
]);
const { useRead, useWrite } = createReactSpoosh(client);
// Now use camelCase everywhere!
useRead((api) => api.blogPosts(postId).relatedArticles.$get());
`
| Option | Type | Default | Description |
| ------------ | ------------------------------------------------------- | -------- | ---------------------------------------- |
| targetCase | "kebab" \| "snake" \| "pascal" \| "camel" \| Function | Required | Target case for HTTP URLs |exclude
| | string[] | [] | Segments to skip (e.g., ["v1", "api"]) |
| Option | Type | Description |
| ------------ | --------------------- | --------------------- |
| targetCase | Same as plugin config | Override target case |exclude
| | string[] | Override exclude list |
| Utility | Description |
| ---------------- | ----------------------------------------------- |
| CamelCaseKeys | Transform schema keys from kebab/snake to camel |KebabCaseKeys
| | Transform schema keys to kebab-case |SnakeCaseKeys
| | Transform schema keys to snake_case |PascalCaseKeys` | Transform schema keys to PascalCase |
|