1- import { Plugin , File } from 'metalsmith' ;
1+ import Metalsmith , { Plugin , File , Files } from 'metalsmith' ;
22
33export default defaultValues ;
44
5- export type DefaultSetter < FileMeta , GlobalMeta > = ( data :FileMeta , metadata : GlobalMeta ) => any
6- export interface DefaultsSet < FileMeta = File , GlobalMeta = { [ key :string ] :any } > {
5+ export type DefaultSetter < FileMeta extends File = File > = (
6+ currentFile : Readonly < FileMeta > ,
7+ currentPath : Readonly < string > ,
8+ files :Readonly < Files > ,
9+ metalsmith :Readonly < Metalsmith >
10+ ) => any
11+
12+ export interface DefaultsSet < FileMeta extends File = File > {
713 /** an object whose keys will be set as file metadata keys */
8- defaults : {
9- [ key :string ] : DefaultSetter < FileMeta , GlobalMeta > | string | boolean | number | Object ;
10- }
14+ defaults : Record < string , DefaultSetter < FileMeta > | string | boolean | number | object >
1115 /**
1216 * 1 or more glob patterns to match files.
1317 * @default '**'
@@ -19,20 +23,21 @@ export interface DefaultsSet<FileMeta = File, GlobalMeta = {[key:string]:any}> {
1923 */
2024 strategy ?: 'keep' | 'overwrite'
2125}
22- export type Options < FileMeta , GlobalMeta > = DefaultsSet < FileMeta , GlobalMeta > | DefaultsSet < FileMeta , GlobalMeta > [ ]
26+ export type Options < FileMeta extends File = File > = DefaultsSet < FileMeta > | DefaultsSet < FileMeta > [ ]
2327/**
24- * Set `defaults` to file metadata matching `pattern`'s.
28+ * Set `defaults` or _computed values_ to file metadata matching `pattern`'s.
2529 *
2630 * @example
27- * metalsmith.use(defaultValues({
28- pattern: 'posts/*.md',
29- defaults: {
30- layout: 'post.hbs',
31- draft: false,
32- date(post) {
33- return post.stats.ctime
34- }
35- }
36- }))
31+ * metalsmith.use(defaultValues([{
32+ * pattern: 'posts/*.md',
33+ * defaults: {
34+ * layout: 'post.hbs',
35+ * draft: false,
36+ * 'some.nested.property': true,
37+ * isodate(post, postPath, allFiles, metalsmith) {
38+ * return new Date(post.stats.ctime).toISOString()
39+ * }
40+ * }
41+ *}))
3742 **/
38- declare function defaultValues < FileMeta = File , GlobalMeta = { [ key : string ] : any } > ( options : Options < FileMeta , GlobalMeta > ) : Plugin ;
43+ declare function defaultValues < FileMeta extends File = File > ( options : Options < FileMeta > ) : Plugin ;
0 commit comments