@sinclair/typebox 0.32.0-dev-12 → 0.32.0-dev-14

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.
Files changed (128) hide show
  1. package/build/import/index.d.mts +5 -5
  2. package/build/import/index.mjs +3 -3
  3. package/build/import/type/composite/composite.d.mts +2 -2
  4. package/build/import/type/extends/extends-mapped-result-from-result.d.mts +13 -0
  5. package/build/import/type/extends/extends-mapped-result-from-result.mjs +14 -0
  6. package/build/import/type/extends/extends-mapped-result.d.mts +13 -9
  7. package/build/import/type/extends/extends-mapped-result.mjs +15 -8
  8. package/build/import/type/extends/extends.d.mts +4 -4
  9. package/build/import/type/extends/extends.mjs +4 -4
  10. package/build/import/type/extends/index.d.mts +1 -1
  11. package/build/import/type/extends/index.mjs +1 -1
  12. package/build/import/type/guard/type.d.mts +47 -46
  13. package/build/import/type/guard/type.mjs +294 -293
  14. package/build/import/type/indexed/index.d.mts +2 -2
  15. package/build/import/type/indexed/index.mjs +2 -2
  16. package/build/import/type/indexed/{indexed-mapped.d.mts → indexed-mapped-result.d.mts} +4 -4
  17. package/build/import/type/indexed/{indexed-mapped.mjs → indexed-mapped-result.mjs} +3 -3
  18. package/build/import/type/indexed/indexed-property-keys.d.mts +3 -3
  19. package/build/import/type/indexed/indexed-property-keys.mjs +2 -2
  20. package/build/import/type/indexed/{indexed-type.d.mts → indexed-result.d.mts} +2 -2
  21. package/build/import/type/indexed/{indexed-type.mjs → indexed-result.mjs} +1 -1
  22. package/build/import/type/indexed/indexed.d.mts +6 -6
  23. package/build/import/type/indexed/indexed.mjs +6 -6
  24. package/build/import/type/intrinsic/capitalize.d.mts +4 -0
  25. package/build/import/type/intrinsic/capitalize.mjs +5 -0
  26. package/build/import/type/intrinsic/index.d.mts +5 -0
  27. package/build/import/type/intrinsic/index.mjs +5 -0
  28. package/build/import/type/intrinsic/intrinsic-mapped-result.d.mts +15 -0
  29. package/build/import/type/intrinsic/intrinsic-mapped-result.mjs +21 -0
  30. package/build/import/type/intrinsic/intrinsic.d.mts +9 -14
  31. package/build/import/type/intrinsic/intrinsic.mjs +10 -21
  32. package/build/import/type/intrinsic/lowercase.d.mts +4 -0
  33. package/build/import/type/intrinsic/lowercase.mjs +5 -0
  34. package/build/import/type/intrinsic/uncapitalize.d.mts +4 -0
  35. package/build/import/type/intrinsic/uncapitalize.mjs +5 -0
  36. package/build/import/type/intrinsic/uppercase.d.mts +4 -0
  37. package/build/import/type/intrinsic/uppercase.mjs +5 -0
  38. package/build/import/type/mapped/index.d.mts +2 -0
  39. package/build/import/type/mapped/index.mjs +2 -0
  40. package/build/import/type/mapped/mapped-key.d.mts +8 -0
  41. package/build/import/type/mapped/mapped-key.mjs +7 -0
  42. package/build/import/type/mapped/mapped-result.d.mts +9 -0
  43. package/build/import/type/mapped/mapped-result.mjs +7 -0
  44. package/build/import/type/mapped/mapped.d.mts +24 -31
  45. package/build/import/type/mapped/mapped.mjs +33 -36
  46. package/build/import/type/omit/index.d.mts +1 -0
  47. package/build/import/type/omit/index.mjs +1 -0
  48. package/build/import/type/omit/omit-mapped-result.d.mts +15 -0
  49. package/build/import/type/omit/omit-mapped-result.mjs +20 -0
  50. package/build/import/type/omit/omit.d.mts +5 -2
  51. package/build/import/type/omit/omit.mjs +12 -6
  52. package/build/import/type/pick/index.d.mts +1 -0
  53. package/build/import/type/pick/index.mjs +1 -0
  54. package/build/import/type/pick/pick-mapped-result.d.mts +15 -0
  55. package/build/import/type/pick/pick-mapped-result.mjs +20 -0
  56. package/build/import/type/pick/pick.d.mts +5 -2
  57. package/build/import/type/pick/pick.mjs +12 -6
  58. package/build/import/type/record/record.mjs +4 -4
  59. package/build/import/type/type/json.d.mts +15 -13
  60. package/build/import/value/transform/decode.mjs +2 -2
  61. package/build/import/value/transform/encode.mjs +2 -2
  62. package/build/require/index.d.ts +5 -5
  63. package/build/require/index.js +7 -6
  64. package/build/require/type/composite/composite.d.ts +2 -2
  65. package/build/require/type/extends/extends-mapped-result-from-result.d.ts +13 -0
  66. package/build/require/type/extends/extends-mapped-result-from-result.js +18 -0
  67. package/build/require/type/extends/extends-mapped-result.d.ts +13 -9
  68. package/build/require/type/extends/extends-mapped-result.js +17 -10
  69. package/build/require/type/extends/extends.d.ts +4 -4
  70. package/build/require/type/extends/extends.js +3 -3
  71. package/build/require/type/extends/index.d.ts +1 -1
  72. package/build/require/type/extends/index.js +1 -1
  73. package/build/require/type/guard/type.d.ts +47 -46
  74. package/build/require/type/guard/type.js +252 -250
  75. package/build/require/type/indexed/index.d.ts +2 -2
  76. package/build/require/type/indexed/index.js +2 -2
  77. package/build/require/type/indexed/{indexed-mapped.d.ts → indexed-mapped-result.d.ts} +4 -4
  78. package/build/require/type/indexed/{indexed-mapped.js → indexed-mapped-result.js} +5 -5
  79. package/build/require/type/indexed/indexed-property-keys.d.ts +3 -3
  80. package/build/require/type/indexed/indexed-property-keys.js +4 -4
  81. package/build/require/type/indexed/{indexed-type.d.ts → indexed-result.d.ts} +2 -2
  82. package/build/require/type/indexed/{indexed-type.js → indexed-result.js} +3 -3
  83. package/build/require/type/indexed/indexed.d.ts +6 -6
  84. package/build/require/type/indexed/indexed.js +5 -5
  85. package/build/require/type/intrinsic/capitalize.d.ts +4 -0
  86. package/build/require/type/intrinsic/capitalize.js +9 -0
  87. package/build/require/type/intrinsic/index.d.ts +5 -0
  88. package/build/require/type/intrinsic/index.js +5 -0
  89. package/build/require/type/intrinsic/intrinsic-mapped-result.d.ts +15 -0
  90. package/build/require/type/intrinsic/intrinsic-mapped-result.js +25 -0
  91. package/build/require/type/intrinsic/intrinsic.d.ts +9 -14
  92. package/build/require/type/intrinsic/intrinsic.js +10 -25
  93. package/build/require/type/intrinsic/lowercase.d.ts +4 -0
  94. package/build/require/type/intrinsic/lowercase.js +9 -0
  95. package/build/require/type/intrinsic/uncapitalize.d.ts +4 -0
  96. package/build/require/type/intrinsic/uncapitalize.js +9 -0
  97. package/build/require/type/intrinsic/uppercase.d.ts +4 -0
  98. package/build/require/type/intrinsic/uppercase.js +9 -0
  99. package/build/require/type/mapped/index.d.ts +2 -0
  100. package/build/require/type/mapped/index.js +2 -0
  101. package/build/require/type/mapped/mapped-key.d.ts +8 -0
  102. package/build/require/type/mapped/mapped-key.js +11 -0
  103. package/build/require/type/mapped/mapped-result.d.ts +9 -0
  104. package/build/require/type/mapped/mapped-result.js +11 -0
  105. package/build/require/type/mapped/mapped.d.ts +24 -31
  106. package/build/require/type/mapped/mapped.js +45 -52
  107. package/build/require/type/omit/index.d.ts +1 -0
  108. package/build/require/type/omit/index.js +1 -0
  109. package/build/require/type/omit/omit-mapped-result.d.ts +15 -0
  110. package/build/require/type/omit/omit-mapped-result.js +24 -0
  111. package/build/require/type/omit/omit.d.ts +5 -2
  112. package/build/require/type/omit/omit.js +10 -4
  113. package/build/require/type/pick/index.d.ts +1 -0
  114. package/build/require/type/pick/index.js +1 -0
  115. package/build/require/type/pick/pick-mapped-result.d.ts +15 -0
  116. package/build/require/type/pick/pick-mapped-result.js +24 -0
  117. package/build/require/type/pick/pick.d.ts +5 -2
  118. package/build/require/type/pick/pick.js +10 -4
  119. package/build/require/type/record/record.js +2 -2
  120. package/build/require/type/type/json.d.ts +15 -13
  121. package/build/require/value/transform/decode.js +1 -1
  122. package/build/require/value/transform/encode.js +1 -1
  123. package/package.json +1 -1
  124. package/readme.md +115 -47
  125. package/build/import/type/extends/extends-mapped.d.mts +0 -17
  126. package/build/import/type/extends/extends-mapped.mjs +0 -21
  127. package/build/require/type/extends/extends-mapped.d.ts +0 -17
  128. package/build/require/type/extends/extends-mapped.js +0 -25
