Skip to content

For better performance, implement incremental updates by checking the event parameter:

ts
async watchHandler(entries, event) {
  if (event) {
    // File changed - regenerate only affected routes
    if (event.kind === "update" || event.kind === "create") {
      const affected = entries.filter(({ kind, route }) => {
        if (kind !== "api") return false;

        // Route's own file changed
        if (route.fileFullpath === event.file) return true;

        // A file this route imports changed
        if (route.referencedFiles?.includes(event.file)) return true;

        return false;
      });

      await generateFiles(affected);
    }

    if (event.kind === "delete") {
      // Clean up generated files for deleted route
      await cleanupFiles(event.file);
    }
  } else {
    // Initial call - generate everything
    await generateFiles(entries);
  }
}

The referencedFiles array helps you track dependencies. When a type definition file changes, all routes that import from it should be regenerated.

Released under the MIT License.