All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.javascript.jscomp.diagnostic.LogFile Maven / Gradle / Ivy

Go to download

Closure Compiler is a JavaScript optimizing compiler. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what's left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls. It is used in many of Google's JavaScript apps, including Gmail, Google Web Search, Google Maps, and Google Docs.

There is a newer version: v20240317
Show newest version
/*
 * Copyright 2019 The Closure Compiler Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.javascript.jscomp.diagnostic;

import com.google.errorprone.annotations.FormatMethod;
import com.google.errorprone.annotations.FormatString;
import com.google.errorprone.annotations.MustBeClosed;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.util.function.Supplier;

/**
 * A simple interface for writing to a human readable log file.
 *
 * 

This API is designed to be compatible with J2CL. In the future it may be worth implementing * this in terms of Flogger; however, at the time of * writing, Flogger was not J2CL compatible. */ public abstract class LogFile implements AutoCloseable { /** * An interface allowing streaming JSON to a LogFile via a {@link JsonWriter} * *

Use with {@link #logJson(StreamedJsonProducer)} */ public interface StreamedJsonProducer { public void writeJson(JsonWriter jsonWriter) throws IOException; } @MustBeClosed public static LogFile createOrReopen(Path file) { return WritingLogFile.create(file); } public static LogFile createNoOp() { return new NoOpLogFile(); } // All subclasses are package classes. LogFile() {} public abstract LogFile log(Object value); public abstract LogFile log(String value); // Provides a disambiguating overload. public abstract LogFile log(Supplier value); @FormatMethod public abstract LogFile log(@FormatString String template, Object... values); public abstract LogFile logJson(Object value); public abstract LogFile logJson(Supplier value); public abstract LogFile logJson(StreamedJsonProducer producer); // Whether or not the results are being recorded. public abstract boolean isLogging(); @Override public abstract void close(); }