Skip to content

Commit fb81838

Browse files
committed
Adds generics for file & global metadata to Typescript types
1 parent d4a5723 commit fb81838

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

lib/index.d.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
import { Plugin, File } from 'metalsmith';
22

33
export default defaultValues;
4-
export interface DefaultsSet {
5-
/** 1 or more glob patterns to match files. Defaults to `'**'` (all). */
6-
pattern?: string;
4+
5+
export type DefaultSetter<FileMeta, GlobalMeta> = (data:FileMeta, metadata: GlobalMeta) => any
6+
export interface DefaultsSet<FileMeta = File, GlobalMeta = {[key:string]:any}> {
77
/** an object whose keys will be set as file metadata keys */
88
defaults: {
9-
[key:string]: ((data:File, metadata: {[key:string]:any}) => any)|string|boolean|number|Object;
9+
[key:string]: DefaultSetter<FileMeta, GlobalMeta>|string|boolean|number|Object;
1010
}
11-
/** Strategy to handle setting defaults to keys that are aleady defined. */
12-
strategy: 'keep'|'overwrite'
11+
/**
12+
* 1 or more glob patterns to match files.
13+
* @default '**'
14+
**/
15+
pattern?: string;
16+
/**
17+
* Strategy to handle setting defaults to keys that are aleady defined.
18+
* @default 'keep'
19+
*/
20+
strategy?: 'keep'|'overwrite'
1321
}
14-
export type Options = DefaultsSet|DefaultsSet[]
22+
export type Options<FileMeta, GlobalMeta> = DefaultsSet<FileMeta, GlobalMeta>|DefaultsSet<FileMeta, GlobalMeta>[]
1523
/**
1624
* Set `defaults` to file metadata matching `pattern`'s.
1725
*
@@ -27,4 +35,4 @@ export type Options = DefaultsSet|DefaultsSet[]
2735
}
2836
}))
2937
**/
30-
declare function defaultValues(options: Options): Plugin;
38+
declare function defaultValues<FileMeta = File, GlobalMeta = {[key:string]:any}>(options: Options<FileMeta, GlobalMeta>): Plugin;

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import getDefaultsSetter from './set_defaults.js'
1010
* @typedef {Object} DefaultsSet
1111
* @property {string|string[]} [pattern="**"] 1 or more glob patterns to match files. Defaults to `'**'` (all).
1212
* @property {Object<string, *>} [defaults={}] an object whose keys will be set as file metadata keys
13-
* @property {'keep'|'overwrite'} strategy Strategy to handle setting defaults to keys that are aleady defined.
13+
* @property {'keep'|'overwrite'} [strategy="keep"] Strategy to handle setting defaults to keys that are aleady defined. Defaults to `'keep'`
1414
*/
1515

1616
/** @type {DefaultsSet} */

0 commit comments

Comments
 (0)