midwinter
Version:
A next-gen middleware engine built for the WinterCG environments.
20 lines (17 loc) • 845 B
text/typescript
import { Midwinter } from 'midwinter';
import { a as AnyMeta } from './util-CHs1TI3T.mjs';
type TypeKey<T extends string> = `~T${T}`;
type StripTypeKey<T extends string> = T extends `~T${infer $Inner}` ? $Inner : T;
type TypeOf<T = unknown> = {
__typeof: T;
};
type InferTypeof<T = unknown, Default = never> = T extends TypeOf<any> ? T["__typeof"] : Default;
type Typify<T extends AnyMeta> = {
[Key in keyof T & string as TypeKey<Key>]: TypeOf<T[Key]>;
};
type UnTypify<T extends AnyMeta> = {
[Key in keyof T as StripTypeKey<Key & string>]: T[Key] extends TypeOf ? T[Key]["__typeof"] : T[Key];
};
/** Append types to the meta object */
declare const types: <T extends AnyMeta>(input?: T) => Midwinter<{}, Typify<T>, {}>;
export { type InferTypeof, type StripTypeKey, type TypeKey, type TypeOf, type Typify, type UnTypify, types };