@types/dasherize
TypeScript icon, indicating that this package has built-in type declarations

2.0.3 • Public • Published

Installation

npm install --save @types/dasherize

Summary

This package contains type definitions for dasherize (https://github.com/shahata/dasherize).

Details

Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dasherize.

index.d.ts

declare function dasherize<T>(data: T): DasherizeReturnType<T>;
export = dasherize;

type DasherizeReturnType<T> = T extends string ? DashCase<T, string>
    : T extends Record<string, unknown> ? ParseObjToDashCase<T>
    : T extends Array<infer TArrayData> ? Array<DasherizeReturnType<TArrayData>>
    : T;

type ParseObjToDashCase<TObj extends Record<string, unknown>> = {
    [Key in keyof TObj as DashCase<Key & string>]: DasherizeReturnType<TObj[Key]>;
};

type DashCase<
    TStringToParse extends string,
    TAlreadyParsedString extends string = "",
> = TStringToParse extends `${infer F}${infer R}` ? F extends Lowercase<F> ? DashCase<R, `${TAlreadyParsedString}${F}`>
    : DashCase<LowerCasedFirstWord<R>, `${AddHyphenSuffixIfNotTheEmptyString<TAlreadyParsedString>}${Lowercase<F>}`>
    : TAlreadyParsedString;

type AddHyphenSuffixIfNotTheEmptyString<T extends string> = T extends "" ? "" : `${T}-`;

type LowerCasedFirstWord<T extends string> = T extends `${infer F}${infer R}`
    ? `${F extends Lowercase<F> ? `${F}${R}` : `${Lowercase<F>}${LowerCasedFirstWord<R>}`}`
    : "";

Additional Details

  • Last updated: Mon, 06 Nov 2023 22:41:05 GMT
  • Dependencies: none

Credits

These definitions were written by Julio Cordeiro.

Readme

Keywords

none

Package Sidebar

Install

npm i @types/dasherize

Weekly Downloads

202

Version

2.0.3

License

MIT

Unpacked Size

4.72 kB

Total Files

5

Last publish

Collaborators

  • types