♻️ Keep the public API to the four factories
The builder types are already the inferred return types and travel into the emitted .d.ts, so exporting them only made them nameable while pinning the internal Strict/Widening split as API. Revert the type exports and the public renames, drop the type-surface test, and document only the factories in README and development/library.md.
This commit is contained in:
1 parent
9c9468fa3c
commit
5ddbbdc183
7 files changed
+37
-145
No files matched your search
+4
-18
@@ -44,14 +44,7 @@ type MustBePartial<T extends Matchable, Handled> =
|
||||
// Strict returns: one common `R`. Overload order is load-bearing:
|
||||
// #1 Handlers (first) -> the exhaustive form and the autocomplete popup
|
||||
// #2 Fallback (last) -> accepts a partial handler map plus a fallback
|
||||
/**
|
||||
* The builder returned by {@link getPrimitiveUnionMatcher}: call it with a
|
||||
* handler map for every member of `T` to get a strict matcher, or with a partial
|
||||
* map plus a fallback.
|
||||
*
|
||||
* @typeParam T - The finite universe of primitive members to match.
|
||||
*/
|
||||
export interface PrimitiveUnionMatcher<T extends Matchable> {
|
||||
interface PrimitiveUnionMatcherStrict<T extends Matchable> {
|
||||
<R>(handlers: Handlers<T, R> & UniverseGate<T>): UnaryFn<T, R>;
|
||||
<
|
||||
R,
|
||||
@@ -66,14 +59,7 @@ export interface PrimitiveUnionMatcher<T extends Matchable> {
|
||||
// Widened returns: the union of every handler's return type. `P` is inferred
|
||||
// from the whole handler map, whose closed constraint supplies the
|
||||
// contextual/autocomplete type.
|
||||
/**
|
||||
* The builder returned by {@link getPrimitiveUnionMatcherW}: like
|
||||
* {@link PrimitiveUnionMatcher}, but the result's return type is the union of
|
||||
* every handler's return type instead of one common `R`.
|
||||
*
|
||||
* @typeParam T - The finite universe of primitive members to match.
|
||||
*/
|
||||
export interface PrimitiveUnionMatcherW<T extends Matchable> {
|
||||
interface PrimitiveUnionMatcherWidening<T extends Matchable> {
|
||||
<P extends Exact<Handlers<T, unknown>, P>>(
|
||||
handlers: P & UniverseGate<T>,
|
||||
): UnaryFn<T, PatternReturns<P>>;
|
||||
@@ -130,7 +116,7 @@ const dispatch =
|
||||
*/
|
||||
export const getPrimitiveUnionMatcher = <
|
||||
T extends Matchable,
|
||||
>(): PrimitiveUnionMatcher<T> => dispatch;
|
||||
>(): PrimitiveUnionMatcherStrict<T> => dispatch;
|
||||
|
||||
/**
|
||||
* Create a matcher for a finite primitive universe whose return type is the
|
||||
@@ -151,4 +137,4 @@ export const getPrimitiveUnionMatcher = <
|
||||
*/
|
||||
export const getPrimitiveUnionMatcherW = <
|
||||
T extends Matchable,
|
||||
>(): PrimitiveUnionMatcherW<T> => dispatch;
|
||||
>(): PrimitiveUnionMatcherWidening<T> => dispatch;
|
||||
Reference in new issue
Block a user