in src/main/com/intellij/lang/jsgraphql/ide/introspection/source/GraphQLGeneratedSourcesUpdater.kt [69:113]
override fun prepareChange(events: MutableList<out VFileEvent>): ChangeApplier? {
val fileIndex = ProjectRootManager.getInstance(project).fileIndex
var changed = false
for (event in events) {
if (event is VFileCreateEvent) {
if (FileUtil.extensionEquals(event.childName, JsonFileType.DEFAULT_EXTENSION)) {
changed = true
break
}
continue
}
val file = event.file ?: continue
if (!fileIndex.isInProject(file) && !FileUtil.isAncestor(generatedSdlDirPath, file.path, false)) continue
if (event is VFileDeleteEvent) {
// regenerate GraphQL SDLs from cache directory on deletion
if (file.isDirectory && FileUtil.pathsEqual(file.path, generatedSdlDirPath) ||
FileUtil.pathsEqual(file.parent?.path, generatedSdlDirPath)
) {
changed = true
break
}
}
if (file in jsonSchemaFiles) {
changed = true
break
}
if (file.isDirectory && event !is VFileDeleteEvent) {
if (file.children.any { it in jsonSchemaFiles || it.fileType == JsonFileType.INSTANCE }) {
changed = true
break
}
}
}
if (!changed) return null
return object : ChangeApplier {
override fun afterVfsChange() {
scheduleJsonSchemaGeneration()
}
}
}