MCPcopy Index your code
hub / github.com/callumalpass/tasknotes / generateTaskFilename

Function generateTaskFilename

src/utils/filenameGenerator.ts:132–191  ·  view source on GitHub ↗
(
	context: FilenameContext,
	settings: TaskFilenameSettings
)

Source from the content-addressed store, hash-verified

130 * Generates a filename based on the configured format and context
131 */
132export function generateTaskFilename(
133 context: FilenameContext,
134 settings: TaskFilenameSettings
135): string {
136 // Validate inputs
137 if (!context || !settings) {
138 throw new Error("Invalid context or settings provided");
139 }
140
141 if (!context.title || typeof context.title !== "string") {
142 throw new Error("Context must have a valid title");
143 }
144
145 // Validate title content
146 if (context.title.trim().length === 0) {
147 throw new Error("Title cannot be empty");
148 }
149
150 const now = context.date || new Date();
151
152 // Validate date
153 if (!(now instanceof Date) || isNaN(now.getTime())) {
154 throw new Error("Invalid date provided in context");
155 }
156
157 if (settings.storeTitleInFilename) {
158 return sanitizeForFilename(context.title);
159 }
160
161 try {
162 switch (settings.taskFilenameFormat) {
163 case "title":
164 return sanitizeForFilename(context.title);
165
166 case "zettel":
167 return generateZettelId(now);
168
169 case "timestamp":
170 return generateTimestampFilename(now);
171
172 case "uuid":
173 return generateUUIDFilename();
174
175 case "custom":
176 return generateCustomFilename(context, settings.customFilenameTemplate, now);
177
178 default:
179 // Fallback to zettel format
180 return generateZettelId(now);
181 }
182 } catch (error) {
183 tasknotesLogger.error("Error generating filename:", {
184 category: "persistence",
185 operation: "generating-filename",
186 error: error,
187 });
188 // Fallback to safe zettel format
189 return generateZettelId(now);

Calls 6

sanitizeForFilenameFunction · 0.85
generateZettelIdFunction · 0.85
generateUUIDFilenameFunction · 0.85
generateCustomFilenameFunction · 0.85
errorMethod · 0.80

Tested by

no test coverage detected