@@ -1,7 +1,7 @@
1
- import { IndexedType } from './indexed-type.mjs';
1
+ import { IndexResult } from './indexed-result.mjs';
2
2
  import { MappedResult } from '../mapped/index.mjs';
3
3
  function MappedIndexPropertyKey(T, K) {
4
- return { [K]: IndexedType(T, [K]) };
4
+ return { [K]: IndexResult(T, [K]) };
5
5
  }
6
6
  function MappedIndexPropertyKeys(T, K) {
7
7
  const [L, ...R] = K;
@@ -12,7 +12,7 @@ function MappedIndexPropertyKeys(T, K) {
12
12
  function MappedIndexProperties(T, K) {
13
13
  return MappedIndexPropertyKeys(T, K.keys);
14
14
  }
15
- export function MappedIndex(T, K) {
15
+ export function IndexMappedResult(T, K) {
16
16
  const P = MappedIndexProperties(T, K);
17
17
  return MappedResult(P);
18
18
  }
@@ -6,11 +6,11 @@ import { type TSchema } from '../schema/index.mjs';
6
6
  import { type TUnion } from '../union/index.mjs';
7
7
  type FromTemplateLiteral<T extends TTemplateLiteral, F = IsTemplateLiteralFinite<T>> = (F extends true ? TemplateLiteralGenerate<T> extends infer R extends string[] ? R : [] : []);
8
8
  declare function FromTemplateLiteral<T extends TTemplateLiteral>(T: T): FromTemplateLiteral<T>;
9
- type FromUnion<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [...IndexedPropertyKeys<L>, ...FromUnion<R>] : []);
9
+ type FromUnion<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [...TIndexPropertyKeys<L>, ...FromUnion<R>] : []);
10
10
  declare function FromUnion<T extends TSchema[]>(T: T): FromUnion<T>;
11
11
  type FromLiteral<T extends TLiteralValue> = (T extends PropertyKey ? [`${T}`] : []);
12
12
  declare function FromLiteral<T extends TLiteralValue>(T: T): FromLiteral<T>;
13
- export type IndexedPropertyKeys<T extends TSchema> = (T extends TTemplateLiteral ? FromTemplateLiteral<T> : T extends TUnion<infer S> ? FromUnion<S> : T extends TLiteral<infer S> ? FromLiteral<S> : T extends TNumber ? ['[number]'] : T extends TInteger ? ['[number]'] : [
13
+ export type TIndexPropertyKeys<T extends TSchema> = (T extends TTemplateLiteral ? FromTemplateLiteral<T> : T extends TUnion<infer S> ? FromUnion<S> : T extends TLiteral<infer S> ? FromLiteral<S> : T extends TNumber ? ['[number]'] : T extends TInteger ? ['[number]'] : [
14
14
  ]);
15
- export declare function IndexedPropertyKeys<T extends TSchema>(T: T): IndexedPropertyKeys<T>;
15
+ export declare function IndexPropertyKeys<T extends TSchema>(T: T): TIndexPropertyKeys<T>;
16
16
  export {};
@@ -13,13 +13,13 @@ function FromTemplateLiteral(T) {
13
13
  function FromUnion(T) {
14
14
  const [L, ...R] = T;
15
15
  return (T.length > 0
16
- ? [...IndexedPropertyKeys(L), ...FromUnion(R)]
16
+ ? [...IndexPropertyKeys(L), ...FromUnion(R)]
17
17
  : []);
18
18
  }
19
19
  function FromLiteral(T) {
20
20
  return ([T.toString()]);
21
21
  }
22
- export function IndexedPropertyKeys(T) {
22
+ export function IndexPropertyKeys(T) {
23
23
  return [...new Set((IsTemplateLiteralType(T) ? FromTemplateLiteral(T) :
24
24
  IsUnionType(T) ? FromUnion(T.anyOf) :
25
25
  IsLiteralType(T) ? FromLiteral(T.const) :
@@ -28,6 +28,6 @@ type FromKey<T extends TSchema, K extends PropertyKey> = (T extends TRecursive<i
28
28
  declare function FromKey<T extends TSchema, K extends PropertyKey>(T: T, K: K): FromKey<T, K>;
29
29
  type FromKeys<T extends TSchema, K extends PropertyKey[]> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? [FromKey<T, L>, ...FromKeys<T, R>] : []);
30
30
  declare function FromKeys<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): FromKeys<T, K>;
31
- export type IndexedType<T extends TSchema, K extends PropertyKey[]> = (UnionResolve<FromKeys<T, K>>);
32
- export declare function IndexedType<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): IndexedType<T, K>;
31
+ export type TIndexResult<T extends TSchema, K extends PropertyKey[]> = (UnionResolve<FromKeys<T, K>>);
32
+ export declare function IndexResult<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): TIndexResult<T, K>;
33
33
  export {};
@@ -59,6 +59,6 @@ function FromKeys(T, K) {
59
59
  ? [FromKey(T, L), ...FromKeys(T, R)]
60
60
  : []);
61
61
  }
62
- export function IndexedType(T, K) {
62
+ export function IndexResult(T, K) {
63
63
  return (UnionResolve(FromKeys(T, K)));
64
64
  }
@@ -1,9 +1,9 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
- import { IndexedType } from './indexed-type.mjs';
3
- import { IndexedPropertyKeys } from './indexed-property-keys.mjs';
4
- import { type TMappedIndex } from './indexed-mapped.mjs';
2
+ import { type TIndexResult } from './indexed-result.mjs';
3
+ import { type TIndexPropertyKeys } from './indexed-property-keys.mjs';
4
+ import { type TIndexMappedResult } from './indexed-mapped-result.mjs';
5
5
  import { TMappedKey } from '../mapped/index.mjs';
6
- export type TIndex<T extends TSchema, K extends PropertyKey[]> = IndexedType<T, K>;
7
- export declare function Index<T extends TSchema, K extends TMappedKey>(T: T, K: K): TMappedIndex<T, K>;
8
- export declare function Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = IndexedPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
6
+ export type TIndex<T extends TSchema, K extends PropertyKey[]> = TIndexResult<T, K>;
7
+ export declare function Index<T extends TSchema, K extends TMappedKey>(T: T, K: K): TIndexMappedResult<T, K>;
8
+ export declare function Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
9
9
  export declare function Index<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TIndex<T, K>;
@@ -1,10 +1,10 @@
1
1
  import { TSchema as IsSchemaType, TMappedKey as IsMappedKey } from '../guard/type.mjs';
2
- import { IndexedType } from './indexed-type.mjs';
3
- import { IndexedPropertyKeys } from './indexed-property-keys.mjs';
4
- import { MappedIndex } from './indexed-mapped.mjs';
2
+ import { IndexResult } from './indexed-result.mjs';
3
+ import { IndexPropertyKeys } from './indexed-property-keys.mjs';
4
+ import { IndexMappedResult } from './indexed-mapped-result.mjs';
5
5
  import { CloneType } from '../clone/type.mjs';
6
6
  export function Index(T, K, options = {}) {
7
- return (IsMappedKey(K) ? CloneType(MappedIndex(T, K), options) :
8
- IsSchemaType(K) ? CloneType(IndexedType(T, IndexedPropertyKeys(K)), options) :
9
- CloneType(IndexedType(T, K), options));
7
+ return (IsMappedKey(K) ? CloneType(IndexMappedResult(T, K), options) :
8
+ IsSchemaType(K) ? CloneType(IndexResult(T, IndexPropertyKeys(K)), options) :
9
+ CloneType(IndexResult(T, K), options));
10
10
  }
@@ -0,0 +1,4 @@
1
+ import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { TIntrinsic } from './intrinsic.mjs';
3
+ export type TCapitalize<T extends TSchema> = TIntrinsic<T, 'Capitalize'>;
4
+ export declare function Capitalize<T extends TSchema>(T: T, options?: SchemaOptions): TCapitalize<T>;
@@ -0,0 +1,5 @@
1
+ import { Intrinsic } from './intrinsic.mjs';
2
+ import { CloneType } from '../clone/type.mjs';
3
+ export function Capitalize(T, options = {}) {
4
+ return CloneType(Intrinsic(T, 'Capitalize'), options);
5
+ }
@@ -1 +1,6 @@
1
+ export * from './capitalize.mjs';
2
+ export * from './intrinsic-mapped-result.mjs';
1
3
  export * from './intrinsic.mjs';
4
+ export * from './lowercase.mjs';
5
+ export * from './uncapitalize.mjs';
6
+ export * from './uppercase.mjs';
@@ -1 +1,6 @@
1
+ export * from './capitalize.mjs';
2
+ export * from './intrinsic-mapped-result.mjs';
1
3
  export * from './intrinsic.mjs';
4
+ export * from './lowercase.mjs';
5
+ export * from './uncapitalize.mjs';
6
+ export * from './uppercase.mjs';
@@ -0,0 +1,15 @@
1
+ import type { TProperties } from '../object/index.mjs';
2
+ import { type TMappedResult, type TMappedKey } from '../mapped/index.mjs';
3
+ import { type TIntrinsic, type IntrinsicMode } from './intrinsic.mjs';
4
+ import { TLiteral, TLiteralValue } from '../literal/index.mjs';
5
+ type MappedIntrinsicPropertyKey<K extends PropertyKey, M extends IntrinsicMode, P extends TLiteralValue = K extends TLiteralValue ? K : never> = {
6
+ [_ in K]: TIntrinsic<TLiteral<P>, M>;
7
+ };
8
+ declare function MappedIntrinsicPropertyKey<K extends PropertyKey, M extends IntrinsicMode>(K: K, M: M): MappedIntrinsicPropertyKey<K, M>;
9
+ type MappedIntrinsicPropertyKeys<K extends PropertyKey[], M extends IntrinsicMode> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? MappedIntrinsicPropertyKey<L, M> & MappedIntrinsicPropertyKeys<R, M> : {});
10
+ declare function MappedIntrinsicPropertyKeys<K extends PropertyKey[], M extends IntrinsicMode>(K: [...K], M: M): MappedIntrinsicPropertyKeys<K, M>;
11
+ type MappedIntrinsicProperties<K extends TMappedKey, M extends IntrinsicMode> = (MappedIntrinsicPropertyKeys<K['keys'], M>);
12
+ declare function MappedIntrinsicProperties<K extends TMappedKey, M extends IntrinsicMode>(T: K, M: M): MappedIntrinsicProperties<K, M>;
13
+ export type TIntrinsicMappedResult<K extends TMappedKey, M extends IntrinsicMode, P extends TProperties = MappedIntrinsicProperties<K, M>> = (TMappedResult<P>);
14
+ export declare function IntrinsicMappedResult<K extends TMappedKey, M extends IntrinsicMode, P extends TProperties = MappedIntrinsicProperties<K, M>>(T: K, M: M): TMappedResult<P>;
15
+ export {};
@@ -0,0 +1,21 @@
1
+ import { MappedResult } from '../mapped/index.mjs';
2
+ import { Intrinsic } from './intrinsic.mjs';
3
+ import { Literal } from '../literal/index.mjs';
4
+ function MappedIntrinsicPropertyKey(K, M) {
5
+ return {
6
+ [K]: Intrinsic(Literal(K), M)
7
+ };
8
+ }
9
+ function MappedIntrinsicPropertyKeys(K, M) {
10
+ const [L, ...R] = K;
11
+ return (K.length > 0
12
+ ? { ...MappedIntrinsicPropertyKey(L, M), ...MappedIntrinsicPropertyKeys(R, M) }
13
+ : {});
14
+ }
15
+ function MappedIntrinsicProperties(T, M) {
16
+ return MappedIntrinsicPropertyKeys(T['keys'], M);
17
+ }
18
+ export function IntrinsicMappedResult(T, M) {
19
+ const P = MappedIntrinsicProperties(T, M);
20
+ return MappedResult(P);
21
+ }
@@ -1,22 +1,17 @@
1
- import type { TSchema, SchemaOptions } from '../schema/index.mjs';
1
+ import type { TSchema } from '../schema/index.mjs';
2
2
  import { type TTemplateLiteral, type TTemplateLiteralKind } from '../template-literal/index.mjs';
3
+ import { type TIntrinsicMappedResult } from './intrinsic-mapped-result.mjs';
3
4
  import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
4
5
  import { type TUnion } from '../union/index.mjs';
5
- type IntrinsicMode = 'Uppercase' | 'Lowercase' | 'Capitalize' | 'Uncapitalize';
6
- type FromTemplateLiteral<T extends TTemplateLiteralKind[], M extends IntrinsicMode> = M extends IntrinsicMode ? T extends [infer L extends TTemplateLiteralKind, ...infer R extends TTemplateLiteralKind[]] ? [IntrinsicResolve<L, M>, ...FromTemplateLiteral<R, M>] : T : T;
6
+ import { type TMappedKey } from '../mapped/index.mjs';
7
+ export type IntrinsicMode = 'Uppercase' | 'Lowercase' | 'Capitalize' | 'Uncapitalize';
8
+ type FromTemplateLiteral<T extends TTemplateLiteralKind[], M extends IntrinsicMode> = M extends IntrinsicMode ? T extends [infer L extends TTemplateLiteralKind, ...infer R extends TTemplateLiteralKind[]] ? [TIntrinsic<L, M>, ...FromTemplateLiteral<R, M>] : T : T;
7
9
  declare function FromTemplateLiteral<T extends TTemplateLiteralKind[], M extends IntrinsicMode>(schema: TTemplateLiteral, mode: IntrinsicMode): FromTemplateLiteral<T, M>;
8
10
  type FromLiteralValue<T, M extends IntrinsicMode> = (T extends string ? M extends 'Uncapitalize' ? Uncapitalize<T> : M extends 'Capitalize' ? Capitalize<T> : M extends 'Uppercase' ? Uppercase<T> : M extends 'Lowercase' ? Lowercase<T> : string : T);
9
11
  declare function FromLiteralValue(value: TLiteralValue, mode: IntrinsicMode): string;
10
- type FromRest<T extends TSchema[], M extends IntrinsicMode> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [IntrinsicResolve<L, M>, ...FromRest<R, M>] : [];
12
+ type FromRest<T extends TSchema[], M extends IntrinsicMode> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [TIntrinsic<L, M>, ...FromRest<R, M>] : [];
11
13
  declare function FromRest<T extends TSchema[], M extends IntrinsicMode>(T: [...T], mode: M): FromRest<T, M>;
12
- export type IntrinsicResolve<T extends TSchema, M extends IntrinsicMode> = T extends TTemplateLiteral<infer S> ? TTemplateLiteral<FromTemplateLiteral<S, M>> : T extends TUnion<infer S> ? TUnion<FromRest<S, M>> : T extends TLiteral<infer S> ? TLiteral<FromLiteralValue<S, M>> : T;
13
- export declare function IntrinsicResolve<T extends TSchema, M extends IntrinsicMode>(schema: T, mode: M): IntrinsicResolve<T, M>;
14
- export type TUncapitalize<T extends TSchema> = IntrinsicResolve<T, 'Uncapitalize'>;
15
- export declare function Uncapitalize<T extends TSchema>(T: T, options?: SchemaOptions): TUncapitalize<T>;
16
- export type TUppercase<T extends TSchema> = IntrinsicResolve<T, 'Uppercase'>;
17
- export declare function Uppercase<T extends TSchema>(T: T, options?: SchemaOptions): TUppercase<T>;
18
- export type TLowercase<T extends TSchema> = IntrinsicResolve<T, 'Lowercase'>;
19
- export declare function Lowercase<T extends TSchema>(T: T, options?: SchemaOptions): TLowercase<T>;
20
- export type TCapitalize<T extends TSchema> = IntrinsicResolve<T, 'Capitalize'>;
21
- export declare function Capitalize<T extends TSchema>(T: T, options?: SchemaOptions): TCapitalize<T>;
14
+ export type TIntrinsic<T extends TSchema, M extends IntrinsicMode> = T extends TMappedKey ? TIntrinsicMappedResult<T, M> : T extends TTemplateLiteral<infer S> ? TTemplateLiteral<FromTemplateLiteral<S, M>> : T extends TUnion<infer S> ? TUnion<FromRest<S, M>> : T extends TLiteral<infer S> ? TLiteral<FromLiteralValue<S, M>> : T;
15
+ export declare function Intrinsic<T extends TMappedKey, M extends IntrinsicMode>(schema: T, mode: M): TIntrinsicMappedResult<T, M>;
16
+ export declare function Intrinsic<T extends TSchema, M extends IntrinsicMode>(schema: T, mode: M): TIntrinsic<T, M>;
22
17
  export {};
@@ -1,8 +1,8 @@
1
1
  import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralFinite, TemplateLiteralGenerate } from '../template-literal/index.mjs';
2
+ import { IntrinsicMappedResult } from './intrinsic-mapped-result.mjs';
2
3
  import { Literal } from '../literal/index.mjs';
3
4
  import { Union } from '../union/index.mjs';
4
- import { TTemplateLiteral as IsTemplateLiteralType, TUnion as IsUnionType, TLiteral as IsLiteralType } from '../guard/type.mjs';
5
- import { CloneType } from '../clone/type.mjs';
5
+ import { TMappedKey as IsMappedKeyType, TTemplateLiteral as IsTemplateLiteralType, TUnion as IsUnionType, TLiteral as IsLiteralType } from '../guard/type.mjs';
6
6
  function ApplyUncapitalize(value) {
7
7
  const [first, rest] = [value.slice(0, 1), value.slice(1)];
8
8
  return [first.toLowerCase(), rest].join('');
@@ -37,23 +37,12 @@ function FromLiteralValue(value, mode) {
37
37
  }
38
38
  function FromRest(T, mode) {
39
39
  const [L, ...R] = T;
40
- return (T.length > 0 ? [IntrinsicResolve(L, mode), ...FromRest(R, mode)] : []);
41
- }
42
- export function IntrinsicResolve(schema, mode) {
43
- return (IsTemplateLiteralType(schema) ? FromTemplateLiteral(schema, mode) :
44
- IsUnionType(schema) ? Union(FromRest(schema.anyOf, mode)) :
45
- IsLiteralType(schema) ? Literal(FromLiteralValue(schema.const, mode)) :
46
- schema);
47
- }
48
- export function Uncapitalize(T, options = {}) {
49
- return CloneType(IntrinsicResolve(T, 'Uncapitalize'), options);
50
- }
51
- export function Uppercase(T, options = {}) {
52
- return CloneType(IntrinsicResolve(T, 'Uppercase'), options);
53
- }
54
- export function Lowercase(T, options = {}) {
55
- return CloneType(IntrinsicResolve(T, 'Lowercase'), options);
56
- }
57
- export function Capitalize(T, options = {}) {
58
- return CloneType(IntrinsicResolve(T, 'Capitalize'), options);
40
+ return (T.length > 0 ? [Intrinsic(L, mode), ...FromRest(R, mode)] : []);
41
+ }
42
+ export function Intrinsic(schema, mode) {
43
+ return (IsMappedKeyType(schema) ? IntrinsicMappedResult(schema, mode) :
44
+ IsTemplateLiteralType(schema) ? FromTemplateLiteral(schema, mode) :
45
+ IsUnionType(schema) ? Union(FromRest(schema.anyOf, mode)) :
46
+ IsLiteralType(schema) ? Literal(FromLiteralValue(schema.const, mode)) :
47
+ schema);
59
48
  }
@@ -0,0 +1,4 @@
1
+ import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { TIntrinsic } from './intrinsic.mjs';
3
+ export type TLowercase<T extends TSchema> = TIntrinsic<T, 'Lowercase'>;
4
+ export declare function Lowercase<T extends TSchema>(T: T, options?: SchemaOptions): TLowercase<T>;
@@ -0,0 +1,5 @@
1
+ import { Intrinsic } from './intrinsic.mjs';
2
+ import { CloneType } from '../clone/type.mjs';
3
+ export function Lowercase(T, options = {}) {
4
+ return CloneType(Intrinsic(T, 'Lowercase'), options);
5
+ }
@@ -0,0 +1,4 @@
1
+ import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { TIntrinsic } from './intrinsic.mjs';
3
+ export type TUncapitalize<T extends TSchema> = TIntrinsic<T, 'Uncapitalize'>;
4
+ export declare function Uncapitalize<T extends TSchema>(T: T, options?: SchemaOptions): TUncapitalize<T>;
@@ -0,0 +1,5 @@
1
+ import { Intrinsic } from './intrinsic.mjs';
2
+ import { CloneType } from '../clone/type.mjs';
3
+ export function Uncapitalize(T, options = {}) {
4
+ return CloneType(Intrinsic(T, 'Uncapitalize'), options);
5
+ }
@@ -0,0 +1,4 @@
1
+ import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { TIntrinsic } from './intrinsic.mjs';
3
+ export type TUppercase<T extends TSchema> = TIntrinsic<T, 'Uppercase'>;
4
+ export declare function Uppercase<T extends TSchema>(T: T, options?: SchemaOptions): TUppercase<T>;
@@ -0,0 +1,5 @@
1
+ import { Intrinsic } from './intrinsic.mjs';
2
+ import { CloneType } from '../clone/type.mjs';
3
+ export function Uppercase(T, options = {}) {
4
+ return CloneType(Intrinsic(T, 'Uppercase'), options);
5
+ }
@@ -1 +1,3 @@
1
+ export * from './mapped-key.mjs';
2
+ export * from './mapped-result.mjs';
1
3
  export * from './mapped.mjs';
@@ -1 +1,3 @@
1
+ export * from './mapped-key.mjs';
2
+ export * from './mapped-result.mjs';
1
3
  export * from './mapped.mjs';
@@ -0,0 +1,8 @@
1
+ import type { TSchema } from '../schema/index.mjs';
2
+ import { Kind } from '../symbols/index.mjs';
3
+ export interface TMappedKey<T extends PropertyKey[] = PropertyKey[]> extends TSchema {
4
+ [Kind]: 'MappedKey';
5
+ static: T[number];
6
+ keys: T;
7
+ }
8
+ export declare function MappedKey<T extends PropertyKey[]>(T: [...T]): TMappedKey<T>;
@@ -0,0 +1,7 @@
1
+ import { Kind } from '../symbols/index.mjs';
2
+ export function MappedKey(T) {
3
+ return {
4
+ [Kind]: 'MappedKey',
5
+ keys: T
6
+ };
7
+ }
@@ -0,0 +1,9 @@
1
+ import type { TSchema } from '../schema/index.mjs';
2
+ import type { TProperties } from '../object/index.mjs';
3
+ import { Kind } from '../symbols/index.mjs';
4
+ export interface TMappedResult<T extends TProperties = TProperties> extends TSchema {
5
+ [Kind]: 'MappedResult';
6
+ properties: T;
7
+ static: unknown;
8
+ }
9
+ export declare function MappedResult<T extends TProperties>(properties: T): TMappedResult<T>;
@@ -0,0 +1,7 @@
1
+ import { Kind } from '../symbols/index.mjs';
2
+ export function MappedResult(properties) {
3
+ return {
4
+ [Kind]: 'MappedResult',
5
+ properties
6
+ };
7
+ }
@@ -1,50 +1,43 @@
1
1
  import type { TSchema } from '../schema/index.mjs';
2
- import type { Ensure, Evaluate } from '../helpers/index.mjs';
3
- import { IndexedPropertyKeys } from '../indexed/index.mjs';
4
- import { Kind } from '../symbols/index.mjs';
2
+ import type { Ensure, Evaluate, Assert } from '../helpers/index.mjs';
5
3
  import { type TArray } from '../array/index.mjs';
6
4
  import { type TAsyncIterator } from '../async-iterator/index.mjs';
7
5
  import { type TConstructor } from '../constructor/index.mjs';
8
6
  import { type TFunction } from '../function/index.mjs';
7
+ import { type TIndexPropertyKeys } from '../indexed/index.mjs';
9
8
  import { type TIntersect } from '../intersect/index.mjs';
10
9
  import { type TIterator } from '../iterator/index.mjs';
11
10
  import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
12
- import { type TNever } from '../never/index.mjs';
13
11
  import { type TObject, type TProperties, type ObjectOptions } from '../object/index.mjs';
14
12
  import { type TOptional } from '../optional/index.mjs';
15
13
  import { type TPromise } from '../promise/index.mjs';
16
14
  import { type TReadonly } from '../readonly/index.mjs';
15
+ import { type TTuple } from '../tuple/index.mjs';
17
16
  import { type TUnion } from '../union/index.mjs';
18
- export interface TMappedKey<T extends PropertyKey[] = PropertyKey[]> extends TSchema {
19
- [Kind]: 'MappedKey';
20
- static: T[number];
21
- keys: T;
22
- }
23
- export declare function MappedKey<T extends PropertyKey[]>(T: [...T]): TMappedKey<T>;
24
- export type MappedFunction<K extends PropertyKey[], I = TMappedKey<K>> = (T: I) => TSchema;
25
- type FromMappedResult<K extends PropertyKey, P extends TProperties> = (K extends keyof P ? FromMappedPropertyKey<K, P[K]> : TNever);
17
+ import { type TMappedResult } from './mapped-result.mjs';
18
+ import type { TMappedKey } from './mapped-key.mjs';
19
+ type FromMappedResult<K extends PropertyKey, P extends TProperties> = (K extends keyof P ? FromSchemaType<K, P[K]> : TMappedResult<P>);
26
20
  declare function FromMappedResult<K extends PropertyKey, P extends TProperties>(K: K, P: P): FromMappedResult<K, P>;
27
- type FromMappedKey<K extends PropertyKey, _ extends PropertyKey[]> = (K extends TLiteralValue ? TLiteral<K> : TLiteral<'never'>);
28
- declare function FromMappedKey<K extends PropertyKey, P extends PropertyKey[]>(K: K, _: [...P]): TLiteral<TLiteralValue>;
29
- type FromRest<K extends PropertyKey, T extends TSchema[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromMappedPropertyKey<K, L>, ...FromRest<K, R>] : [];
21
+ type MappedKeyToMappedResultProperties<K extends PropertyKey, P extends PropertyKey[]> = (P extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? {
22
+ [_ in L]: TLiteral<Assert<L, TLiteralValue>>;
23
+ } & MappedKeyToMappedResultProperties<K, R> : {});
24
+ declare function MappedKeyToMappedResultProperties<K extends PropertyKey, P extends PropertyKey[]>(K: K, P: [...P]): MappedKeyToMappedResultProperties<K, P>;
25
+ type FromMappedKey<K extends PropertyKey, P extends PropertyKey[], R extends TProperties = MappedKeyToMappedResultProperties<K, P>> = (FromMappedResult<K, R>);
26
+ declare function FromMappedKey<K extends PropertyKey, P extends PropertyKey[]>(K: K, P: [...P]): FromMappedResult<K, MappedKeyToMappedResultProperties<K, P>>;
27
+ type FromRest<K extends PropertyKey, T extends TSchema[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromSchemaType<K, L>, ...FromRest<K, R>] : [];
30
28
  declare function FromRest<K extends PropertyKey, T extends TSchema[]>(K: K, T: [...T]): FromRest<K, T>;
31
29
  type FromProperties<K extends PropertyKey, T extends TProperties, R extends TProperties = Evaluate<{
32
- [K2 in keyof T]: FromMappedPropertyKey<K, T[K2]>;
30
+ [K2 in keyof T]: FromSchemaType<K, T[K2]>;
33
31
  }>> = R;
34
32
  declare function FromProperties<K extends PropertyKey, T extends TProperties>(K: K, T: T): FromProperties<K, T>;
35
- export type FromMappedPropertyKey<K extends PropertyKey, T extends TSchema> = (T extends TReadonly<infer S> ? TReadonly<FromMappedPropertyKey<K, S>> : T extends TOptional<infer S> ? TOptional<FromMappedPropertyKey<K, S>> : T extends TMappedResult<infer P> ? FromMappedResult<K, P> : T extends TMappedKey<infer S> ? FromMappedKey<K, S> : T extends TConstructor<infer S extends TSchema[], infer R extends TSchema> ? TConstructor<FromRest<K, S>, FromMappedPropertyKey<K, R>> : T extends TFunction<infer S extends TSchema[], infer R extends TSchema> ? TFunction<FromRest<K, S>, FromMappedPropertyKey<K, R>> : T extends TAsyncIterator<infer S> ? TAsyncIterator<FromMappedPropertyKey<K, S>> : T extends TIterator<infer S> ? TIterator<FromMappedPropertyKey<K, S>> : T extends TIntersect<infer S> ? TIntersect<FromRest<K, S>> : T extends TUnion<infer S> ? TUnion<FromRest<K, S>> : T extends TObject<infer S> ? TObject<FromProperties<K, S>> : T extends TArray<infer S> ? TArray<FromMappedPropertyKey<K, S>> : T extends TPromise<infer S> ? TPromise<FromMappedPropertyKey<K, S>> : T);
36
- export declare function FromMappedPropertyKey<K extends PropertyKey, T extends TSchema>(K: K, T: T): FromMappedPropertyKey<K, T>;
37
- export type FromMappedPropertyKeys<K extends PropertyKey[], T extends TSchema> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? {
38
- [_ in L]: FromMappedPropertyKey<L, T>;
39
- } & FromMappedPropertyKeys<R, T> : {});
40
- export declare function FromMappedPropertyKeys<K extends PropertyKey[], T extends TSchema>(K: [...K], T: T): FromMappedPropertyKeys<K, T>;
41
- export interface TMappedResult<T extends TProperties = TProperties> extends TSchema {
42
- [Kind]: 'MappedResult';
43
- properties: T;
44
- static: unknown;
45
- }
46
- export declare function MappedResult<T extends TProperties>(properties: T): TMappedResult<T>;
47
- export type TMapped<K extends PropertyKey[], F extends MappedFunction<K>, R extends TProperties = Evaluate<FromMappedPropertyKeys<K, ReturnType<F>>>> = Ensure<TObject<R>>;
48
- export declare function Mapped<K extends TSchema, I extends PropertyKey[] = IndexedPropertyKeys<K>, F extends MappedFunction<I> = MappedFunction<I>, R extends TMapped<I, F> = TMapped<I, F>>(key: K, map: F, options?: ObjectOptions): R;
49
- export declare function Mapped<K extends PropertyKey[], F extends MappedFunction<K> = MappedFunction<K>, R extends TMapped<K, F> = TMapped<K, F>>(key: [...K], map: F, options?: ObjectOptions): R;
33
+ type FromSchemaType<K extends PropertyKey, T extends TSchema> = (T extends TReadonly<infer S> ? TReadonly<FromSchemaType<K, S>> : T extends TOptional<infer S> ? TOptional<FromSchemaType<K, S>> : T extends TMappedResult<infer P> ? FromMappedResult<K, P> : T extends TMappedKey<infer P> ? FromMappedKey<K, P> : T extends TConstructor<infer S extends TSchema[], infer R extends TSchema> ? TConstructor<FromRest<K, S>, FromSchemaType<K, R>> : T extends TFunction<infer S extends TSchema[], infer R extends TSchema> ? TFunction<FromRest<K, S>, FromSchemaType<K, R>> : T extends TAsyncIterator<infer S> ? TAsyncIterator<FromSchemaType<K, S>> : T extends TIterator<infer S> ? TIterator<FromSchemaType<K, S>> : T extends TIntersect<infer S> ? TIntersect<FromRest<K, S>> : T extends TUnion<infer S> ? TUnion<FromRest<K, S>> : T extends TTuple<infer S> ? TTuple<FromRest<K, S>> : T extends TObject<infer S> ? TObject<FromProperties<K, S>> : T extends TArray<infer S> ? TArray<FromSchemaType<K, S>> : T extends TPromise<infer S> ? TPromise<FromSchemaType<K, S>> : T);
34
+ declare function FromSchemaType<K extends PropertyKey, T extends TSchema>(K: K, T: T): FromSchemaType<K, T>;
35
+ type FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? {
36
+ [_ in L]: FromSchemaType<L, T>;
37
+ } & FromMappedFunctionReturnType<R, T> : {});
38
+ declare function FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema>(K: [...K], T: T): FromMappedFunctionReturnType<K, T>;
39
+ export type TMappedFunction<K extends PropertyKey[], I = TMappedKey<K>> = (T: I) => TSchema;
40
+ export type TMapped<K extends PropertyKey[], F extends TMappedFunction<K>, R extends TProperties = Evaluate<FromMappedFunctionReturnType<K, ReturnType<F>>>> = Ensure<TObject<R>>;
41
+ export declare function Mapped<K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>, F extends TMappedFunction<I> = TMappedFunction<I>, R extends TMapped<I, F> = TMapped<I, F>>(key: K, map: F, options?: ObjectOptions): R;
42
+ export declare function Mapped<K extends PropertyKey[], F extends TMappedFunction<K> = TMappedFunction<K>, R extends TMapped<K, F> = TMapped<K, F>>(key: [...K], map: F, options?: ObjectOptions): R;
50
43
  export {};
@@ -1,4 +1,3 @@
1
- import { IndexedPropertyKeys } from '../indexed/index.mjs';
2
1
  import { TSchema as IsSchemaType } from '../guard/type.mjs';
3
2
  import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';
4
3
  import { CloneType } from '../clone/type.mjs';
@@ -7,72 +6,70 @@ import { Array } from '../array/index.mjs';
7
6
  import { AsyncIterator } from '../async-iterator/index.mjs';
8
7
  import { Constructor } from '../constructor/index.mjs';
9
8
  import { Function as FunctionType } from '../function/index.mjs';
9
+ import { IndexPropertyKeys } from '../indexed/index.mjs';
10
10
  import { Intersect } from '../intersect/index.mjs';
11
11
  import { Iterator } from '../iterator/index.mjs';
12
12
  import { Literal } from '../literal/index.mjs';
13
- import { Never } from '../never/index.mjs';
14
13
  import { Object } from '../object/index.mjs';
15
14
  import { Optional } from '../optional/index.mjs';
16
15
  import { Promise } from '../promise/index.mjs';
17
16
  import { Readonly } from '../readonly/index.mjs';
17
+ import { Tuple } from '../tuple/index.mjs';
18
18
  import { Union } from '../union/index.mjs';
19
- import { TOptional as IsOptionalType, TReadonly as IsReadonlyType, TMappedResult as IsMappedResultType, TMappedKey as IsMappedKeyType, TConstructor as IsConstructorType, TFunction as IsFunctionType, TAsyncIterator as IsAsyncIteratorType, TIterator as IsIteratorType, TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType, TArray as IsArrayType, TPromise as IsPromiseType, } from '../guard/type.mjs';
20
- export function MappedKey(T) {
21
- return {
22
- [Kind]: 'MappedKey',
23
- keys: T
24
- };
25
- }
19
+ import { MappedResult } from './mapped-result.mjs';
20
+ import { TArray as IsArrayType, TAsyncIterator as IsAsyncIteratorType, TConstructor as IsConstructorType, TFunction as IsFunctionType, TIntersect as IsIntersectType, TIterator as IsIteratorType, TReadonly as IsReadonlyType, TMappedResult as IsMappedResultType, TMappedKey as IsMappedKeyType, TObject as IsObjectType, TOptional as IsOptionalType, TPromise as IsPromiseType, TTuple as IsTupleType, TUnion as IsUnionType, } from '../guard/type.mjs';
26
21
  function FromMappedResult(K, P) {
27
22
  return (K in P
28
- ? FromMappedPropertyKey(K, P[K])
29
- : Never());
23
+ ? FromSchemaType(K, P[K])
24
+ : MappedResult(P));
25
+ }
26
+ function MappedKeyToMappedResultProperties(K, P) {
27
+ const [L, ...R] = P;
28
+ return (P.length > 0
29
+ ? { [L]: Literal(L), ...MappedKeyToMappedResultProperties(K, R) }
30
+ : {});
30
31
  }
31
- function FromMappedKey(K, _) {
32
- return Literal(K);
32
+ function FromMappedKey(K, P) {
33
+ const R = MappedKeyToMappedResultProperties(K, P);
34
+ return FromMappedResult(K, R);
33
35
  }
34
36
  function FromRest(K, T) {
35
37
  const [L, ...R] = T;
36
38
  return (T.length > 0
37
- ? [FromMappedPropertyKey(K, L), ...FromRest(K, R)]
39
+ ? [FromSchemaType(K, L), ...FromRest(K, R)]
38
40
  : []);
39
41
  }
40
42
  function FromProperties(K, T) {
41
43
  return globalThis.Object.getOwnPropertyNames(T).reduce((Acc, K2) => {
42
- return { ...Acc, [K2]: FromMappedPropertyKey(K, T[K2]) };
44
+ return { ...Acc, [K2]: FromSchemaType(K, T[K2]) };
43
45
  }, {});
44
46
  }
45
- export function FromMappedPropertyKey(K, T) {
46
- return (IsOptionalType(T) ? Optional(FromMappedPropertyKey(K, Discard(T, [OptionalKind]))) :
47
- IsReadonlyType(T) ? Readonly(FromMappedPropertyKey(K, Discard(T, [ReadonlyKind]))) :
47
+ function FromSchemaType(K, T) {
48
+ return (IsOptionalType(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :
49
+ IsReadonlyType(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :
48
50
  IsMappedResultType(T) ? FromMappedResult(K, T.properties) :
49
51
  IsMappedKeyType(T) ? FromMappedKey(K, T.keys) :
50
- IsConstructorType(T) ? Constructor(FromRest(K, T.parameters), FromMappedPropertyKey(K, T.returns)) :
51
- IsFunctionType(T) ? FunctionType(FromRest(K, T.parameters), FromMappedPropertyKey(K, T.returns)) :
52
- IsAsyncIteratorType(T) ? AsyncIterator(FromMappedPropertyKey(K, T.items)) :
53
- IsIteratorType(T) ? Iterator(FromMappedPropertyKey(K, T.items)) :
52
+ IsConstructorType(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :
53
+ IsFunctionType(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :
54
+ IsAsyncIteratorType(T) ? AsyncIterator(FromSchemaType(K, T.items)) :
55
+ IsIteratorType(T) ? Iterator(FromSchemaType(K, T.items)) :
54
56
  IsIntersectType(T) ? Intersect(FromRest(K, T.allOf)) :
55
57
  IsUnionType(T) ? Union(FromRest(K, T.anyOf)) :
56
- IsObjectType(T) ? Object(FromProperties(K, T.properties)) :
57
- IsArrayType(T) ? Array(FromMappedPropertyKey(K, T.items)) :
58
- IsPromiseType(T) ? Promise(FromMappedPropertyKey(K, T.item)) :
59
- T);
58
+ IsTupleType(T) ? Tuple(FromRest(K, T.items ?? [])) :
59
+ IsObjectType(T) ? Object(FromProperties(K, T.properties)) :
60
+ IsArrayType(T) ? Array(FromSchemaType(K, T.items)) :
61
+ IsPromiseType(T) ? Promise(FromSchemaType(K, T.item)) :
62
+ T);
60
63
  }
61
- export function FromMappedPropertyKeys(K, T) {
64
+ function FromMappedFunctionReturnType(K, T) {
62
65
  const [L, ...R] = K;
63
66
  return (K.length > 0
64
- ? { [L]: FromMappedPropertyKey(L, T), ...FromMappedPropertyKeys(R, T) }
67
+ ? { [L]: FromSchemaType(L, T), ...FromMappedFunctionReturnType(R, T) }
65
68
  : {});
66
69
  }
67
- export function MappedResult(properties) {
68
- return {
69
- [Kind]: 'MappedResult',
70
- properties
71
- };
72
- }
73
70
  export function Mapped(key, map, options = {}) {
74
- const K = IsSchemaType(key) ? IndexedPropertyKeys(key) : key;
71
+ const K = IsSchemaType(key) ? IndexPropertyKeys(key) : key;
75
72
  const RT = map({ [Kind]: 'MappedKey', keys: K });
76
- const R = FromMappedPropertyKeys(K, RT);
73
+ const R = FromMappedFunctionReturnType(K, RT);
77
74
  return CloneType(Object(R), options);
78
75
  }
@@ -1 +1,2 @@
1
+ export * from './omit-mapped-result.mjs';
1
2
  export * from './omit.mjs';
@@ -1 +1,2 @@
1
+ export * from './omit-mapped-result.mjs';
1
2
  export * from './omit.mjs';
@@ -0,0 +1,15 @@
1
+ import type { TSchema } from '../schema/index.mjs';
2
+ import type { TProperties } from '../object/index.mjs';
3
+ import { type TMappedResult, type TMappedKey } from '../mapped/index.mjs';
4
+ import { type TOmit } from './omit.mjs';
5
+ type MappedOmitPropertyKey<T extends TSchema, K extends PropertyKey> = {
6
+ [_ in K]: TOmit<T, [K]>;
7
+ };
8
+ declare function MappedOmitPropertyKey<T extends TSchema, K extends PropertyKey>(T: T, K: K): MappedOmitPropertyKey<T, K>;
9
+ type MappedOmitPropertyKeys<T extends TSchema, K extends PropertyKey[]> = (K extends [infer LK extends PropertyKey, ...infer RK extends PropertyKey[]] ? MappedOmitPropertyKey<T, LK> & MappedOmitPropertyKeys<T, RK> : {});
10
+ declare function MappedOmitPropertyKeys<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): MappedOmitPropertyKeys<T, K>;
11
+ type MappedOmitProperties<T extends TSchema, K extends TMappedKey> = (MappedOmitPropertyKeys<T, K['keys']>);
12
+ declare function MappedOmitProperties<T extends TSchema, K extends TMappedKey>(T: T, K: K): MappedOmitProperties<T, K>;
13
+ export type TOmitMappedResult<T extends TSchema, K extends TMappedKey, P extends TProperties = MappedOmitProperties<T, K>> = (TMappedResult<P>);
14
+ export declare function OmitMappedResult<T extends TSchema, K extends TMappedKey, P extends TProperties = MappedOmitProperties<T, K>>(T: T, K: K): TMappedResult<P>;
15
+ export {};
@@ -0,0 +1,20 @@
1
+ import { MappedResult } from '../mapped/index.mjs';
2
+ import { Omit } from './omit.mjs';
3
+ function MappedOmitPropertyKey(T, K) {
4
+ return {
5
+ [K]: Omit(T, [K])
6
+ };
7
+ }
8
+ function MappedOmitPropertyKeys(T, K) {
9
+ const [LK, ...RK] = K;
10
+ return (K.length > 0
11
+ ? { ...MappedOmitPropertyKey(T, LK), ...MappedOmitPropertyKeys(T, RK) }
12
+ : {});
13
+ }
14
+ function MappedOmitProperties(T, K) {
15
+ return MappedOmitPropertyKeys(T, K.keys);
16
+ }
17
+ export function OmitMappedResult(T, K) {
18
+ const P = MappedOmitProperties(T, K);
19
+ return MappedResult(P);
20
+ }