mirror of
https://github.com/hanzoai/esbuild.git
synced 2026-09-24 16:58:50 +00:00
108 lines
4.2 KiB
Go
108 lines
4.2 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// This log style is intended to help integrate esbuild with Visual Studio's
|
|
// built-in problem matcher. More information:
|
|
//
|
|
// - https://learn.microsoft.com/en-us/cpp/build/formatting-the-output-of-a-custom-build-step-or-build-event
|
|
// - https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-diagnostic-format-for-tasks
|
|
func msgToStringVisualStudio(msg Msg, options OutputOptions, terminalInfo TerminalInfo) string {
|
|
var text strings.Builder
|
|
|
|
// Write the origin
|
|
if loc := msg.Data.Location; loc != nil {
|
|
// Potentially this needs to always be an absolute path?
|
|
text.WriteString(loc.File.Abs)
|
|
|
|
// Note: Need to adjust the column from 0-based to 1-based
|
|
if loc.Line > 0 {
|
|
text.WriteString(fmt.Sprintf("(%d,%d)", loc.Line, loc.Column+1))
|
|
}
|
|
text.WriteString(": ")
|
|
} else {
|
|
// If there is no file, then we must write a tool name
|
|
text.WriteString("esbuild: ")
|
|
}
|
|
|
|
// The code appears to be required, so make something up
|
|
code := fmt.Sprintf("ES%04d", msgIDToInfo(msg.ID).vsID)
|
|
|
|
// The only valid options for the category seem to be "error" and "warning"
|
|
if msg.Kind == Error {
|
|
text.WriteString(fmt.Sprintf("error %s: ", code))
|
|
} else {
|
|
text.WriteString(fmt.Sprintf("warning %s: ", code))
|
|
}
|
|
|
|
text.WriteString(msg.Data.Text)
|
|
text.WriteByte('\n')
|
|
return text.String()
|
|
}
|
|
|
|
type vsID = uint8
|
|
|
|
// These are separate from "MsgID" because they are external and "MsgID" is
|
|
// internal. Don't ever delete or reorder one of these. Only append to them.
|
|
const (
|
|
vsID_JS_AssertToWith = 1
|
|
vsID_JS_AssertTypeJSON = 2
|
|
vsID_JS_AssignToConstant = 3
|
|
vsID_JS_AssignToDefine = 4
|
|
vsID_JS_AssignToImport = 5
|
|
vsID_JS_BigInt = 6
|
|
vsID_JS_CallImportNamespace = 7
|
|
vsID_JS_ClassNameWillThrow = 8
|
|
vsID_JS_CommonJSVariableInESM = 9
|
|
vsID_JS_ConfusingTypeScriptCast = 10
|
|
vsID_JS_DeleteSuperProperty = 11
|
|
vsID_JS_DirectEval = 12
|
|
vsID_JS_DuplicateCase = 13
|
|
vsID_JS_DuplicateClassMember = 14
|
|
vsID_JS_DuplicateObjectKey = 15
|
|
vsID_JS_EmptyImportMeta = 16
|
|
vsID_JS_EqualsNaN = 17
|
|
vsID_JS_EqualsNegativeZero = 18
|
|
vsID_JS_EqualsNewObject = 19
|
|
vsID_JS_HTMLCommentInJS = 20
|
|
vsID_JS_ImpossibleTypeof = 21
|
|
vsID_JS_IndirectRequire = 22
|
|
vsID_JS_PrivateNameWillThrow = 23
|
|
vsID_JS_SemicolonAfterReturn = 24
|
|
vsID_JS_SuspiciousBooleanNot = 25
|
|
vsID_JS_SuspiciousDefine = 26
|
|
vsID_JS_SuspiciousLogicalOperator = 27
|
|
vsID_JS_SuspiciousNullishCoalescing = 28
|
|
vsID_JS_ThisIsUndefinedInESM = 29
|
|
vsID_JS_UnsupportedDynamicImport = 30
|
|
vsID_JS_UnsupportedJSXComment = 31
|
|
vsID_JS_UnsupportedRegExp = 32
|
|
vsID_JS_UnsupportedRequireCall = 33
|
|
vsID_CSS_CSSSyntaxError = 34
|
|
vsID_CSS_InvalidAtCharset = 35
|
|
vsID_CSS_InvalidAtImport = 36
|
|
vsID_CSS_InvalidAtLayer = 37
|
|
vsID_CSS_InvalidCalc = 38
|
|
vsID_CSS_JSCommentInCSS = 39
|
|
vsID_CSS_UndefinedComposesFrom = 40
|
|
vsID_CSS_UnsupportedAtCharset = 41
|
|
vsID_CSS_UnsupportedAtNamespace = 42
|
|
vsID_CSS_UnsupportedCSSProperty = 43
|
|
vsID_CSS_UnsupportedCSSNesting = 44
|
|
vsID_Bundler_AmbiguousReexport = 45
|
|
vsID_Bundler_DifferentPathCase = 46
|
|
vsID_Bundler_EmptyGlob = 47
|
|
vsID_Bundler_IgnoredBareImport = 48
|
|
vsID_Bundler_IgnoredDynamicImport = 49
|
|
vsID_Bundler_ImportIsUndefined = 50
|
|
vsID_Bundler_RequireResolveNotExternal = 51
|
|
vsID_SourceMap_InvalidSourceMappings = 52
|
|
vsID_SourceMap_MissingSourceMap = 53
|
|
vsID_SourceMap_UnsupportedSourceMapComment = 54
|
|
vsID_PackageJSON = 55
|
|
vsID_TSConfigJSON = 56
|
|
)
|