@spoosh/plugin-path-case
v0.1.1
Published
Path case transformation plugin for Spoosh - enables camelCase API paths with automatic conversion to kebab-case, snake_case, etc.
Downloads
159
Maintainers
Readme
@spoosh/plugin-path-case
Path 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
The Problem
When your API uses kebab-case or snake_case URLs, you're forced to write ugly bracket notation:
// Ugly bracket notation
api["user-profiles"]["profile-settings"].$get();
api["blog-posts"](":postId")["related-articles"].$get();The Solution
With pathCasePlugin, write clean camelCase:
// Clean dot notation
api.userProfiles.profileSettings.$get();
api.blogPosts(":postId").relatedArticles.$get();
// HTTP: GET /blog-posts/123/related-articlesInstallation
npm install @spoosh/plugin-path-caseUsage
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<CamelCaseKeys<ApiSchema>, Error>("/api").use([
pathCasePlugin({ targetCase: "kebab" }),
]);
const { useRead, useWrite } = createReactSpoosh(client);
// Now use camelCase everywhere!
useRead((api) => api.blogPosts(postId).relatedArticles.$get());Options
Plugin Config
| 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"]) |
Per-Request Options
| Option | Type | Description |
| ------------ | --------------------- | --------------------- |
| targetCase | Same as plugin config | Override target case |
| exclude | string[] | Override exclude list |
Type Utilities
| 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 |
