put all the type definitions in the same place
This commit is contained in:
parent
dac0a80d47
commit
8f2f475043
|
@ -1,13 +1,9 @@
|
||||||
import {IRawGrammar} from 'vscode-textmate';
|
import {IRawGrammar} from 'vscode-textmate';
|
||||||
|
import {type Overwrite} from './util.mts';
|
||||||
|
|
||||||
// vscode-textmate doesn't expose anything else so fine we'll do it ourselves
|
// vscode-textmate doesn't expose anything else so fine we'll do it ourselves
|
||||||
|
|
||||||
type AllOptionalWritable<T> = { -readonly [K in keyof T]?: T[K] };
|
type AllOptionalWritable<T> = { -readonly [K in keyof T]?: T[K] };
|
||||||
export type Overwrite<T, U> = {
|
|
||||||
[K in keyof (T & U)]: K extends keyof U ? U[K]
|
|
||||||
: K extends keyof T ? T[K]
|
|
||||||
: never;
|
|
||||||
};
|
|
||||||
type RemoveLocation<T> = Omit<T, '$vscodeTextmateLocation'>;
|
type RemoveLocation<T> = Omit<T, '$vscodeTextmateLocation'>;
|
||||||
|
|
||||||
type Cleanup<T, Overrides = unknown> = AllOptionalWritable<
|
type Cleanup<T, Overrides = unknown> = AllOptionalWritable<
|
||||||
|
|
8
util.mts
8
util.mts
|
@ -1,6 +1,10 @@
|
||||||
import {Overwrite} from './grammar.mts';
|
export type Overwrite<T, U> = {
|
||||||
|
[K in keyof (T & U)]: K extends keyof U ? U[K]
|
||||||
|
: K extends keyof T ? T[K]
|
||||||
|
: never;
|
||||||
|
};
|
||||||
|
|
||||||
type AllMerged<Objects extends any[]> = Objects extends
|
export type AllMerged<Objects extends any[]> = Objects extends
|
||||||
[infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]>
|
[infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]>
|
||||||
: Objects extends [infer T, ...infer Rest] ? T
|
: Objects extends [infer T, ...infer Rest] ? T
|
||||||
: Objects extends (infer Rest)[] ? Rest
|
: Objects extends (infer Rest)[] ? Rest
|
||||||
|
|
Loading…
Reference in a new issue