@augment-vir/core 32.1.0 → 32.2.1

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 (93) hide show
  1. package/dist/augments/error/ensure-error.d.ts +1 -1
  2. package/dist/augments/json/json-compatible.d.ts +2 -1
  3. package/dist/augments/json/json-value.d.ts +46 -0
  4. package/dist/augments/json/json-value.js +1 -0
  5. package/dist/augments/json/jsonify.d.ts +41 -0
  6. package/dist/augments/json/jsonify.js +1 -0
  7. package/dist/augments/number/infinity.d.ts +22 -0
  8. package/dist/augments/number/infinity.js +1 -0
  9. package/dist/augments/object/object-keys.d.ts +1 -1
  10. package/dist/augments/object/required-keys.d.ts +5 -5
  11. package/dist/augments/type/apply-default-options.d.ts +24 -0
  12. package/dist/augments/type/apply-default-options.js +1 -0
  13. package/dist/augments/type/built-in-type.d.ts +28 -0
  14. package/dist/augments/type/built-in-type.js +1 -0
  15. package/dist/augments/type/conditional-type.d.ts +25 -0
  16. package/dist/augments/type/conditional-type.js +1 -0
  17. package/dist/augments/type/constructor-type.d.ts +51 -0
  18. package/dist/augments/type/constructor-type.js +1 -0
  19. package/dist/augments/type/distributed-omit.d.ts +13 -0
  20. package/dist/augments/type/distributed-omit.js +1 -0
  21. package/dist/augments/type/empty-object.d.ts +27 -0
  22. package/dist/augments/type/empty-object.js +1 -0
  23. package/dist/augments/type/exact.d.ts +23 -0
  24. package/dist/augments/type/exact.js +1 -0
  25. package/dist/augments/type/except.d.ts +40 -0
  26. package/dist/augments/type/except.js +1 -0
  27. package/dist/augments/type/exclude-exactly.d.ts +27 -0
  28. package/dist/augments/type/exclude-exactly.js +1 -0
  29. package/dist/augments/type/is-unknown.d.ts +22 -0
  30. package/dist/augments/type/is-unknown.js +1 -0
  31. package/dist/augments/type/keys-of-union.d.ts +14 -0
  32. package/dist/augments/type/keys-of-union.js +1 -0
  33. package/dist/augments/type/literal-union.d.ts +13 -0
  34. package/dist/augments/type/literal-union.js +1 -0
  35. package/dist/augments/type/merge.d.ts +20 -0
  36. package/dist/augments/type/merge.js +1 -0
  37. package/dist/augments/type/non-empty-string.d.ts +9 -0
  38. package/dist/augments/type/non-empty-string.js +1 -0
  39. package/dist/augments/type/omit-deep.d.ts +373 -0
  40. package/dist/augments/type/omit-deep.js +1 -0
  41. package/dist/augments/type/omit-index-signature.d.ts +28 -0
  42. package/dist/augments/type/omit-index-signature.js +2 -0
  43. package/dist/augments/type/optional-keys-of.d.ts +25 -0
  44. package/dist/augments/type/optional-keys-of.js +1 -0
  45. package/dist/augments/type/package-json.d.ts +177 -0
  46. package/dist/augments/type/package-json.js +1 -0
  47. package/dist/augments/type/partial-deep.d.ts +52 -0
  48. package/dist/augments/type/partial-deep.js +1 -0
  49. package/dist/augments/type/primitive-type.d.ts +11 -0
  50. package/dist/augments/type/primitive-type.js +1 -0
  51. package/dist/augments/type/promisable.d.ts +11 -0
  52. package/dist/augments/type/promisable.js +1 -0
  53. package/dist/augments/type/readonly-deep.d.ts +30 -0
  54. package/dist/augments/type/readonly-deep.js +1 -0
  55. package/dist/augments/type/readonly-keys-of.d.ts +20 -0
  56. package/dist/augments/type/readonly-keys-of.js +1 -0
  57. package/dist/augments/type/require-keys.d.ts +47 -0
  58. package/dist/augments/type/require-keys.js +1 -0
  59. package/dist/augments/type/require-one-or-none.d.ts +18 -0
  60. package/dist/augments/type/require-one-or-none.js +1 -0
  61. package/dist/augments/type/set-optional.d.ts +19 -0
  62. package/dist/augments/type/set-optional.js +1 -0
  63. package/dist/augments/type/set-required.d.ts +47 -0
  64. package/dist/augments/type/set-required.js +1 -0
  65. package/dist/augments/type/simplify.d.ts +14 -0
  66. package/dist/augments/type/simplify.js +1 -0
  67. package/dist/augments/type/subtract.d.ts +177 -0
  68. package/dist/augments/type/subtract.js +1 -0
  69. package/dist/augments/type/tagged.d.ts +30 -0
  70. package/dist/augments/type/tagged.js +1 -0
  71. package/dist/augments/type/type-checks.d.ts +33 -0
  72. package/dist/augments/type/type-checks.js +8 -0
  73. package/dist/augments/type/typed-array.d.ts +13 -0
  74. package/dist/augments/type/typed-array.js +1 -0
  75. package/dist/augments/type/undefined-to-optional.d.ts +27 -0
  76. package/dist/augments/type/undefined-to-optional.js +1 -0
  77. package/dist/augments/type/union-member.d.ts +14 -0
  78. package/dist/augments/type/union-member.js +1 -0
  79. package/dist/augments/type/union-to-intersection.d.ts +11 -0
  80. package/dist/augments/type/union-to-intersection.js +1 -0
  81. package/dist/augments/type/union-to-tuple.d.ts +21 -0
  82. package/dist/augments/type/union-to-tuple.js +1 -0
  83. package/dist/augments/type/unknown-array.d.ts +11 -0
  84. package/dist/augments/type/unknown-array.js +1 -0
  85. package/dist/augments/type/writable-deep.d.ts +32 -0
  86. package/dist/augments/type/writable-deep.js +1 -0
  87. package/dist/augments/type/writable-keys-of.d.ts +12 -0
  88. package/dist/augments/type/writable-keys-of.js +1 -0
  89. package/dist/augments/type/writable.d.ts +29 -0
  90. package/dist/augments/type/writable.js +1 -0
  91. package/dist/index.d.ts +43 -0
  92. package/dist/index.js +43 -0
  93. package/package.json +2 -3
