Skip to content

Commit df7b8d7

Browse files
committed
Add TypeScript type definitions
1 parent 09bea1d commit df7b8d7

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/index.d.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
type notUndefined = boolean | number | string | object | null | notUndefined[]
2+
export type Resolver<Schema> = (
3+
values: Schema[],
4+
path: string[],
5+
mergeSchemas: (schemas: Schema[]) => Schema,
6+
options: MergerOptions
7+
) => notUndefined
8+
9+
type PropertiesMerger<Schema> = {
10+
properties: Resolver<Schema>
11+
patternProperties: Resolver<Schema>
12+
additionalProperties: Resolver<Schema>
13+
}
14+
type ItemsMerger<Schema> = {
15+
items: Resolver<Schema>
16+
additionalItems: Resolver<Schema>
17+
}
18+
export type CombinedResolver<Schema, Mergers> = (
19+
values: Schema[],
20+
path: string[],
21+
mergers: Mergers,
22+
options: MergerOptions
23+
) => notUndefined
24+
export interface Resolvers<Schema> {
25+
[key: string]: Resolver<Schema>
26+
properties?: CombinedResolver<Schema, PropertiesMerger>
27+
items?: CombinedResolver<Schema, ItemsMerger>
28+
defaultResolver?: Resolver<Schema>
29+
}
30+
31+
export interface MergerOptions<Schema> {
32+
/**
33+
* @default false
34+
*/
35+
ignoreAdditionalProperties?: boolean
36+
resolvers?: Resolvers<Schema>
37+
/**
38+
* @default true
39+
*/
40+
deep?: boolean
41+
}
42+
43+
declare function merger<Schema> (
44+
rootSchema: Schema,
45+
options?: MergerOptions<Schema>
46+
): Schema
47+
48+
export = merger

0 commit comments

Comments
 (0)