inferred-types 0.40.3 → 0.40.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,15 @@
1
1
  import { PLURAL_EXCEPTIONS } from "src/constants";
2
- import { Consonant, IfContains, IfStringLiteral, Filter, GetEach, EnsureTrailing, StripTrailing } from "..";
3
- type Exceptions = typeof PLURAL_EXCEPTIONS;
4
- type SingularExceptions = GetEach<Exceptions, 0>;
2
+ import { Consonant, IfStringLiteral, EnsureTrailing, StripTrailing, Mutable } from "..";
3
+ type ExceptionLookup = Mutable<typeof PLURAL_EXCEPTIONS>;
5
4
  type SingularNoun = "s" | "sh" | "ch" | "x" | "z" | "o";
6
5
  type F = "f" | "fe";
7
6
  type Y = `${Consonant}y`;
8
- /**
9
- * validates that a word `T` has an _exception_ rule defined for it
10
- */
11
- type IsException<T extends string> = IfContains<SingularExceptions, T, true, false>;
7
+ type IsException<T extends string> = T extends keyof ExceptionLookup ? true : false;
12
8
  /**
13
9
  * Looks up a singular word `T` as a possible singular exception and converts it
14
10
  * to the plural equivalent. Will return `never` if `T` is not an exception.
15
11
  */
16
- type PluralException<T extends string> = IsException<T> extends true ? Filter<Exceptions, [T, string], "extends"> extends [T, infer Plural] ? Plural : never : never;
12
+ type PluralException<T extends string> = T extends keyof ExceptionLookup ? ExceptionLookup[T] : never;
17
13
  /** validates that a string literal ends in "is" */
18
14
  type EndsIn_IS<T extends string> = T extends `${string}is` ? T : never;
19
15
  /** validates that a string literal is a singular noun */
@@ -38,6 +34,11 @@ type PluralizeEnding_F<T extends string> = T extends `${infer HEAD}${F}` ? `${HE
38
34
  * singular nouns should have "es" added to the end
39
35
  */
40
36
  type PluralizeEndingIn_Y<T extends string> = EnsureTrailing<StripTrailing<T, "y">, "ies">;
37
+ /**
38
+ * **Pluralize**`<T>`
39
+ *
40
+ * Expects `T` to be a _singular_ word and pluralizes it.
41
+ */
41
42
  export type Pluralize<T extends string> = IfStringLiteral<T, IsException<T> extends true ? PluralException<T> : T extends EndsIn_IS<T> ? PluralizeEndingIn_IS<T> : T extends EndsInSingularNoun<T> ? PluralizeEndingSingularNoun<T> : T extends EndsIn_F<T> ? PluralizeEnding_F<T> : T extends EndsIn_Y<T> ? PluralizeEndingIn_Y<T> : `${T}s`, string>;
42
43
  export {};
43
44
  //# sourceMappingURL=Pluralize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pluralize.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/Pluralize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pluralize.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/Pluralize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,SAAS,EAET,eAAe,EAGf,cAAc,EACd,aAAa,EACb,OAAO,EACR,MAAM,IAAI,CAAC;AAEZ,KAAK,eAAe,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEzD,KAAK,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxD,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AACpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC;AAEzB,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,eAAe,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpF;;;GAGG;AACH,KAAK,eAAe,CAClB,CAAC,SAAS,MAAM,IACd,CAAC,SAAS,MAAM,eAAe,GAC/B,eAAe,CAAC,CAAC,CAAC,GAClB,KAAK,CAAC;AAEV,mDAAmD;AACnD,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,yDAAyD;AACzD,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,YAAY,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAE7F,0DAA0D;AAC1D,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAExE,uEAAuE;AACvE,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAExE;;GAEG;AACH,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC;AAE9F;;GAEG;AACH,KAAK,2BAA2B,CAAC,CAAC,SAAS,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE7E;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AAE5F;;GAEG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAGzF;;;;GAIG;AACH,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,MAAM,IAElB,eAAe,CACb,CAAC,EACD,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,GACvB,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,GACpB,oBAAoB,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAC7B,2BAA2B,CAAC,CAAC,CAAC,GAC9B,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,GACnB,mBAAmB,CAAC,CAAC,CAAC,GACtB,GAAG,CAAC,GAAG,EACnB,MAAM,CACP,CAAC"}