@fluidframework/core-interfaces 2.23.0 → 2.31.0
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.
- package/.eslintrc.cjs +19 -1
- package/CHANGELOG.md +162 -154
- package/api-extractor/api-extractor-lint-bundle.json +1 -1
- package/dist/exposedInternalUtilityTypes.d.ts +547 -0
- package/dist/exposedInternalUtilityTypes.d.ts.map +1 -0
- package/dist/exposedInternalUtilityTypes.js +11 -0
- package/dist/exposedInternalUtilityTypes.js.map +1 -0
- package/dist/exposedUtilityTypes.d.ts +10 -0
- package/dist/exposedUtilityTypes.d.ts.map +1 -0
- package/dist/exposedUtilityTypes.js +7 -0
- package/dist/exposedUtilityTypes.js.map +1 -0
- package/dist/internal.d.ts +34 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +23 -0
- package/dist/internal.js.map +1 -0
- package/dist/jsonDeserialized.d.ts +112 -0
- package/dist/jsonDeserialized.d.ts.map +1 -0
- package/dist/jsonDeserialized.js +7 -0
- package/dist/jsonDeserialized.js.map +1 -0
- package/dist/jsonSerializable.d.ts +126 -0
- package/dist/jsonSerializable.d.ts.map +1 -0
- package/dist/jsonSerializable.js +7 -0
- package/dist/jsonSerializable.js.map +1 -0
- package/dist/jsonSerializationErrors.d.ts +31 -0
- package/dist/jsonSerializationErrors.d.ts.map +1 -0
- package/dist/jsonSerializationErrors.js +7 -0
- package/dist/jsonSerializationErrors.js.map +1 -0
- package/dist/jsonType.d.ts +30 -0
- package/dist/jsonType.d.ts.map +1 -0
- package/dist/jsonType.js +7 -0
- package/dist/jsonType.js.map +1 -0
- package/dist/package.json +16 -1
- package/{prettier.config.cjs → internal/exposedUtilityTypes.d.ts} +1 -3
- package/internal.d.ts +1 -6
- package/lib/exposedInternalUtilityTypes.d.ts +547 -0
- package/lib/exposedInternalUtilityTypes.d.ts.map +1 -0
- package/lib/exposedInternalUtilityTypes.js +10 -0
- package/lib/exposedInternalUtilityTypes.js.map +1 -0
- package/lib/exposedUtilityTypes.d.ts +10 -0
- package/lib/exposedUtilityTypes.d.ts.map +1 -0
- package/lib/exposedUtilityTypes.js +6 -0
- package/lib/exposedUtilityTypes.js.map +1 -0
- package/lib/internal.d.ts +34 -0
- package/lib/internal.d.ts.map +1 -0
- package/lib/internal.js +7 -0
- package/lib/internal.js.map +1 -0
- package/lib/jsonDeserialized.d.ts +112 -0
- package/lib/jsonDeserialized.d.ts.map +1 -0
- package/lib/jsonDeserialized.js +6 -0
- package/lib/jsonDeserialized.js.map +1 -0
- package/lib/jsonSerializable.d.ts +126 -0
- package/lib/jsonSerializable.d.ts.map +1 -0
- package/lib/jsonSerializable.js +6 -0
- package/lib/jsonSerializable.js.map +1 -0
- package/lib/jsonSerializationErrors.d.ts +31 -0
- package/lib/jsonSerializationErrors.d.ts.map +1 -0
- package/lib/jsonSerializationErrors.js +6 -0
- package/lib/jsonSerializationErrors.js.map +1 -0
- package/lib/jsonType.d.ts +30 -0
- package/lib/jsonType.d.ts.map +1 -0
- package/lib/jsonType.js +6 -0
- package/lib/jsonType.js.map +1 -0
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +51 -13
- package/src/cjs/package.json +19 -0
- package/src/exposedInternalUtilityTypes.ts +1152 -0
- package/src/exposedUtilityTypes.ts +20 -0
- package/src/internal.ts +73 -0
- package/src/jsonDeserialized.ts +118 -0
- package/src/jsonSerializable.ts +133 -0
- package/src/jsonSerializationErrors.ts +34 -0
- package/src/jsonType.ts +37 -0
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import type { SerializationErrorPerNonPublicProperties, SerializationErrorPerUndefinedArrayElement } from "./jsonSerializationErrors.js";
|
|
6
|
+
import type { JsonTypeWith, NonNullJsonObjectWith } from "./jsonType.js";
|
|
7
|
+
/**
|
|
8
|
+
* Unique symbol for recursion meta-typing.
|
|
9
|
+
*/
|
|
10
|
+
declare const RecursionMarkerSymbol: unique symbol;
|
|
11
|
+
/**
|
|
12
|
+
* Collection of utility types that are not intended to be used/imported
|
|
13
|
+
* directly outside of this package.
|
|
14
|
+
*
|
|
15
|
+
* @privateRemarks
|
|
16
|
+
* There are ony three intentional exports from this module:
|
|
17
|
+
* - {@link InternalUtilityTypes.IfSameType | IfSameType}
|
|
18
|
+
* - {@link InternalUtilityTypes.JsonDeserializedImpl | JsonDeserializedImpl }
|
|
19
|
+
* - {@link InternalUtilityTypes.JsonSerializableImpl | JsonSerializableImpl }
|
|
20
|
+
*
|
|
21
|
+
* api-extractor will allow `export` to be removed from others but generates
|
|
22
|
+
* api-report a little oddly with a rogue `{};` floating at end of namespace
|
|
23
|
+
* in api.md file. It will promote all of the support types to appear as
|
|
24
|
+
* exported anyway. All in namespace are left exported to avoid api-extractor
|
|
25
|
+
* potentially failing to validate other modules correctly.
|
|
26
|
+
*
|
|
27
|
+
* @beta
|
|
28
|
+
* @system
|
|
29
|
+
*/
|
|
30
|
+
export declare namespace InternalUtilityTypes {
|
|
31
|
+
/**
|
|
32
|
+
* Meta-type for controlling filtering utilities.
|
|
33
|
+
*
|
|
34
|
+
* @system
|
|
35
|
+
*/
|
|
36
|
+
export interface FilterControls {
|
|
37
|
+
/**
|
|
38
|
+
* Tuple of exact types that are managed by custom serialization/deserialization
|
|
39
|
+
* logic (beyond JSON.stringify and JSON.parse without replacers/revivers).
|
|
40
|
+
* Only exact types matching specification will be preserved unaltered.
|
|
41
|
+
*/
|
|
42
|
+
AllowExactly: unknown[];
|
|
43
|
+
/**
|
|
44
|
+
* General types that are managed by custom serialization/deserialization
|
|
45
|
+
* logic (beyond JSON.stringify and JSON.parse without replacers/revivers).
|
|
46
|
+
* Any type satisfying specification will be preserved unaltered.
|
|
47
|
+
*/
|
|
48
|
+
AllowExtensionOf: unknown;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Meta-type for controlling filtering utilities that additionally supplies
|
|
52
|
+
* a substitute type for degenerate cases.
|
|
53
|
+
*
|
|
54
|
+
* @system
|
|
55
|
+
*/
|
|
56
|
+
interface FilterControlsWithSubstitution extends FilterControls {
|
|
57
|
+
/**
|
|
58
|
+
* Type to use for degenerate cases like `unknown` or `any`.
|
|
59
|
+
* Typically this will be `JsonTypeWith<TupleToUnion<AllowExactly> | AllowExtensionOf>`.
|
|
60
|
+
*/
|
|
61
|
+
DegenerateSubstitute: unknown;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Meta-type for controlling deserialized filtering utilities.
|
|
65
|
+
*
|
|
66
|
+
* @system
|
|
67
|
+
*/
|
|
68
|
+
interface DeserializedFilterControls extends FilterControlsWithSubstitution {
|
|
69
|
+
/**
|
|
70
|
+
* Type to use for degenerate `object` case.
|
|
71
|
+
* Typically this will be `NonNullJsonObjectWith<TupleToUnion<AllowExactly> | AllowExtensionOf>`.
|
|
72
|
+
*/
|
|
73
|
+
DegenerateNonNullObjectSubstitute: unknown;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Returns non-symbol keys for optional properties of an object type.
|
|
77
|
+
* This excludes indexed properties that are inherently _optional_.
|
|
78
|
+
*
|
|
79
|
+
* For homomorphic mapping use with `as` to filter. Example:
|
|
80
|
+
* `[K in keyof T as OptionalNonSymbolKeysOf<T, K>]: ...`
|
|
81
|
+
*
|
|
82
|
+
* @system
|
|
83
|
+
*/
|
|
84
|
+
export type OptionalNonSymbolKeysOf<T extends object, Keys extends keyof T = keyof T> = Exclude<{
|
|
85
|
+
[K in Keys]: T extends Record<K, T[K]> ? never : K;
|
|
86
|
+
}[Keys], undefined | symbol>;
|
|
87
|
+
/**
|
|
88
|
+
* Returns non-symbol keys for required properties of an object type.
|
|
89
|
+
* This includes indexed properties that are inherently _optional_.
|
|
90
|
+
*
|
|
91
|
+
* For homomorphic mapping use with `as` to filter. Example:
|
|
92
|
+
* `[K in keyof T as RequiredNonSymbolKeysOf<T, K>]: ...`
|
|
93
|
+
*
|
|
94
|
+
* @system
|
|
95
|
+
*/
|
|
96
|
+
export type RequiredNonSymbolKeysOf<T extends object, Keys extends keyof T = keyof T> = Exclude<{
|
|
97
|
+
[K in Keys]: T extends Record<K, T[K]> ? K : never;
|
|
98
|
+
}[Keys], undefined | symbol>;
|
|
99
|
+
/**
|
|
100
|
+
* Returns Result.WhenSomethingDeserializable if T is sometimes at least a
|
|
101
|
+
* partially deserializable type, otherwise Result.WhenNeverDeserializable.
|
|
102
|
+
* Fully not deserializable (bigints, symbols, undefined and functions without
|
|
103
|
+
* other properties less overlap with T*Exception) produce Result.WhenNeverDeserializable.
|
|
104
|
+
* An object would have a defined result even if parts of its content are
|
|
105
|
+
* not deserializable.
|
|
106
|
+
*
|
|
107
|
+
* @param Result - Result type with two properties. One property must always
|
|
108
|
+
* be `never` as `T` maybe a union of never deserializable and at least
|
|
109
|
+
* partially deserializable types and the result is a union of Result.*.
|
|
110
|
+
*
|
|
111
|
+
* @privateRemarks
|
|
112
|
+
* If `Result.WhenSomethingDeserializable` was `true` and
|
|
113
|
+
* `Result.WhenNeverDeserializable` was `false`, then the return type
|
|
114
|
+
* for type `T` would be `boolean` for a sometimes deserializable type.
|
|
115
|
+
*
|
|
116
|
+
* @system
|
|
117
|
+
*/
|
|
118
|
+
export type TestDeserializabilityOf<T, TExactExceptions extends unknown[], TExtendsException, Result extends {
|
|
119
|
+
WhenSomethingDeserializable: unknown;
|
|
120
|
+
WhenNeverDeserializable: never;
|
|
121
|
+
} | {
|
|
122
|
+
WhenSomethingDeserializable: never;
|
|
123
|
+
WhenNeverDeserializable: unknown;
|
|
124
|
+
}> = T extends never ? Result["WhenNeverDeserializable"] : T extends TExtendsException ? Result["WhenSomethingDeserializable"] : IfExactTypeInTuple<T, TExactExceptions, Result["WhenSomethingDeserializable"], T extends bigint | symbol | undefined ? Result["WhenNeverDeserializable"] : T extends Function ? ExtractFunctionFromIntersection<T> extends {
|
|
125
|
+
classification: "exactly Function";
|
|
126
|
+
} ? Result["WhenNeverDeserializable"] : Result["WhenSomethingDeserializable"] : Result["WhenSomethingDeserializable"]>;
|
|
127
|
+
/**
|
|
128
|
+
* Similar to `Exclude` but only excludes exact `U`s from `T`
|
|
129
|
+
* rather than any type that extends `U`.
|
|
130
|
+
*
|
|
131
|
+
* @system
|
|
132
|
+
*/
|
|
133
|
+
export type ExcludeExactly<T, U> = IfSameType<T, U, never, T>;
|
|
134
|
+
/**
|
|
135
|
+
* Similar to `Exclude` but only excludes exact members of `U` from `T`
|
|
136
|
+
* rather than any type that extends members of `U`.
|
|
137
|
+
*
|
|
138
|
+
* @system
|
|
139
|
+
*/
|
|
140
|
+
export type ExcludeExactlyInTuple<T, TupleOfU extends unknown[]> = IfExactTypeInTuple<T, TupleOfU, never, T>;
|
|
141
|
+
/**
|
|
142
|
+
* Similar to `Omit` but operates on tuples.
|
|
143
|
+
* Removes elements of `Tuple` that extend `U`.
|
|
144
|
+
*
|
|
145
|
+
* @system
|
|
146
|
+
*/
|
|
147
|
+
export type OmitFromTuple<Tuple extends unknown[], U, Accumulated extends unknown[] = []> = Tuple extends [infer First, ...infer Rest] ? OmitFromTuple<Rest, U, First extends U ? Accumulated : [...Accumulated, First]> : Accumulated;
|
|
148
|
+
/**
|
|
149
|
+
* Similar to `OmitFromTuple` but removes only exact matches of U.
|
|
150
|
+
* Removes elements of `Tuple` that are exactly `U`.
|
|
151
|
+
*
|
|
152
|
+
* @remarks If `U` is a union, then only exactly matching union elements of `Tuple` are removed.
|
|
153
|
+
* @system
|
|
154
|
+
*/
|
|
155
|
+
export type OmitExactlyFromTuple<Tuple extends unknown[], U, Accumulated extends unknown[] = []> = Tuple extends [infer First, ...infer Rest] ? OmitExactlyFromTuple<Rest, U, IfSameType<First, U, Accumulated, [...Accumulated, First]>> : Accumulated;
|
|
156
|
+
/**
|
|
157
|
+
* Returns non-symbol keys for defined, (likely) serializable properties of an
|
|
158
|
+
* object type. Keys with fully unsupported properties (undefined, symbol, and
|
|
159
|
+
* bigint) and sometimes unsupported (functions) are excluded. An exception to
|
|
160
|
+
* that is when there are supported types in union with just bigint.
|
|
161
|
+
*
|
|
162
|
+
* For homomorphic mapping use with `as` to filter. Example:
|
|
163
|
+
* `[K in keyof T as NonSymbolWithDeserializablePropertyOf<T, [], never, K>]: ...`
|
|
164
|
+
*
|
|
165
|
+
* @system
|
|
166
|
+
*/
|
|
167
|
+
export type NonSymbolWithDeserializablePropertyOf<T extends object, TExactExceptions extends unknown[], TExtendsException, Keys extends keyof T = keyof T> = Exclude<{
|
|
168
|
+
[K in Keys]: ExcludeExactlyInTuple<Exclude<T[K], TExtendsException>, OmitExactlyFromTuple<TExactExceptions, unknown>> extends infer PossibleTypeLessAllowed ? IfSameType<PossibleTypeLessAllowed, unknown, never, Extract<PossibleTypeLessAllowed, undefined | symbol | Function> extends never ? IfSameType<PossibleTypeLessAllowed, bigint, never, T[K] extends never ? never : K> : never> : never;
|
|
169
|
+
}[Keys], undefined | symbol>;
|
|
170
|
+
/**
|
|
171
|
+
* Returns non-symbol keys for partially supported properties of an object type.
|
|
172
|
+
* Keys with only unsupported properties (undefined, symbol, bigint, and
|
|
173
|
+
* functions without other properties) are excluded.
|
|
174
|
+
*
|
|
175
|
+
* For homomorphic mapping use with `as` to filter. Example:
|
|
176
|
+
* `[K in keyof T as NonSymbolWithPossiblyDeserializablePropertyOf<T, [], never, K>]: ...`
|
|
177
|
+
*
|
|
178
|
+
* @system
|
|
179
|
+
*/
|
|
180
|
+
export type NonSymbolWithPossiblyDeserializablePropertyOf<T extends object, TExactExceptions extends unknown[], TExtendsException, Keys extends keyof T = keyof T> = Exclude<{
|
|
181
|
+
[K in Keys]: ExcludeExactlyInTuple<Exclude<T[K], TExtendsException>, OmitExactlyFromTuple<TExactExceptions, unknown>> extends infer PossibleTypeLessAllowed ? Extract<IfSameType<PossibleTypeLessAllowed, unknown, undefined, PossibleTypeLessAllowed>, undefined | symbol | Function> extends never ? never : TestDeserializabilityOf<T[K], OmitExactlyFromTuple<TExactExceptions, unknown>, TExtendsException, {
|
|
182
|
+
WhenSomethingDeserializable: K;
|
|
183
|
+
WhenNeverDeserializable: never;
|
|
184
|
+
}> : never;
|
|
185
|
+
}[Keys], undefined | symbol>;
|
|
186
|
+
/**
|
|
187
|
+
* Filters a type `T` for `undefined` that is not viable in an array (or tuple) that
|
|
188
|
+
* must go through JSON serialization.
|
|
189
|
+
* If `T` is `undefined`, then error type {@link SerializationErrorPerUndefinedArrayElement}
|
|
190
|
+
* is returned with hopes of being informative.
|
|
191
|
+
*
|
|
192
|
+
* @system
|
|
193
|
+
*/
|
|
194
|
+
export type JsonForSerializableArrayItem<T, Controls extends FilterControls, TAncestorTypes extends unknown[], TBlessed> = boolean extends (T extends never ? true : false) ? TBlessed : unknown extends T ? TBlessed : IfExactTypeInTuple<T, TAncestorTypes, T, T extends null | boolean | number | string | Controls["AllowExtensionOf"] ? T : IfExactTypeInTuple<T, Controls["AllowExactly"], T, undefined extends T ? SerializationErrorPerUndefinedArrayElement : TBlessed>>;
|
|
195
|
+
/**
|
|
196
|
+
* Filters a type `T` for types that become null through JSON serialization.
|
|
197
|
+
*
|
|
198
|
+
* @system
|
|
199
|
+
*/
|
|
200
|
+
export type JsonForDeserializedArrayItem<T, Controls extends DeserializedFilterControls, TBlessed> = boolean extends (T extends never ? true : false) ? TBlessed : unknown extends T ? TBlessed : T extends null | boolean | number | string | Controls["AllowExtensionOf"] ? T : IfExactTypeInTuple<T, Controls["AllowExactly"], T, T extends undefined | symbol ? null : T extends Function ? ExtractFunctionFromIntersection<T> extends {
|
|
201
|
+
classification: "exactly Function";
|
|
202
|
+
} ? null : null | TBlessed : TBlessed>;
|
|
203
|
+
/**
|
|
204
|
+
* Checks for a type that is simple class of number and string indexed types to numbers and strings.
|
|
205
|
+
*
|
|
206
|
+
* @system
|
|
207
|
+
*/
|
|
208
|
+
export type IfEnumLike<T extends object, EnumLike = never, NotEnumLike = unknown> = T extends readonly (infer _)[] ? NotEnumLike : T extends Function ? NotEnumLike : T extends {
|
|
209
|
+
readonly [i: number]: string;
|
|
210
|
+
readonly [p: string]: number | string;
|
|
211
|
+
readonly [s: symbol]: never;
|
|
212
|
+
} ? true extends {
|
|
213
|
+
[K in keyof T]: T[K] extends never ? true : never;
|
|
214
|
+
}[keyof T] ? NotEnumLike : EnumLike : NotEnumLike;
|
|
215
|
+
/**
|
|
216
|
+
* Test for type equality
|
|
217
|
+
*
|
|
218
|
+
* @returns IfSame if identical and IfDifferent otherwise.
|
|
219
|
+
*
|
|
220
|
+
* Implementation derived from https://github.com/Microsoft/TypeScript/issues/27024#issuecomment-421529650
|
|
221
|
+
*
|
|
222
|
+
* @remarks Use caution when one of the type might be `{}`. That type is
|
|
223
|
+
* special and produces unexpected results. This includes variability
|
|
224
|
+
* on past usages.
|
|
225
|
+
*
|
|
226
|
+
* @system
|
|
227
|
+
*/
|
|
228
|
+
export type IfSameType<X, Y, IfSame = unknown, IfDifferent = never> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? IfSame : IfDifferent;
|
|
229
|
+
/**
|
|
230
|
+
* Test for type equality with tuple of other types.
|
|
231
|
+
*
|
|
232
|
+
* @typeParam T - Type to find in Tuple.
|
|
233
|
+
* @typeParam Tuple - Tuple of types to test against.
|
|
234
|
+
* @typeParam IfMatch - Type to return if match is found.
|
|
235
|
+
* @typeParam IfNoMatch - Type to return if no match is found.
|
|
236
|
+
*
|
|
237
|
+
* @privateRemarks
|
|
238
|
+
* Tests for an exact match of `T` in `Tuple[0]`. If not found,
|
|
239
|
+
* recurses with the remainder of the tuple.
|
|
240
|
+
*/
|
|
241
|
+
export type IfExactTypeInTuple<T, Tuple extends unknown[], IfMatch = unknown, IfNoMatch = never> = Tuple extends [infer First, ...infer Rest] ? IfSameType<T, First, IfMatch, IfExactTypeInTuple<T, Rest, IfMatch, IfNoMatch>> : IfNoMatch;
|
|
242
|
+
/**
|
|
243
|
+
* Test for type equality with union of other types.
|
|
244
|
+
*
|
|
245
|
+
* @typeParam T - Type to find in Union. If this is itself a union, then all types must be found in Union.
|
|
246
|
+
* @typeParam Union - Union of types to test against.
|
|
247
|
+
* @typeParam IfMatch - Type to return if match is found.
|
|
248
|
+
* @typeParam IfNoMatch - Type to return if no match is found.
|
|
249
|
+
*
|
|
250
|
+
* @remarks
|
|
251
|
+
* In a recursive context, use {@link InternalUtilityTypes.IfExactTypeInTuple} to manage ancestry.
|
|
252
|
+
*
|
|
253
|
+
* @privateRemarks
|
|
254
|
+
* Perhaps it is a Typescript defect but a simple check that `T` is `never`
|
|
255
|
+
* via `T extends never` does not work as expected in this context.
|
|
256
|
+
* Workaround using `IfSameType<..., never,...>`.
|
|
257
|
+
* @system
|
|
258
|
+
*/
|
|
259
|
+
export type IfExactTypeInUnion<T, Union, IfMatch = unknown, IfNoMatch = never> = IfSameType<T, never, IfSameType<Union, never, IfMatch, IfNoMatch>, IfSameType<T, Extract<Union, T>, IfMatch, IfNoMatch>>;
|
|
260
|
+
/**
|
|
261
|
+
* Test for type equality
|
|
262
|
+
*
|
|
263
|
+
* @returns `true` if identical and `false` otherwise.
|
|
264
|
+
*
|
|
265
|
+
* @remarks Use caution when one of the type might be `{}`. That type is
|
|
266
|
+
* special and produces unexpected results. This includes variability
|
|
267
|
+
* on past usages.
|
|
268
|
+
*
|
|
269
|
+
* @system
|
|
270
|
+
*/
|
|
271
|
+
export type IsSameType<X, Y> = IfSameType<X, Y, true, false>;
|
|
272
|
+
/**
|
|
273
|
+
* Checks that type is exactly `object`.
|
|
274
|
+
*
|
|
275
|
+
* @system
|
|
276
|
+
*/
|
|
277
|
+
export type IsExactlyObject<T extends object> = IsSameType<T, object>;
|
|
278
|
+
/**
|
|
279
|
+
* Creates a simple object type from an intersection of multiple.
|
|
280
|
+
* @privateRemarks
|
|
281
|
+
* `T extends Record` within the implementation encourages tsc to process
|
|
282
|
+
* intersections within unions.
|
|
283
|
+
*
|
|
284
|
+
* @system
|
|
285
|
+
*/
|
|
286
|
+
export type FlattenIntersection<T extends Record<string | number | symbol, unknown>> = T extends Record<string | number | symbol, unknown> ? {
|
|
287
|
+
[K in keyof T]: T[K];
|
|
288
|
+
} : T;
|
|
289
|
+
/**
|
|
290
|
+
* Extracts Function portion from an intersection (&) type returning
|
|
291
|
+
* the extracted portion in the `function` property or `unknown` if
|
|
292
|
+
* no function is found.
|
|
293
|
+
* The returned `classification` property has one of three values:
|
|
294
|
+
* - "no Function" if the type is not a function.
|
|
295
|
+
* - "exactly Function" if the type is exactly a function.
|
|
296
|
+
* - "Function and more" if the type is a function and has other properties.
|
|
297
|
+
*
|
|
298
|
+
* @system
|
|
299
|
+
*/
|
|
300
|
+
export type ExtractFunctionFromIntersection<T extends object> = (T extends new (...args: infer A) => infer R ? new (...args: A) => R : unknown) & (T extends (...args: infer A) => infer R ? (...args: A) => R : unknown) extends infer Functional ? {
|
|
301
|
+
classification: unknown extends Functional ? "no Function" : Functional extends Required<T> ? "exactly Function" : "Function and more";
|
|
302
|
+
function: Functional;
|
|
303
|
+
} : never;
|
|
304
|
+
/**
|
|
305
|
+
* Returns `Filtered` & any Function intersection from `Original`.
|
|
306
|
+
* If `Original` is exactly a Function, then `Filtered` is left out
|
|
307
|
+
* under the assumption that it is not useful/applicable.
|
|
308
|
+
*
|
|
309
|
+
* @system
|
|
310
|
+
*/
|
|
311
|
+
export type FilterPreservingFunction<Original extends object, Filtered> = ExtractFunctionFromIntersection<Original> extends {
|
|
312
|
+
classification: infer TClassification;
|
|
313
|
+
function: infer TFunction;
|
|
314
|
+
} ? TClassification extends "exactly Function" ? TFunction : TFunction & Filtered : never;
|
|
315
|
+
/**
|
|
316
|
+
* Replaces any instance where a type T recurses into itself or a portion of
|
|
317
|
+
* itself with TRecursionMarker.
|
|
318
|
+
*
|
|
319
|
+
* @typeParam T - Type to process.
|
|
320
|
+
* @typeParam TRecursionMarker - Replacement marker type.
|
|
321
|
+
* @typeParam Controls - Allowances are preserved as-is.
|
|
322
|
+
* @typeParam TAncestorTypes - Tuple of types that are ancestors of T.
|
|
323
|
+
* @typeParam TNextAncestor - Set exactly to T. This is passed separately
|
|
324
|
+
* such that T union types remain intact as exact ancestors.
|
|
325
|
+
*
|
|
326
|
+
* @remarks
|
|
327
|
+
* Filtering applied to class instances with non-public properties will not
|
|
328
|
+
* preserve the class instance unless those classes are known and listed as
|
|
329
|
+
* allowances via `Controls`.
|
|
330
|
+
*
|
|
331
|
+
* @privateRemarks
|
|
332
|
+
* This implementation handles functions including function with properties.
|
|
333
|
+
* There are no known cases where replacing recursion under such types make
|
|
334
|
+
* a difference. Either the function (whole type) is allowed by the Json
|
|
335
|
+
* filters or function is not allowed at all.
|
|
336
|
+
* If the function portion is found to be problematic later, then could use
|
|
337
|
+
* `T extends Function ? T : ...` to ignore function objects.
|
|
338
|
+
*
|
|
339
|
+
* @system
|
|
340
|
+
*/
|
|
341
|
+
export type ReplaceRecursionWithMarkerAndPreserveAllowances<T, TRecursionMarker, Controls extends FilterControls, TAncestorTypes extends unknown[] = [], TNextAncestor = T> = IfExactTypeInTuple<T, TAncestorTypes, true, "no match"> extends true ? TRecursionMarker : T extends infer _ ? IfExactTypeInTuple<T, TAncestorTypes, true, "no match"> extends true ? TRecursionMarker : T extends Controls["AllowExtensionOf"] ? T : IfExactTypeInTuple<T, Controls["AllowExactly"], true, "no match"> extends true ? T : T extends object ? FilterPreservingFunction<T, {
|
|
342
|
+
[K in keyof T]: ReplaceRecursionWithMarkerAndPreserveAllowances<T[K], TRecursionMarker, Controls, [
|
|
343
|
+
TNextAncestor,
|
|
344
|
+
...TAncestorTypes
|
|
345
|
+
]>;
|
|
346
|
+
}> : T : never;
|
|
347
|
+
/**
|
|
348
|
+
* Replaces any instances of "allowed" types and recursion within with `never`.
|
|
349
|
+
*
|
|
350
|
+
* @typeParam T - Type to process.
|
|
351
|
+
* @typeParam Controls - Allowances to replace.
|
|
352
|
+
* @typeParam TAncestorTypes - Tuple of types that are ancestors of T.
|
|
353
|
+
* @typeParam TNextAncestor - Set exactly to T. This is passed separately
|
|
354
|
+
* such that T union types remain intact as exact ancestors.
|
|
355
|
+
*
|
|
356
|
+
* @system
|
|
357
|
+
*/
|
|
358
|
+
export type ReplaceAllowancesAndRecursionWithNever<T, Controls extends FilterControls, TAncestorTypes extends unknown[] = [], TNextAncestor = T> = IfExactTypeInTuple<T, TAncestorTypes, true, "no match"> extends true ? never : T extends Controls["AllowExtensionOf"] ? never : IfExactTypeInTuple<T, Controls["AllowExactly"], true, "no match"> extends true ? never : IfExactTypeInTuple<T, TAncestorTypes, true, "no match"> extends true ? never : T extends object ? FilterPreservingFunction<T, {
|
|
359
|
+
[K in keyof T]: ReplaceAllowancesAndRecursionWithNever<T[K], Controls, [
|
|
360
|
+
TNextAncestor,
|
|
361
|
+
...TAncestorTypes
|
|
362
|
+
]>;
|
|
363
|
+
}> : T;
|
|
364
|
+
/**
|
|
365
|
+
* Test for non-public properties (which can only exist on class instance types).
|
|
366
|
+
*
|
|
367
|
+
* Returns `HasNonPublic` if `T` deeply may contain a private or protected field
|
|
368
|
+
* and `OnlyPublics` otherwise.
|
|
369
|
+
*
|
|
370
|
+
* @remarks
|
|
371
|
+
* Compare original (unprocessed) to filtered case that has `never` where
|
|
372
|
+
* recursing or where allowed exception types are used.
|
|
373
|
+
*
|
|
374
|
+
* Note that this a test of the type and not the actual data. So, if an
|
|
375
|
+
* interface is given as `T` where implemented by a class, any private or
|
|
376
|
+
* protected fields within the class will not be detected.
|
|
377
|
+
*
|
|
378
|
+
* @system
|
|
379
|
+
*/
|
|
380
|
+
export type IfNonPublicProperties<T, Controls extends FilterControls, HasNonPublic = never, OnlyPublics = unknown> = ReplaceAllowancesAndRecursionWithNever<T, Controls> extends T ? OnlyPublics : HasNonPublic;
|
|
381
|
+
/**
|
|
382
|
+
* Union of all types in a tuple.
|
|
383
|
+
*
|
|
384
|
+
* @system
|
|
385
|
+
*/
|
|
386
|
+
export type TupleToUnion<T extends unknown[]> = T[number];
|
|
387
|
+
/**
|
|
388
|
+
* Outer implementation of {@link JsonSerializable} handling meta cases
|
|
389
|
+
* like classes (with non-public properties).
|
|
390
|
+
*
|
|
391
|
+
* @system
|
|
392
|
+
*/
|
|
393
|
+
export type JsonSerializableImpl<T, Options extends Partial<FilterControls> & {
|
|
394
|
+
IgnoreInaccessibleMembers?: "ignore-inaccessible-members";
|
|
395
|
+
}, TAncestorTypes extends unknown[] = [], TNextAncestor = T> = {
|
|
396
|
+
AllowExactly: Options extends {
|
|
397
|
+
AllowExactly: unknown[];
|
|
398
|
+
} ? Options["AllowExactly"] : [];
|
|
399
|
+
AllowExtensionOf: Options extends {
|
|
400
|
+
AllowExtensionOf: unknown;
|
|
401
|
+
} ? Options["AllowExtensionOf"] : never;
|
|
402
|
+
DegenerateSubstitute: JsonTypeWith<(Options extends {
|
|
403
|
+
AllowExactly: unknown[];
|
|
404
|
+
} ? TupleToUnion<Options["AllowExactly"]> : never) | (Options extends {
|
|
405
|
+
AllowExtensionOf: unknown;
|
|
406
|
+
} ? Options["AllowExtensionOf"] : never)>;
|
|
407
|
+
} extends infer Controls ? Controls extends FilterControlsWithSubstitution ? boolean extends (T extends never ? true : false) ? Controls["DegenerateSubstitute"] : Options["IgnoreInaccessibleMembers"] extends "ignore-inaccessible-members" ? JsonSerializableFilter<T, Controls, TAncestorTypes, TNextAncestor> : IfNonPublicProperties<T, {
|
|
408
|
+
AllowExactly: Controls["AllowExactly"];
|
|
409
|
+
AllowExtensionOf: Controls["AllowExtensionOf"] | boolean | number | string;
|
|
410
|
+
DegenerateSubstitute: Controls["DegenerateSubstitute"];
|
|
411
|
+
}, "found non-publics", "only publics"> extends "found non-publics" ? T extends readonly (infer _)[] ? {
|
|
412
|
+
[K in keyof T]: JsonSerializableImpl<T[K], Controls, [
|
|
413
|
+
TNextAncestor,
|
|
414
|
+
...TAncestorTypes
|
|
415
|
+
]>;
|
|
416
|
+
} : T extends boolean | number | string ? T : SerializationErrorPerNonPublicProperties : JsonSerializableFilter<T, Controls, TAncestorTypes, TNextAncestor> : never : never;
|
|
417
|
+
/**
|
|
418
|
+
* Essentially a check for a template literal that has $\{string\} or
|
|
419
|
+
* $\{number\} in the pattern. Just `string` and/or `number` also match.
|
|
420
|
+
*
|
|
421
|
+
* @remarks This works recursively looking at first elements when not
|
|
422
|
+
* `string` or `number`. `first` will just be a single character if
|
|
423
|
+
* not $\{string\} or $\{number\}.
|
|
424
|
+
*
|
|
425
|
+
* @system
|
|
426
|
+
*/
|
|
427
|
+
export type IfIndexKey<T, IfIndex, IfLiteral> = `${string}` extends T ? IfIndex : number extends T ? IfIndex : T extends `${infer first}${infer rest}` ? string extends first ? IfIndex : `${number}` extends first ? IfIndex : IfIndexKey<rest, IfIndex, IfLiteral> : IfLiteral;
|
|
428
|
+
/**
|
|
429
|
+
* Helper for {@link JsonSerializableFilter} to determine if a property may
|
|
430
|
+
* be `undefined` and selects from options for result.
|
|
431
|
+
* Since `unknown` is a superset of `undefined`, it is given a special case.
|
|
432
|
+
* Additionally since index signatures are inherently optional, `unknown` typed
|
|
433
|
+
* values are treated as not undefined (`Result["Otherwise"]`).
|
|
434
|
+
*
|
|
435
|
+
* @system
|
|
436
|
+
*/
|
|
437
|
+
export type IfPossiblyUndefinedProperty<TKey, TValue, Result extends {
|
|
438
|
+
IfPossiblyUndefined: unknown;
|
|
439
|
+
IfUnknownNonIndexed: unknown;
|
|
440
|
+
Otherwise: unknown;
|
|
441
|
+
}> = undefined extends TValue ? unknown extends TValue ? IfIndexKey<TKey, Result["Otherwise"], Result["IfUnknownNonIndexed"]> : Result["IfPossiblyUndefined"] : Result["Otherwise"];
|
|
442
|
+
/**
|
|
443
|
+
* Core implementation of {@link JsonSerializable}.
|
|
444
|
+
*
|
|
445
|
+
* @privateRemarks
|
|
446
|
+
* Filtering through a single layer of recursion is all that is required
|
|
447
|
+
* when using in prescribed filter scenario.
|
|
448
|
+
*
|
|
449
|
+
* @system
|
|
450
|
+
*/
|
|
451
|
+
export type JsonSerializableFilter<T, Controls extends FilterControlsWithSubstitution, TAncestorTypes extends unknown[], TNextAncestor = T> = boolean extends (T extends never ? true : false) ? Controls["DegenerateSubstitute"] : unknown extends T ? Controls["DegenerateSubstitute"] : IfExactTypeInTuple<T, TAncestorTypes, true, "no match"> extends true ? T : T extends null | boolean | number | string | Controls["AllowExtensionOf"] ? T : IfExactTypeInTuple<T, Controls["AllowExactly"], true, "no match"> extends true ? T : Extract<T, Function> extends never ? T extends object ? T extends readonly (infer _)[] ? {
|
|
452
|
+
[K in keyof T]: JsonForSerializableArrayItem<T[K], Controls, TAncestorTypes, JsonSerializableFilter<T[K], Controls, [
|
|
453
|
+
TNextAncestor,
|
|
454
|
+
...TAncestorTypes
|
|
455
|
+
]>>;
|
|
456
|
+
} : IsExactlyObject<T> extends true ? NonNullJsonObjectWith<TupleToUnion<Controls["AllowExactly"]> | Controls["AllowExtensionOf"]> : IfEnumLike<T> extends never ? T : FlattenIntersection<{
|
|
457
|
+
[K in keyof T as RequiredNonSymbolKeysOf<T, K>]-?: IfPossiblyUndefinedProperty<K, T[K], {
|
|
458
|
+
IfPossiblyUndefined: {
|
|
459
|
+
["error required property may not allow `undefined` value"]: never;
|
|
460
|
+
};
|
|
461
|
+
IfUnknownNonIndexed: {
|
|
462
|
+
["error required property may not allow `unknown` value"]: never;
|
|
463
|
+
};
|
|
464
|
+
Otherwise: JsonSerializableFilter<T[K], Controls, [
|
|
465
|
+
TNextAncestor,
|
|
466
|
+
...TAncestorTypes
|
|
467
|
+
]>;
|
|
468
|
+
}>;
|
|
469
|
+
} & {
|
|
470
|
+
[K in keyof T as OptionalNonSymbolKeysOf<T, K>]?: JsonSerializableFilter<T[K], Controls, [
|
|
471
|
+
TNextAncestor,
|
|
472
|
+
...TAncestorTypes
|
|
473
|
+
]>;
|
|
474
|
+
} & {
|
|
475
|
+
[K in keyof T & symbol]: never;
|
|
476
|
+
}> : never : never;
|
|
477
|
+
/**
|
|
478
|
+
* Sentinel type for use when marking points of recursion (in a recursive type).
|
|
479
|
+
* Type is expected to be unique, though no lengths are taken to ensure that.
|
|
480
|
+
*
|
|
481
|
+
* @system
|
|
482
|
+
*/
|
|
483
|
+
export interface RecursionMarker {
|
|
484
|
+
[RecursionMarkerSymbol]: typeof RecursionMarkerSymbol;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Recursion limit is the count of `+` that prefix it when string.
|
|
488
|
+
*
|
|
489
|
+
* @system
|
|
490
|
+
*/
|
|
491
|
+
export type RecursionLimit = `+${string}` | 0;
|
|
492
|
+
/**
|
|
493
|
+
* Outer implementation of {@link JsonDeserialized} handling meta cases
|
|
494
|
+
* like recursive types.
|
|
495
|
+
*
|
|
496
|
+
* @privateRemarks
|
|
497
|
+
* This utility is reentrant and will process a type `T` up to RecurseLimit.
|
|
498
|
+
*
|
|
499
|
+
* @system
|
|
500
|
+
*/
|
|
501
|
+
export type JsonDeserializedImpl<T, Options extends Partial<FilterControls>, RecurseLimit extends RecursionLimit = "++++"> = {
|
|
502
|
+
AllowExactly: Options extends {
|
|
503
|
+
AllowExactly: unknown[];
|
|
504
|
+
} ? Options["AllowExactly"] : [];
|
|
505
|
+
AllowExtensionOf: Options extends {
|
|
506
|
+
AllowExtensionOf: unknown;
|
|
507
|
+
} ? Options["AllowExtensionOf"] : never;
|
|
508
|
+
DegenerateSubstitute: JsonTypeWith<(Options extends {
|
|
509
|
+
AllowExactly: unknown[];
|
|
510
|
+
} ? TupleToUnion<Options["AllowExactly"]> : never) | (Options extends {
|
|
511
|
+
AllowExtensionOf: unknown;
|
|
512
|
+
} ? Options["AllowExtensionOf"] : never)>;
|
|
513
|
+
DegenerateNonNullObjectSubstitute: NonNullJsonObjectWith<(Options extends {
|
|
514
|
+
AllowExactly: unknown[];
|
|
515
|
+
} ? TupleToUnion<Options["AllowExactly"]> : never) | (Options extends {
|
|
516
|
+
AllowExtensionOf: unknown;
|
|
517
|
+
} ? Options["AllowExtensionOf"] : never)>;
|
|
518
|
+
} extends infer Controls ? Controls extends DeserializedFilterControls ? boolean extends (T extends never ? true : false) ? Controls["DegenerateSubstitute"] : ReplaceRecursionWithMarkerAndPreserveAllowances<T, RecursionMarker, Controls> extends infer TNoRecursionAndOnlyPublics ? IsSameType<TNoRecursionAndOnlyPublics, JsonDeserializedFilter<TNoRecursionAndOnlyPublics, {
|
|
519
|
+
AllowExactly: [...Controls["AllowExactly"], RecursionMarker];
|
|
520
|
+
AllowExtensionOf: Controls["AllowExtensionOf"];
|
|
521
|
+
DegenerateSubstitute: Controls["DegenerateSubstitute"];
|
|
522
|
+
DegenerateNonNullObjectSubstitute: Controls["DegenerateNonNullObjectSubstitute"];
|
|
523
|
+
}, 0>> extends true ? IfNonPublicProperties<T, Controls, "found non-publics", "only publics"> extends "found non-publics" ? JsonDeserializedFilter<T, Controls, RecurseLimit> : T : JsonDeserializedFilter<T, Controls, RecurseLimit> : never : never : never;
|
|
524
|
+
/**
|
|
525
|
+
* Recurses T applying {@link InternalUtilityTypes.JsonDeserializedFilter} up to RecurseLimit times.
|
|
526
|
+
*
|
|
527
|
+
* @system
|
|
528
|
+
*/
|
|
529
|
+
export type JsonDeserializedRecursion<T, Controls extends DeserializedFilterControls, RecurseLimit extends RecursionLimit, TAncestorTypes> = T extends TAncestorTypes ? RecurseLimit extends `+${infer RecursionRemainder}` ? JsonDeserializedImpl<T, Controls, RecursionRemainder extends RecursionLimit ? RecursionRemainder : 0> : Controls["DegenerateSubstitute"] : JsonDeserializedFilter<T, Controls, RecurseLimit, TAncestorTypes | T>;
|
|
530
|
+
/**
|
|
531
|
+
* Core implementation of {@link JsonDeserialized}.
|
|
532
|
+
*
|
|
533
|
+
* @system
|
|
534
|
+
*/
|
|
535
|
+
export type JsonDeserializedFilter<T, Controls extends DeserializedFilterControls, RecurseLimit extends RecursionLimit, TAncestorTypes = T> = boolean extends (T extends never ? true : false) ? Controls["DegenerateSubstitute"] : unknown extends T ? Controls["DegenerateSubstitute"] : T extends null | boolean | number | string | Controls["AllowExtensionOf"] ? T : IfExactTypeInTuple<T, Controls["AllowExactly"], true, "not found"> extends true ? T : T extends object ? ExtractFunctionFromIntersection<T> extends {
|
|
536
|
+
classification: "exactly Function";
|
|
537
|
+
} ? never : T extends readonly (infer _)[] ? {
|
|
538
|
+
[K in keyof T]: JsonForDeserializedArrayItem<T[K], Controls, JsonDeserializedRecursion<T[K], Controls, RecurseLimit, TAncestorTypes>>;
|
|
539
|
+
} : IsExactlyObject<T> extends true ? Controls["DegenerateNonNullObjectSubstitute"] : IfEnumLike<T> extends never ? T : FlattenIntersection<{
|
|
540
|
+
[K in keyof T as NonSymbolWithDeserializablePropertyOf<T, Controls["AllowExactly"], Controls["AllowExtensionOf"], K>]: JsonDeserializedRecursion<T[K], Controls, RecurseLimit, TAncestorTypes>;
|
|
541
|
+
} & {
|
|
542
|
+
[K in keyof T as NonSymbolWithPossiblyDeserializablePropertyOf<T, Controls["AllowExactly"], Controls["AllowExtensionOf"], K>]?: JsonDeserializedRecursion<T[K], Controls, RecurseLimit, TAncestorTypes>;
|
|
543
|
+
}> : never;
|
|
544
|
+
export {};
|
|
545
|
+
}
|
|
546
|
+
export {};
|
|
547
|
+
//# sourceMappingURL=exposedInternalUtilityTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exposedInternalUtilityTypes.d.ts","sourceRoot":"","sources":["../src/exposedInternalUtilityTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
/**
|
|
8
|
+
* Unique symbol for recursion meta-typing.
|
|
9
|
+
*/
|
|
10
|
+
const RecursionMarkerSymbol = Symbol("recursion here");
|
|
11
|
+
//# sourceMappingURL=exposedInternalUtilityTypes.js.map
|