hey look a thing

This commit is contained in:
ewin 2025-03-10 00:02:54 -04:00
commit dac0a80d47
Signed by: erin
SSH key fingerprint: SHA256:swjoHhREbZPbWe+gyJNi24d4NAxJSyUIm3fpZj4z3wc
12 changed files with 825 additions and 0 deletions

10
util.mts Normal file
View file

@ -0,0 +1,10 @@
import {Overwrite} from './grammar.mts';
type AllMerged<Objects extends any[]> = Objects extends
[infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]>
: Objects extends [infer T, ...infer Rest] ? T
: Objects extends (infer Rest)[] ? Rest
: never;
export const merge = <T extends any[]>(objects: T): AllMerged<T> =>
Object.assign(Object.create(null), ...objects);