mirror of
				https://github.com/jackyzha0/quartz.git
				synced 2025-10-30 03:17:39 +01:00 
			
		
		
		
	feat: add warning for invalid date format
This commit is contained in:
		
							parent
							
								
									a897cc1f53
								
							
						
					
					
						commit
						13c8673226
					
				| @ -2,6 +2,7 @@ import fs from "fs" | ||||
| import path from "path" | ||||
| import { Repository } from "@napi-rs/simple-git" | ||||
| import { QuartzTransformerPlugin } from "../types" | ||||
| import chalk from "chalk" | ||||
| 
 | ||||
| export interface Options { | ||||
|   priority: ("frontmatter" | "git" | "filesystem")[] | ||||
| @ -11,9 +12,18 @@ const defaultOptions: Options = { | ||||
|   priority: ["frontmatter", "git", "filesystem"], | ||||
| } | ||||
| 
 | ||||
| function coerceDate(d: any): Date { | ||||
| function coerceDate(fp: string, d: any): Date { | ||||
|   const dt = new Date(d) | ||||
|   return isNaN(dt.getTime()) ? new Date() : dt | ||||
|   const invalidDate = isNaN(dt.getTime()) | ||||
|   if (invalidDate && d !== undefined) { | ||||
|     console.log( | ||||
|       chalk.yellow( | ||||
|         `\nWarning: found invalid date "${d}" in \`${fp}\`. Supported formats: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format`, | ||||
|       ), | ||||
|     ) | ||||
|   } | ||||
| 
 | ||||
|   return invalidDate ? new Date() : dt | ||||
| } | ||||
| 
 | ||||
| type MaybeDate = undefined | string | number | ||||
| @ -32,10 +42,11 @@ export const CreatedModifiedDate: QuartzTransformerPlugin<Partial<Options> | und | ||||
|             let modified: MaybeDate = undefined | ||||
|             let published: MaybeDate = undefined | ||||
| 
 | ||||
|             const fp = path.posix.join(file.cwd, file.data.filePath as string) | ||||
|             const fp = file.data.filePath! | ||||
|             const fullFp = path.posix.join(file.cwd, fp) | ||||
|             for (const source of opts.priority) { | ||||
|               if (source === "filesystem") { | ||||
|                 const st = await fs.promises.stat(fp) | ||||
|                 const st = await fs.promises.stat(fullFp) | ||||
|                 created ||= st.birthtimeMs | ||||
|                 modified ||= st.mtimeMs | ||||
|               } else if (source === "frontmatter" && file.data.frontmatter) { | ||||
| @ -54,9 +65,9 @@ export const CreatedModifiedDate: QuartzTransformerPlugin<Partial<Options> | und | ||||
|             } | ||||
| 
 | ||||
|             file.data.dates = { | ||||
|               created: coerceDate(created), | ||||
|               modified: coerceDate(modified), | ||||
|               published: coerceDate(published), | ||||
|               created: coerceDate(fp, created), | ||||
|               modified: coerceDate(fp, modified), | ||||
|               published: coerceDate(fp, published), | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jacky Zhao
						Jacky Zhao