@@ -0,0 +1,373 @@
1
+ import { type ApplyDefaultOptions } from './apply-default-options.js';
2
+ import { type BuiltIns } from './built-in-type.js';
3
+ import { type If } from './conditional-type.js';
4
+ import { type LiteralUnion } from './literal-union.js';
5
+ import { type IsAny, type IsEqual, type IsNever } from './type-checks.js';
6
+ import { type UnknownArray } from './unknown-array.js';
7
+ type IfNotAnyOrNever<T, IfNotAny, IfAny = any, IfNever = never> = If<IsAny<T>, IfAny, If<IsNever<T>, IfNever, IfNotAny>>;
8
+ type NonRecursiveType = BuiltIns | Function | (new (...arguments_: any[]) => unknown) | Promise<unknown>;
9
+ type MapsSetsOrArrays = ReadonlyMap<unknown, unknown> | WeakMap<WeakKey, unknown> | ReadonlySet<unknown> | WeakSet<WeakKey> | UnknownArray;
10
+ type DigitCharacter = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
11
+ type PositiveInfinity = 1e999;
12
+ type NegativeInfinity = -1e999;
13
+ type Zero = 0 | 0n;
14
+ type Negative<T extends number | bigint> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never;
15
+ type IsNegative<T extends number | bigint> = T extends Negative<T> ? true : false;
16
+ type ReverseSign<N extends number> = N extends 0 ? 0 : N extends PositiveInfinity ? NegativeInfinity : N extends NegativeInfinity ? PositiveInfinity : `${N}` extends `-${infer P extends number}` ? P : `-${N}` extends `${infer R extends number}` ? R : never;
17
+ type StringToNumber<S extends string> = S extends `${infer N extends number}` ? N : S extends 'Infinity' ? PositiveInfinity : S extends '-Infinity' ? NegativeInfinity : never;
18
+ type Absolute<N extends number | bigint> = N extends bigint ? `${N}` extends `-${infer Magnitude extends bigint}` ? Magnitude : N : `${N}` extends `-${infer Magnitude}` ? StringToNumber<Magnitude> : N;
19
+ type StringToArray<S extends string, Result extends string[] = []> = string extends S ? never : S extends `${infer First}${infer Rest}` ? StringToArray<Rest, [
20
+ ...Result,
21
+ First
22
+ ]> : Result;
23
+ type StringLength<S extends string> = string extends S ? never : StringToArray<S>['length'];
24
+ type NumericString = '0123456789';
25
+ type PositiveNumericCharacterGt<A extends string, B extends string> = NumericString extends `${infer HeadA}${A}${infer _TailA}` ? NumericString extends `${infer HeadB}${B}${infer _TailB}` ? HeadA extends `${HeadB}${infer _Middle}${infer _Rest}` ? true : false : never : never;
26
+ type SameLengthPositiveNumericStringGt<A extends string, B extends string> = A extends `${infer FirstA}${infer RestA}` ? B extends `${infer FirstB}${infer RestB}` ? FirstA extends FirstB ? SameLengthPositiveNumericStringGt<RestA, RestB> : PositiveNumericCharacterGt<FirstA, FirstB> : never : false;
27
+ type PositiveNumericStringGt<A extends string, B extends string> = A extends B ? false : [
28
+ TupleOf<StringLength<A>, 0>,
29
+ TupleOf<StringLength<B>, 0>
30
+ ] extends infer Lengths extends [
31
+ readonly unknown[],
32
+ readonly unknown[]
33
+ ] ? Lengths[0] extends [
34
+ ...Lengths[1],
35
+ ...infer Remaining extends readonly unknown[]
36
+ ] ? 0 extends Remaining['length'] ? SameLengthPositiveNumericStringGt<A, B> : true : false : never;
37
+ /**
38
+ * Simplified 2-input logical `and`. `type-fest` routes `And` through `AndAll`/`AllExtend`, but
39
+ * every consumer here (`GreaterThan` and `InternalPaths`) always passes concrete `true`/`false`
40
+ * values, for which this definition is behaviorally identical.
41
+ */
42
+ type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
43
+ /** Simplified 2-input logical `or`. See the note on {@link And}. */
44
+ type Or<A extends boolean, B extends boolean> = A extends true ? true : B extends true ? true : false;
45
+ type GreaterThan<A extends number, B extends number> = A extends number ? B extends number ? number extends A | B ? boolean : [
46
+ IsEqual<A, PositiveInfinity>,
47
+ IsEqual<A, NegativeInfinity>,
48
+ IsEqual<B, PositiveInfinity>,
49
+ IsEqual<B, NegativeInfinity>
50
+ ] extends infer R extends [
51
+ boolean,
52
+ boolean,
53
+ boolean,
54
+ boolean
55
+ ] ? Or<And<IsEqual<R[0], true>, IsEqual<R[2], false>>, And<IsEqual<R[3], true>, IsEqual<R[1], false>>> extends true ? true : Or<And<IsEqual<R[1], true>, IsEqual<R[3], false>>, And<IsEqual<R[2], true>, IsEqual<R[0], false>>> extends true ? false : true extends R[number] ? false : [
56
+ IsNegative<A>,
57
+ IsNegative<B>
58
+ ] extends infer Signs extends [
59
+ boolean,
60
+ boolean
61
+ ] ? [
62
+ true,
63
+ false
64
+ ] extends Signs ? false : [
65
+ false,
66
+ true
67
+ ] extends Signs ? true : [
68
+ false,
69
+ false
70
+ ] extends Signs ? PositiveNumericStringGt<`${A}`, `${B}`> : PositiveNumericStringGt<`${Absolute<B>}`, `${Absolute<A>}`> : never : never : never : never;
71
+ type GreaterThanOrEqual<A extends number, B extends number> = number extends A | B ? boolean : A extends number ? B extends number ? A extends B ? true : GreaterThan<A, B> : never : never;
72
+ type LessThan<A extends number, B extends number> = GreaterThanOrEqual<A, B> extends infer Result ? (Result extends true ? false : true) : never;
73
+ type _TupleOf<Length extends number, Fill> = number extends Length ? Fill[] : BuildTupleDigitByDigit<`${Length}`, Fill>;
74
+ type BuildTupleDigitByDigit<Length extends string, Fill, Accumulator extends UnknownArray = []> = Length extends `${infer First extends DigitCharacter}${infer Rest}` ? BuildTupleDigitByDigit<Rest, Fill, [
75
+ ...RepeatTupleTenTimes<Accumulator>,
76
+ ...DigitTupleOf<First, Fill>
77
+ ]> : Accumulator;
78
+ type RepeatTupleTenTimes<Tuple extends UnknownArray> = [
79
+ ...Tuple,
80
+ ...Tuple,
81
+ ...Tuple,
82
+ ...Tuple,
83
+ ...Tuple,
84
+ ...Tuple,
85
+ ...Tuple,
86
+ ...Tuple,
87
+ ...Tuple,
88
+ ...Tuple
89
+ ];
90
+ type DigitTupleOf<Digit extends DigitCharacter, Fill> = [
91
+ [
92
+ ],
93
+ [
94
+ Fill
95
+ ],
96
+ [
97
+ Fill,
98
+ Fill
99
+ ],
100
+ [
101
+ Fill,
102
+ Fill,
103
+ Fill
104
+ ],
105
+ [
106
+ Fill,
107
+ Fill,
108
+ Fill,
109
+ Fill
110
+ ],
111
+ [
112
+ Fill,
113
+ Fill,
114
+ Fill,
115
+ Fill,
116
+ Fill
117
+ ],
118
+ [
119
+ Fill,
120
+ Fill,
121
+ Fill,
122
+ Fill,
123
+ Fill,
124
+ Fill
125
+ ],
126
+ [
127
+ Fill,
128
+ Fill,
129
+ Fill,
130
+ Fill,
131
+ Fill,
132
+ Fill,
133
+ Fill
134
+ ],
135
+ [
136
+ Fill,
137
+ Fill,
138
+ Fill,
139
+ Fill,
140
+ Fill,
141
+ Fill,
142
+ Fill,
143
+ Fill
144
+ ],
145
+ [
146
+ Fill,
147
+ Fill,
148
+ Fill,
149
+ Fill,
150
+ Fill,
151
+ Fill,
152
+ Fill,
153
+ Fill,
154
+ Fill
155
+ ]
156
+ ][Digit];
157
+ type TupleOf<Length extends number, Fill = unknown> = IfNotAnyOrNever<Length, _TupleOf<If<IsNegative<Length>, 0, Length>, Fill>, Fill[], [
158
+ ]>;
159
+ type SubtractIfAGreaterThanB<A extends number, B extends number> = TupleOf<A> extends [
160
+ ...TupleOf<B>,
161
+ ...infer R
162
+ ] ? R['length'] : never;
163
+ type SubtractPositives<A extends number, B extends number> = LessThan<A, B> extends true ? ReverseSign<SubtractIfAGreaterThanB<B, A>> : SubtractIfAGreaterThanB<A, B>;
164
+ type SubtractPostChecks<A extends number, B extends number, AreNegative = [
165
+ IsNegative<A>,
166
+ IsNegative<B>
167
+ ]> = AreNegative extends [
168
+ false,
169
+ false
170
+ ] ? SubtractPositives<A, B> : AreNegative extends [
171
+ true,
172
+ true
173
+ ] ? ReverseSign<SubtractPositives<Absolute<A>, Absolute<B>>> : [
174
+ ...TupleOf<Absolute<A>>,
175
+ ...TupleOf<Absolute<B>>
176
+ ] extends infer R extends unknown[] ? LessThan<A, B> extends true ? ReverseSign<R['length']> : R['length'] : never;
177
+ type Subtract<A extends number, B extends number> = number extends A | B ? number : A extends B & (PositiveInfinity | NegativeInfinity) ? number : A extends NegativeInfinity ? NegativeInfinity : B extends PositiveInfinity ? NegativeInfinity : A extends PositiveInfinity ? PositiveInfinity : B extends NegativeInfinity ? PositiveInfinity : A extends B ? 0 : A extends 0 ? ReverseSign<B> : B extends 0 ? A : SubtractPostChecks<A, B>;
178
+ type TupleMax<A extends number[], Result extends number = NegativeInfinity> = number extends A[number] ? never : A extends [
179
+ infer First extends number,
180
+ ...infer Rest extends number[]
181
+ ] ? GreaterThan<First, Result> extends true ? TupleMax<Rest, First> : TupleMax<Rest, Result> : Result;
182
+ type SumPositives<A extends number, B extends number> = [
183
+ ...TupleOf<A>,
184
+ ...TupleOf<B>
185
+ ]['length'] extends infer Result extends number ? Result : never;
186
+ type SumPostChecks<A extends number, B extends number, AreNegative = [
187
+ IsNegative<A>,
188
+ IsNegative<B>
189
+ ]> = AreNegative extends [
190
+ false,
191
+ false
192
+ ] ? SumPositives<A, B> : AreNegative extends [
193
+ true,
194
+ true
195
+ ] ? ReverseSign<SumPositives<Absolute<A>, Absolute<B>>> : Absolute<Subtract<Absolute<A>, Absolute<B>>> extends infer Result extends number ? TupleMax<[
196
+ Absolute<A>,
197
+ Absolute<B>
198
+ ]> extends infer LargestMagnitude extends number ? LargestMagnitude extends A | B ? Result : ReverseSign<Result> : never : never;
199
+ type Sum<A extends number, B extends number> = number extends A | B ? number : A extends B & (PositiveInfinity | NegativeInfinity) ? A : A | B extends PositiveInfinity | NegativeInfinity ? number : A extends PositiveInfinity | NegativeInfinity ? A : B extends PositiveInfinity | NegativeInfinity ? B : A extends 0 ? B : B extends 0 ? A : A extends ReverseSign<B> ? 0 : SumPostChecks<A, B>;
200
+ type IsNumberLike<N> = IfNotAnyOrNever<N, N extends number | `${number}` ? true : false, boolean, false>;
201
+ type StaticPartOfArray<T extends UnknownArray, Result extends UnknownArray = []> = T extends unknown ? number extends T['length'] ? T extends readonly [
202
+ infer U,
203
+ ...infer V
204
+ ] ? StaticPartOfArray<V, [
205
+ ...Result,
206
+ U
207
+ ]> : Result : T : never;
208
+ type VariablePartOfArray<T extends UnknownArray> = T extends unknown ? T extends readonly [
209
+ ...StaticPartOfArray<T>,
210
+ ...infer U
211
+ ] ? U : [] : never;
212
+ type SetArrayAccess<T extends UnknownArray, IsReadonly extends boolean> = T extends readonly [
213
+ ...infer U
214
+ ] ? IsReadonly extends true ? readonly [...U] : [...U] : T;
215
+ type IsArrayReadonly<T extends UnknownArray> = If<IsNever<T>, false, T extends unknown[] ? false : true>;
216
+ type SplitFixedArrayByIndex<T extends UnknownArray, SplitIndex extends number> = SplitIndex extends 0 ? [
217
+ [
218
+ ],
219
+ T
220
+ ] : T extends readonly [
221
+ ...TupleOf<SplitIndex>,
222
+ ...infer V
223
+ ] ? T extends readonly [
224
+ ...infer U,
225
+ ...V
226
+ ] ? [
227
+ U,
228
+ V
229
+ ] : [
230
+ never,
231
+ never
232
+ ] : [
233
+ never,
234
+ never
235
+ ];
236
+ type SplitVariableArrayByIndex<T extends UnknownArray, SplitIndex extends number, T1 = Subtract<SplitIndex, StaticPartOfArray<T>['length']>, T2 = T1 extends number ? TupleOf<GreaterThanOrEqual<T1, 0> extends true ? T1 : number, VariablePartOfArray<T>[number]> : []> = SplitIndex extends 0 ? [
237
+ [
238
+ ],
239
+ T
240
+ ] : GreaterThanOrEqual<StaticPartOfArray<T>['length'], SplitIndex> extends true ? [
241
+ SplitFixedArrayByIndex<StaticPartOfArray<T>, SplitIndex>[0],
242
+ [
243
+ ...SplitFixedArrayByIndex<StaticPartOfArray<T>, SplitIndex>[1],
244
+ ...VariablePartOfArray<T>
245
+ ]
246
+ ] : [
247
+ [
248
+ ...StaticPartOfArray<T>,
249
+ ...(T2 extends UnknownArray ? T2 : [])
250
+ ],
251
+ VariablePartOfArray<T>
252
+ ];
253
+ type SplitArrayByIndex<T extends UnknownArray, SplitIndex extends number> = SplitIndex extends 0 ? [
254
+ [
255
+ ],
256
+ T
257
+ ] : number extends T['length'] ? SplitVariableArrayByIndex<T, SplitIndex> : SplitFixedArrayByIndex<T, SplitIndex>;
258
+ type ArraySplice<T extends UnknownArray, Start extends number, DeleteCount extends number, Items extends UnknownArray = []> = SplitArrayByIndex<T, Start> extends [
259
+ infer U extends UnknownArray,
260
+ infer V extends UnknownArray
261
+ ] ? SplitArrayByIndex<V, DeleteCount> extends [
262
+ infer _Deleted extends UnknownArray,
263
+ infer X extends UnknownArray
264
+ ] ? [
265
+ ...U,
266
+ ...Items,
267
+ ...X
268
+ ] : never : never;
269
+ type ToString<T> = T extends string | number ? `${T}` : never;
270
+ type ExactKey<T extends object, Key extends PropertyKey> = Key extends keyof T ? Key : ToString<Key> extends keyof T ? ToString<Key> : Key extends `${infer NumberKey extends number}` ? NumberKey extends keyof T ? NumberKey : never : never;
271
+ type UnionToIntersection<Union> = (Union extends unknown ? (distributedUnion: Union) => void : never) extends (mergedIntersection: infer Intersection) => void ? Intersection & Union : never;
272
+ type UnionMember<T> = IsNever<T> extends true ? never : UnionToIntersection<T extends any ? () => T : never> extends () => infer R ? R : never;
273
+ type _ExcludeExactly<Union, Delete> = IfNotAnyOrNever<Delete, Union extends unknown ? [
274
+ Delete extends unknown ? If<IsEqual<Union, Delete>, true, never> : never
275
+ ] extends [never] ? Union : never : never, Union, Union>;
276
+ type ExcludeExactly<Union, Delete> = IfNotAnyOrNever<Union, _ExcludeExactly<Union, Delete>, If<IsAny<Delete>, never, Union>, If<IsNever<Delete>, never, Union>>;
277
+ type _UnionToTuple<Union, Accumulator extends UnknownArray = [], Member = UnionMember<Union>> = IsNever<Union> extends true ? Accumulator : _UnionToTuple<ExcludeExactly<Union, Member>, [
278
+ Member,
279
+ ...Accumulator
280
+ ]>;
281
+ type UnionToTuple<Union> = _UnionToTuple<Union> extends infer Result extends UnknownArray ? Result : never;
282
+ type ConditionalSimplifyDeep<Type, ExcludeType = never, IncludeType = unknown> = Type extends ExcludeType ? Type : Type extends IncludeType ? {
283
+ [TypeKey in keyof Type]: ConditionalSimplifyDeep<Type[TypeKey], ExcludeType, IncludeType>;
284
+ } : Type;
285
+ type SimplifyDeep<Type, ExcludeType = never> = ConditionalSimplifyDeep<Type, ExcludeType | NonRecursiveType | Exclude<MapsSetsOrArrays, UnknownArray>, object>;
286
+ /**
287
+ * Options for {@link Paths}.
288
+ *
289
+ * Copied from the `PathsOptions` type in `type-fest` v5.6 so that this package's public types do
290
+ * not depend on `type-fest` (see the note in `type-checks.ts`).
291
+ *
292
+ * @category Object
293
+ * @category Package : @augment-vir/common
294
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
295
+ */
296
+ export type PathsOptions = {
297
+ /**
298
+ * The maximum depth to recurse when searching for paths. Range: 0 ~ 10.
299
+ *
300
+ * @default 5
301
+ */
302
+ maxRecursionDepth?: number;
303
+ /**
304
+ * Use bracket notation for array indices and numeric object keys.
305
+ *
306
+ * @default false
307
+ */
308
+ bracketNotation?: boolean;
309
+ /**
310
+ * Only include leaf paths in the output.
311
+ *
312
+ * @default false
313
+ */
314
+ leavesOnly?: boolean;
315
+ /**
316
+ * Only include paths at the specified depth. By default all paths up to
317
+ * {@link PathsOptions.maxRecursionDepth} are included. Depth starts at `0` for root properties.
318
+ *
319
+ * @default number
320
+ */
321
+ depth?: number;
322
+ };
323
+ type DefaultPathsOptions = {
324
+ maxRecursionDepth: 5;
325
+ bracketNotation: false;
326
+ leavesOnly: false;
327
+ depth: number;
328
+ };
329
+ type InternalPaths<T, Options extends Required<PathsOptions>, CurrentDepth extends number> = {
330
+ [Key in keyof T]: Key extends string | number ? (And<Options['bracketNotation'], IsNumberLike<Key>> extends true ? `[${Key}]` : CurrentDepth extends 0 ? /**
331
+ * Return both `Key` and `ToString<Key>` because for number keys, like `1`, both `1` and `'1'` are
332
+ * valid keys.
333
+ */ Key | ToString<Key> : `.${Key | ToString<Key>}`) extends infer TransformedKey extends string | number ? ((Options['leavesOnly'] extends true ? Options['maxRecursionDepth'] extends CurrentDepth ? TransformedKey : IsNever<T[Key]> extends true ? TransformedKey : T[Key] extends infer Value ? Value extends readonly [] | NonRecursiveType | Exclude<MapsSetsOrArrays, UnknownArray> ? TransformedKey : IsNever<keyof Value> extends true ? TransformedKey : never : never : TransformedKey) extends infer LeafFilteredKey ? CurrentDepth extends Options['depth'] ? LeafFilteredKey : never : never)
334
+ /** Recursively generate paths for the current key. */
335
+ | (GreaterThan<Options['maxRecursionDepth'], CurrentDepth> extends true ? `${TransformedKey}${PathsHelper<T[Key], Options, Sum<CurrentDepth, 1>> & (string | number)}` : never) : never : never;
336
+ }[keyof T & (T extends UnknownArray ? number : unknown)];
337
+ type PathsHelper<T, Options extends Required<PathsOptions>, CurrentDepth extends number = 0> = T extends NonRecursiveType | Exclude<MapsSetsOrArrays, UnknownArray> ? never : IsAny<T> extends true ? never : T extends object ? InternalPaths<Required<T>, Options, CurrentDepth> : never;
338
+ /**
339
+ * Generate a union of all possible paths to properties in the given object. Also works with arrays.
340
+ *
341
+ * Copied from the `Paths` type in `type-fest` v5.6 so that this package's public types do not
342
+ * depend on `type-fest` (see the note in `type-checks.ts`).
343
+ *
344
+ * @category Object
345
+ * @category Array
346
+ * @category Package : @augment-vir/common
347
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
348
+ */
349
+ export type Paths<T, Options extends PathsOptions = {}> = PathsHelper<T, ApplyDefaultOptions<PathsOptions, DefaultPathsOptions, Options>>;
350
+ type OmitDeepArrayWithOnePath<ArrayType extends UnknownArray, P extends string | number> = P extends `${infer ArrayIndex extends number}.${infer SubPath}` ? number extends ArrayIndex ? Array<OmitDeepWithOnePath<NonNullable<ArrayType[number]>, SubPath>> : ArraySplice<ArrayType, ArrayIndex, 1, [
351
+ OmitDeepWithOnePath<NonNullable<ArrayType[ArrayIndex]>, SubPath>
352
+ ]> : P extends `${infer ArrayIndex extends number}` ? number extends ArrayIndex ? [] : ArraySplice<ArrayType, ArrayIndex, 1, [unknown]> : ArrayType;
353
+ type OmitDeepObjectWithOnePath<ObjectT extends object, P extends string | number> = P extends `${infer RecordKeyInPath}.${infer SubPath}` ? {
354
+ [Key in keyof ObjectT]: IsEqual<RecordKeyInPath, ToString<Key>> extends true ? ExactKey<ObjectT, Key> extends infer RealKey ? RealKey extends keyof ObjectT ? OmitDeepWithOnePath<ObjectT[RealKey], SubPath> : ObjectT[Key] : ObjectT[Key] : ObjectT[Key];
355
+ } : ExactKey<ObjectT, P> extends infer Key ? IsNever<Key> extends true ? ObjectT : Key extends PropertyKey ? Omit<ObjectT, Key> : ObjectT : ObjectT;
356
+ type OmitDeepWithOnePath<T, Path extends string | number> = T extends NonRecursiveType ? T : T extends UnknownArray ? SetArrayAccess<OmitDeepArrayWithOnePath<T, Path>, IsArrayReadonly<T>> : T extends object ? OmitDeepObjectWithOnePath<T, Path> : T;
357
+ type OmitDeepHelper<T, PathTuple extends UnknownArray> = PathTuple extends [
358
+ infer Path,
359
+ ...infer RestPaths
360
+ ] ? OmitDeepHelper<OmitDeepWithOnePath<T, Path & (string | number)>, RestPaths> : T;
361
+ /**
362
+ * Omit properties from a deeply-nested object, supporting recursion into arrays (each removed array
363
+ * item is replaced with `unknown` at its index).
364
+ *
365
+ * Copied from the `OmitDeep` type in `type-fest` v5.6 so that this package's public types do not
366
+ * depend on `type-fest` (see the note in `type-checks.ts`).
367
+ *
368
+ * @category Object
369
+ * @category Package : @augment-vir/common
370
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
371
+ */
372
+ export type OmitDeep<T, PathUnion extends LiteralUnion<Paths<T>, string>> = SimplifyDeep<OmitDeepHelper<T, UnionToTuple<PathUnion>>, UnknownArray>;
373
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Omit any index signatures from the given object type, leaving only explicitly defined properties.
3
+ * This is the counterpart of `PickIndexSignature`.
4
+ *
5
+ * Copied from the `OmitIndexSignature` type in the `type-fest` package so that this package's
6
+ * public types do not depend on `type-fest` (see the note in `type-checks.ts`).
7
+ *
8
+ * @category Object
9
+ * @category Package : @augment-vir/common
10
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
11
+ */
12
+ export type OmitIndexSignature<ObjectType> = {
13
+ [KeyType in keyof ObjectType as {} extends Record<KeyType, unknown> ? never : KeyType]: ObjectType[KeyType];
14
+ };
15
+ /**
16
+ * Pick only index signatures from the given object type, leaving out all explicitly defined
17
+ * properties. This is the counterpart of {@link OmitIndexSignature}.
18
+ *
19
+ * Copied from the `PickIndexSignature` type in the `type-fest` package so that this package's
20
+ * public types do not depend on `type-fest` (see the note in `type-checks.ts`).
21
+ *
22
+ * @category Object
23
+ * @category Package : @augment-vir/common
24
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
25
+ */
26
+ export type PickIndexSignature<ObjectType> = {
27
+ [KeyType in keyof ObjectType as {} extends Record<KeyType, unknown> ? KeyType : never]: ObjectType[KeyType];
28
+ };
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type -- faithful copy of type-fest, which intentionally uses the `{}` identity type. */
2
+ export {};
@@ -0,0 +1,25 @@
1
+ import { type IsAny } from './type-checks.js';
2
+ /**
3
+ * Returns a boolean for whether the given key is an optional key of the given type.
4
+ *
5
+ * Copied from the `IsOptionalKeyOf` type in the `type-fest` package so that this package's public
6
+ * types do not depend on `type-fest` (see the note in `type-checks.ts`).
7
+ *
8
+ * @category Object
9
+ * @category Package : @augment-vir/common
10
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
11
+ */
12
+ export type IsOptionalKeyOf<Type extends object, Key extends keyof Type> = IsAny<Type | Key> extends true ? never : Key extends keyof Type ? Type extends Record<Key, Type[Key]> ? false : true : false;
13
+ /**
14
+ * Extract all optional keys from the given type.
15
+ *
16
+ * Copied from the `OptionalKeysOf` type in the `type-fest` package so that this package's public
17
+ * types do not depend on `type-fest` (see the note in `type-checks.ts`).
18
+ *
19
+ * @category Object
20
+ * @category Package : @augment-vir/common
21
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
22
+ */
23
+ export type OptionalKeysOf<Type extends object> = Type extends unknown ? keyof {
24
+ [Key in keyof Type as IsOptionalKeyOf<Type, Key> extends false ? never : Key]: never;
25
+ } & keyof Type : never;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,177 @@
1
+ import { type JsonObject, type JsonValue } from '../json/json-value.js';
2
+ import { type LiteralUnion } from './literal-union.js';
3
+ type Person = string | {
4
+ name: string;
5
+ url?: string;
6
+ email?: string;
7
+ };
8
+ type BugsLocation = string | {
9
+ url?: string;
10
+ email?: string;
11
+ };
12
+ type DirectoryLocations = {
13
+ [directoryType: string]: JsonValue | undefined;
14
+ bin?: string;
15
+ doc?: string;
16
+ example?: string;
17
+ lib?: string;
18
+ man?: string;
19
+ test?: string;
20
+ };
21
+ type Scripts = {
22
+ prepublish?: string;
23
+ prepare?: string;
24
+ prepublishOnly?: string;
25
+ prepack?: string;
26
+ postpack?: string;
27
+ publish?: string;
28
+ postpublish?: string;
29
+ preinstall?: string;
30
+ install?: string;
31
+ postinstall?: string;
32
+ preuninstall?: string;
33
+ uninstall?: string;
34
+ postuninstall?: string;
35
+ preversion?: string;
36
+ version?: string;
37
+ postversion?: string;
38
+ pretest?: string;
39
+ test?: string;
40
+ posttest?: string;
41
+ prestop?: string;
42
+ stop?: string;
43
+ poststop?: string;
44
+ prestart?: string;
45
+ start?: string;
46
+ poststart?: string;
47
+ prerestart?: string;
48
+ restart?: string;
49
+ postrestart?: string;
50
+ } & Partial<Record<string, string>>;
51
+ type Dependency = Partial<Record<string, string>>;
52
+ type DependencyOverrides = {
53
+ [packageName in string]: string | undefined | DependencyOverrides;
54
+ };
55
+ type DevEngineDependency = {
56
+ name: string;
57
+ version?: string;
58
+ onFail?: 'ignore' | 'warn' | 'error' | 'download';
59
+ };
60
+ type ExportConditions = {
61
+ [condition: string]: Exports;
62
+ };
63
+ type Exports = null | string | Array<string | ExportConditions> | ExportConditions;
64
+ type Imports = {
65
+ [key: `#${string}`]: Exports;
66
+ };
67
+ type NonStandardEntryPoints = {
68
+ module?: string;
69
+ esnext?: string | {
70
+ [moduleName: string]: string | undefined;
71
+ main?: string;
72
+ browser?: string;
73
+ };
74
+ browser?: string | Partial<Record<string, string | false>>;
75
+ sideEffects?: boolean | string[];
76
+ };
77
+ type TypeScriptConfiguration = {
78
+ types?: string;
79
+ typesVersions?: Partial<Record<string, Partial<Record<string, string[]>>>>;
80
+ typings?: string;
81
+ };
82
+ type WorkspaceConfig = {
83
+ /** Glob patterns relative to the `package.json` that defines them, such as `packages/*`. */
84
+ packages?: string[];
85
+ nohoist?: string[];
86
+ };
87
+ type YarnConfiguration = {
88
+ flat?: boolean;
89
+ resolutions?: Dependency;
90
+ };
91
+ type JSPMConfiguration = {
92
+ jspm?: PackageJson;
93
+ };
94
+ type PublishConfig = {
95
+ [additionalProperties: string]: JsonValue | undefined;
96
+ access?: 'public' | 'restricted';
97
+ registry?: string;
98
+ tag?: string;
99
+ };
100
+ type NodeJsStandard = {
101
+ packageManager?: string;
102
+ };
103
+ type PackageJsonStandard = {
104
+ name?: string;
105
+ version?: string;
106
+ description?: string;
107
+ keywords?: string[];
108
+ homepage?: LiteralUnion<'.', string>;
109
+ bugs?: BugsLocation;
110
+ license?: string;
111
+ licenses?: Array<{
112
+ type?: string;
113
+ url?: string;
114
+ }>;
115
+ author?: Person;
116
+ contributors?: Person[];
117
+ maintainers?: Person[];
118
+ files?: string[];
119
+ type?: 'module' | 'commonjs';
120
+ main?: string;
121
+ exports?: Exports;
122
+ imports?: Imports;
123
+ bin?: string | Partial<Record<string, string>>;
124
+ man?: string | string[];
125
+ directories?: DirectoryLocations;
126
+ repository?: string | {
127
+ type: string;
128
+ url: string;
129
+ directory?: string;
130
+ };
131
+ scripts?: Scripts;
132
+ config?: JsonObject;
133
+ dependencies?: Dependency;
134
+ devDependencies?: Dependency;
135
+ optionalDependencies?: Dependency;
136
+ peerDependencies?: Dependency;
137
+ peerDependenciesMeta?: Partial<Record<string, {
138
+ optional: true;
139
+ }>>;
140
+ bundledDependencies?: string[];
141
+ bundleDependencies?: string[];
142
+ overrides?: DependencyOverrides;
143
+ engines?: {
144
+ [EngineName in LiteralUnion<'npm' | 'node', string>]?: string;
145
+ };
146
+ engineStrict?: boolean;
147
+ os?: Array<LiteralUnion<'aix' | 'darwin' | 'freebsd' | 'linux' | 'openbsd' | 'sunos' | 'win32' | '!aix' | '!darwin' | '!freebsd' | '!linux' | '!openbsd' | '!sunos' | '!win32', string>>;
148
+ cpu?: Array<LiteralUnion<'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 's390' | 's390x' | 'x32' | 'x64' | '!arm' | '!arm64' | '!ia32' | '!mips' | '!mipsel' | '!ppc' | '!ppc64' | '!s390' | '!s390x' | '!x32' | '!x64', string>>;
149
+ devEngines?: {
150
+ os?: DevEngineDependency | DevEngineDependency[];
151
+ cpu?: DevEngineDependency | DevEngineDependency[];
152
+ libc?: DevEngineDependency | DevEngineDependency[];
153
+ runtime?: DevEngineDependency | DevEngineDependency[];
154
+ packageManager?: DevEngineDependency | DevEngineDependency[];
155
+ };
156
+ preferGlobal?: boolean;
157
+ private?: boolean;
158
+ publishConfig?: PublishConfig;
159
+ funding?: string | {
160
+ type?: LiteralUnion<'github' | 'opencollective' | 'patreon' | 'individual' | 'foundation' | 'corporation', string>;
161
+ url: string;
162
+ };
163
+ workspaces?: string[] | WorkspaceConfig;
164
+ };
165
+ /**
166
+ * Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also
167
+ * includes types for fields used by other popular projects, like TypeScript and Yarn.
168
+ *
169
+ * Copied from the `PackageJson` type in the `type-fest` package so that this package's public types
170
+ * do not depend on `type-fest` (see the note in `type-checks.ts`).
171
+ *
172
+ * @category File
173
+ * @category Package : @augment-vir/common
174
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
175
+ */
176
+ export type PackageJson = JsonObject & NodeJsStandard & PackageJsonStandard & NonStandardEntryPoints & TypeScriptConfiguration & YarnConfiguration & JSPMConfiguration;
177
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ import { type ApplyDefaultOptions } from './apply-default-options.js';
2
+ import { type BuiltIns, type HasMultipleCallSignatures } from './built-in-type.js';
3
+ import { type IsNever } from './type-checks.js';
4
+ /**
5
+ * Options for {@link PartialDeep}.
6
+ *
7
+ * Copied from the `PartialDeepOptions` type in the `type-fest` package so that this package's
8
+ * public types do not depend on `type-fest` (see the note in `type-checks.ts`).
9
+ *
10
+ * @category Object
11
+ * @category Package : @augment-vir/common
12
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
13
+ */
14
+ export type PartialDeepOptions = {
15
+ /**
16
+ * Whether to affect the individual elements of arrays and tuples.
17
+ *
18
+ * @default false
19
+ */
20
+ readonly recurseIntoArrays?: boolean;
21
+ /**
22
+ * Allows `undefined` values in non-tuple arrays.
23
+ *
24
+ * @default false
25
+ */
26
+ readonly allowUndefinedInNonTupleArrays?: boolean;
27
+ };
28
+ type DefaultPartialDeepOptions = {
29
+ recurseIntoArrays: false;
30
+ allowUndefinedInNonTupleArrays: false;
31
+ };
32
+ type PartialMapDeep<KeyType, ValueType, Options extends Required<PartialDeepOptions>> = {} & Map<PartialDeepHelper<KeyType, Options>, PartialDeepHelper<ValueType, Options>>;
33
+ type PartialSetDeep<T, Options extends Required<PartialDeepOptions>> = {} & Set<PartialDeepHelper<T, Options>>;
34
+ type PartialReadonlyMapDeep<KeyType, ValueType, Options extends Required<PartialDeepOptions>> = {} & ReadonlyMap<PartialDeepHelper<KeyType, Options>, PartialDeepHelper<ValueType, Options>>;
35
+ type PartialReadonlySetDeep<T, Options extends Required<PartialDeepOptions>> = {} & ReadonlySet<PartialDeepHelper<T, Options>>;
36
+ type PartialObjectDeep<ObjectType extends object, Options extends Required<PartialDeepOptions>> = {
37
+ [KeyType in keyof ObjectType]?: PartialDeepHelper<ObjectType[KeyType], Options>;
38
+ };
39
+ /**
40
+ * Create a deeply optional version of another type. Use `Partial<T>` if you only need one level
41
+ * deep.
42
+ *
43
+ * Copied from the `PartialDeep` type in the `type-fest` package so that this package's public types
44
+ * do not depend on `type-fest` (see the note in `type-checks.ts`).
45
+ *
46
+ * @category Object
47
+ * @category Package : @augment-vir/common
48
+ * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
49
+ */
50
+ export type PartialDeep<T, Options extends PartialDeepOptions = {}> = PartialDeepHelper<T, ApplyDefaultOptions<PartialDeepOptions, DefaultPartialDeepOptions, Options>>;
51
+ type PartialDeepHelper<T, Options extends Required<PartialDeepOptions>> = T extends BuiltIns | (new (...arguments_: any[]) => unknown) ? T : T extends Map<infer KeyType, infer ValueType> ? PartialMapDeep<KeyType, ValueType, Options> : T extends Set<infer ItemType> ? PartialSetDeep<ItemType, Options> : T extends ReadonlyMap<infer KeyType, infer ValueType> ? PartialReadonlyMapDeep<KeyType, ValueType, Options> : T extends ReadonlySet<infer ItemType> ? PartialReadonlySetDeep<ItemType, Options> : T extends (...arguments_: any[]) => unknown ? IsNever<keyof T> extends true ? T : HasMultipleCallSignatures<T> extends true ? T : ((...arguments_: Parameters<T>) => ReturnType<T>) & PartialObjectDeep<T, Options> : T extends object ? T extends ReadonlyArray<infer ItemType> ? Options['recurseIntoArrays'] extends true ? ItemType[] extends T ? readonly ItemType[] extends T ? ReadonlyArray<PartialDeepHelper<Options['allowUndefinedInNonTupleArrays'] extends false ? ItemType : ItemType | undefined, Options>> : Array<PartialDeepHelper<Options['allowUndefinedInNonTupleArrays'] extends false ? ItemType : ItemType | undefined, Options>> : PartialObjectDeep<T, Options> : T : PartialObjectDeep<T, Options> : unknown;
52
+ export {};
@@ -0,0 +1 @@
1
+ export {};