330 lines
10 KiB
Go
330 lines
10 KiB
Go
package logger
|
|
|
|
// Most non-error log messages are given a message ID that can be used to set
|
|
// the log level for that message. Errors do not get a message ID because you
|
|
// cannot turn errors into non-errors (otherwise the build would incorrectly
|
|
// succeed). Some internal log messages do not get a message ID because they
|
|
// are part of verbose and/or internal debugging output. These messages use
|
|
// "MsgID_None" instead.
|
|
type MsgID = uint8
|
|
|
|
const (
|
|
MsgID_None MsgID = iota
|
|
|
|
// JavaScript
|
|
MsgID_JS_AssertTypeJSON
|
|
MsgID_JS_AssignToConstant
|
|
MsgID_JS_AssignToDefine
|
|
MsgID_JS_AssignToImport
|
|
MsgID_JS_CallImportNamespace
|
|
MsgID_JS_CommonJSVariableInESM
|
|
MsgID_JS_DeleteSuperProperty
|
|
MsgID_JS_DirectEval
|
|
MsgID_JS_DuplicateCase
|
|
MsgID_JS_DuplicateObjectKey
|
|
MsgID_JS_EmptyImportMeta
|
|
MsgID_JS_EqualsNaN
|
|
MsgID_JS_EqualsNegativeZero
|
|
MsgID_JS_EqualsNewObject
|
|
MsgID_JS_HTMLCommentInJS
|
|
MsgID_JS_ImpossibleTypeof
|
|
MsgID_JS_IndirectRequire
|
|
MsgID_JS_PrivateNameWillThrow
|
|
MsgID_JS_SemicolonAfterReturn
|
|
MsgID_JS_SuspiciousBooleanNot
|
|
MsgID_JS_ThisIsUndefinedInESM
|
|
MsgID_JS_UnsupportedDynamicImport
|
|
MsgID_JS_UnsupportedJSXComment
|
|
MsgID_JS_UnsupportedRegExp
|
|
MsgID_JS_UnsupportedRequireCall
|
|
|
|
// CSS
|
|
MsgID_CSS_CSSSyntaxError
|
|
MsgID_CSS_InvalidAtCharset
|
|
MsgID_CSS_InvalidAtImport
|
|
MsgID_CSS_InvalidAtLayer
|
|
MsgID_CSS_InvalidAtNest
|
|
MsgID_CSS_InvalidCalc
|
|
MsgID_CSS_JSCommentInCSS
|
|
MsgID_CSS_UnsupportedAtCharset
|
|
MsgID_CSS_UnsupportedAtNamespace
|
|
MsgID_CSS_UnsupportedCSSProperty
|
|
|
|
// Bundler
|
|
MsgID_Bundler_AmbiguousReexport
|
|
MsgID_Bundler_DifferentPathCase
|
|
MsgID_Bundler_IgnoredBareImport
|
|
MsgID_Bundler_IgnoredDynamicImport
|
|
MsgID_Bundler_ImportIsUndefined
|
|
MsgID_Bundler_RequireResolveNotExternal
|
|
|
|
// Source maps
|
|
MsgID_SourceMap_InvalidSourceMappings
|
|
MsgID_SourceMap_SectionsInSourceMap
|
|
MsgID_SourceMap_MissingSourceMap
|
|
MsgID_SourceMap_UnsupportedSourceMapComment
|
|
|
|
// package.json
|
|
MsgID_PackageJSON_FIRST // Keep this first
|
|
MsgID_PackageJSON_InvalidBrowser
|
|
MsgID_PackageJSON_InvalidImportsOrExports
|
|
MsgID_PackageJSON_InvalidSideEffects
|
|
MsgID_PackageJSON_InvalidType
|
|
MsgID_PackageJSON_LAST // Keep this last
|
|
|
|
// tsconfig.json
|
|
MsgID_TsconfigJSON_FIRST // Keep this first
|
|
MsgID_TsconfigJSON_Cycle
|
|
MsgID_TsconfigJSON_InvalidImportsNotUsedAsValues
|
|
MsgID_TsconfigJSON_InvalidJSX
|
|
MsgID_TsconfigJSON_InvalidModuleSuffixes
|
|
MsgID_TsconfigJSON_InvalidPaths
|
|
MsgID_TsconfigJSON_InvalidTarget
|
|
MsgID_TsconfigJSON_Missing
|
|
MsgID_TsconfigJSON_LAST // Keep this last
|
|
|
|
MsgID_END // Keep this at the end (used only for tests)
|
|
)
|
|
|
|
func StringToMsgIDs(str string, logLevel LogLevel, overrides map[MsgID]LogLevel) {
|
|
switch str {
|
|
// JS
|
|
case "assert-type-json":
|
|
overrides[MsgID_JS_AssertTypeJSON] = logLevel
|
|
case "assign-to-constant":
|
|
overrides[MsgID_JS_AssignToConstant] = logLevel
|
|
case "assign-to-define":
|
|
overrides[MsgID_JS_AssignToDefine] = logLevel
|
|
case "assign-to-import":
|
|
overrides[MsgID_JS_AssignToImport] = logLevel
|
|
case "call-import-namespace":
|
|
overrides[MsgID_JS_CallImportNamespace] = logLevel
|
|
case "commonjs-variable-in-esm":
|
|
overrides[MsgID_JS_CommonJSVariableInESM] = logLevel
|
|
case "delete-super-property":
|
|
overrides[MsgID_JS_DeleteSuperProperty] = logLevel
|
|
case "direct-eval":
|
|
overrides[MsgID_JS_DirectEval] = logLevel
|
|
case "duplicate-case":
|
|
overrides[MsgID_JS_DuplicateCase] = logLevel
|
|
case "duplicate-object-key":
|
|
overrides[MsgID_JS_DuplicateObjectKey] = logLevel
|
|
case "empty-import-meta":
|
|
overrides[MsgID_JS_EmptyImportMeta] = logLevel
|
|
case "equals-nan":
|
|
overrides[MsgID_JS_EqualsNaN] = logLevel
|
|
case "equals-negative-zero":
|
|
overrides[MsgID_JS_EqualsNegativeZero] = logLevel
|
|
case "equals-new-object":
|
|
overrides[MsgID_JS_EqualsNewObject] = logLevel
|
|
case "html-comment-in-js":
|
|
overrides[MsgID_JS_HTMLCommentInJS] = logLevel
|
|
case "impossible-typeof":
|
|
overrides[MsgID_JS_ImpossibleTypeof] = logLevel
|
|
case "indirect-require":
|
|
overrides[MsgID_JS_IndirectRequire] = logLevel
|
|
case "private-name-will-throw":
|
|
overrides[MsgID_JS_PrivateNameWillThrow] = logLevel
|
|
case "semicolon-after-return":
|
|
overrides[MsgID_JS_SemicolonAfterReturn] = logLevel
|
|
case "suspicious-boolean-not":
|
|
overrides[MsgID_JS_SuspiciousBooleanNot] = logLevel
|
|
case "this-is-undefined-in-esm":
|
|
overrides[MsgID_JS_ThisIsUndefinedInESM] = logLevel
|
|
case "unsupported-dynamic-import":
|
|
overrides[MsgID_JS_UnsupportedDynamicImport] = logLevel
|
|
case "unsupported-jsx-comment":
|
|
overrides[MsgID_JS_UnsupportedJSXComment] = logLevel
|
|
case "unsupported-regexp":
|
|
overrides[MsgID_JS_UnsupportedRegExp] = logLevel
|
|
case "unsupported-require-call":
|
|
overrides[MsgID_JS_UnsupportedRequireCall] = logLevel
|
|
|
|
// CSS
|
|
case "css-syntax-error":
|
|
overrides[MsgID_CSS_CSSSyntaxError] = logLevel
|
|
case "invalid-@charset":
|
|
overrides[MsgID_CSS_InvalidAtCharset] = logLevel
|
|
case "invalid-@import":
|
|
overrides[MsgID_CSS_InvalidAtImport] = logLevel
|
|
case "invalid-@nest":
|
|
overrides[MsgID_CSS_InvalidAtNest] = logLevel
|
|
case "invalid-@layer":
|
|
overrides[MsgID_CSS_InvalidAtLayer] = logLevel
|
|
case "invalid-calc":
|
|
overrides[MsgID_CSS_InvalidCalc] = logLevel
|
|
case "js-comment-in-css":
|
|
overrides[MsgID_CSS_JSCommentInCSS] = logLevel
|
|
case "unsupported-@charset":
|
|
overrides[MsgID_CSS_UnsupportedAtCharset] = logLevel
|
|
case "unsupported-@namespace":
|
|
overrides[MsgID_CSS_UnsupportedAtNamespace] = logLevel
|
|
case "unsupported-css-property":
|
|
overrides[MsgID_CSS_UnsupportedCSSProperty] = logLevel
|
|
|
|
// Bundler
|
|
case "ambiguous-reexport":
|
|
overrides[MsgID_Bundler_AmbiguousReexport] = logLevel
|
|
case "different-path-case":
|
|
overrides[MsgID_Bundler_DifferentPathCase] = logLevel
|
|
case "ignored-bare-import":
|
|
overrides[MsgID_Bundler_IgnoredBareImport] = logLevel
|
|
case "ignored-dynamic-import":
|
|
overrides[MsgID_Bundler_IgnoredDynamicImport] = logLevel
|
|
case "import-is-undefined":
|
|
overrides[MsgID_Bundler_ImportIsUndefined] = logLevel
|
|
case "require-resolve-not-external":
|
|
overrides[MsgID_Bundler_RequireResolveNotExternal] = logLevel
|
|
|
|
// Source maps
|
|
case "invalid-source-mappings":
|
|
overrides[MsgID_SourceMap_InvalidSourceMappings] = logLevel
|
|
case "sections-in-source-map":
|
|
overrides[MsgID_SourceMap_SectionsInSourceMap] = logLevel
|
|
case "missing-source-map":
|
|
overrides[MsgID_SourceMap_MissingSourceMap] = logLevel
|
|
case "unsupported-source-map-comment":
|
|
overrides[MsgID_SourceMap_UnsupportedSourceMapComment] = logLevel
|
|
|
|
case "package.json":
|
|
for i := MsgID_PackageJSON_FIRST; i <= MsgID_PackageJSON_LAST; i++ {
|
|
overrides[i] = logLevel
|
|
}
|
|
|
|
case "tsconfig.json":
|
|
for i := MsgID_TsconfigJSON_FIRST; i <= MsgID_TsconfigJSON_LAST; i++ {
|
|
overrides[i] = logLevel
|
|
}
|
|
|
|
default:
|
|
// Ignore invalid entries since this message id may have
|
|
// been renamed/removed since when this code was written
|
|
}
|
|
}
|
|
|
|
func MsgIDToString(id MsgID) string {
|
|
switch id {
|
|
// JS
|
|
case MsgID_JS_AssertTypeJSON:
|
|
return "assert-type-json"
|
|
case MsgID_JS_AssignToConstant:
|
|
return "assign-to-constant"
|
|
case MsgID_JS_AssignToDefine:
|
|
return "assign-to-define"
|
|
case MsgID_JS_AssignToImport:
|
|
return "assign-to-import"
|
|
case MsgID_JS_CallImportNamespace:
|
|
return "call-import-namespace"
|
|
case MsgID_JS_CommonJSVariableInESM:
|
|
return "commonjs-variable-in-esm"
|
|
case MsgID_JS_DeleteSuperProperty:
|
|
return "delete-super-property"
|
|
case MsgID_JS_DirectEval:
|
|
return "direct-eval"
|
|
case MsgID_JS_DuplicateCase:
|
|
return "duplicate-case"
|
|
case MsgID_JS_DuplicateObjectKey:
|
|
return "duplicate-object-key"
|
|
case MsgID_JS_EmptyImportMeta:
|
|
return "empty-import-meta"
|
|
case MsgID_JS_EqualsNaN:
|
|
return "equals-nan"
|
|
case MsgID_JS_EqualsNegativeZero:
|
|
return "equals-negative-zero"
|
|
case MsgID_JS_EqualsNewObject:
|
|
return "equals-new-object"
|
|
case MsgID_JS_HTMLCommentInJS:
|
|
return "html-comment-in-js"
|
|
case MsgID_JS_ImpossibleTypeof:
|
|
return "impossible-typeof"
|
|
case MsgID_JS_IndirectRequire:
|
|
return "indirect-require"
|
|
case MsgID_JS_PrivateNameWillThrow:
|
|
return "private-name-will-throw"
|
|
case MsgID_JS_SemicolonAfterReturn:
|
|
return "semicolon-after-return"
|
|
case MsgID_JS_SuspiciousBooleanNot:
|
|
return "suspicious-boolean-not"
|
|
case MsgID_JS_ThisIsUndefinedInESM:
|
|
return "this-is-undefined-in-esm"
|
|
case MsgID_JS_UnsupportedDynamicImport:
|
|
return "unsupported-dynamic-import"
|
|
case MsgID_JS_UnsupportedJSXComment:
|
|
return "unsupported-jsx-comment"
|
|
case MsgID_JS_UnsupportedRegExp:
|
|
return "unsupported-regexp"
|
|
case MsgID_JS_UnsupportedRequireCall:
|
|
return "unsupported-require-call"
|
|
|
|
// CSS
|
|
case MsgID_CSS_CSSSyntaxError:
|
|
return "css-syntax-error"
|
|
case MsgID_CSS_InvalidAtCharset:
|
|
return "invalid-@charset"
|
|
case MsgID_CSS_InvalidAtImport:
|
|
return "invalid-@import"
|
|
case MsgID_CSS_InvalidAtNest:
|
|
return "invalid-@nest"
|
|
case MsgID_CSS_InvalidAtLayer:
|
|
return "invalid-@layer"
|
|
case MsgID_CSS_InvalidCalc:
|
|
return "invalid-calc"
|
|
case MsgID_CSS_JSCommentInCSS:
|
|
return "js-comment-in-css"
|
|
case MsgID_CSS_UnsupportedAtCharset:
|
|
return "unsupported-@charset"
|
|
case MsgID_CSS_UnsupportedAtNamespace:
|
|
return "unsupported-@namespace"
|
|
case MsgID_CSS_UnsupportedCSSProperty:
|
|
return "unsupported-css-property"
|
|
|
|
// Bundler
|
|
case MsgID_Bundler_AmbiguousReexport:
|
|
return "ambiguous-reexport"
|
|
case MsgID_Bundler_DifferentPathCase:
|
|
return "different-path-case"
|
|
case MsgID_Bundler_IgnoredBareImport:
|
|
return "ignored-bare-import"
|
|
case MsgID_Bundler_IgnoredDynamicImport:
|
|
return "ignored-dynamic-import"
|
|
case MsgID_Bundler_ImportIsUndefined:
|
|
return "import-is-undefined"
|
|
case MsgID_Bundler_RequireResolveNotExternal:
|
|
return "require-resolve-not-external"
|
|
|
|
// Source maps
|
|
case MsgID_SourceMap_InvalidSourceMappings:
|
|
return "invalid-source-mappings"
|
|
case MsgID_SourceMap_SectionsInSourceMap:
|
|
return "sections-in-source-map"
|
|
case MsgID_SourceMap_MissingSourceMap:
|
|
return "missing-source-map"
|
|
case MsgID_SourceMap_UnsupportedSourceMapComment:
|
|
return "unsupported-source-map-comment"
|
|
|
|
default:
|
|
if id >= MsgID_PackageJSON_FIRST && id <= MsgID_PackageJSON_LAST {
|
|
return "package.json"
|
|
}
|
|
if id >= MsgID_TsconfigJSON_FIRST && id <= MsgID_TsconfigJSON_LAST {
|
|
return "tsconfig.json"
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// Some message IDs are more diverse internally than externally (in case we
|
|
// want to expand the set of them later on). So just map these to the largest
|
|
// one arbitrarily since you can't tell the difference externally anyway.
|
|
func StringToMaximumMsgID(id string) MsgID {
|
|
overrides := make(map[MsgID]LogLevel)
|
|
maxID := MsgID_None
|
|
StringToMsgIDs(id, LevelInfo, overrides)
|
|
for id := range overrides {
|
|
if id > maxID {
|
|
maxID = id
|
|
}
|
|
}
|
|
return maxID
|
|
}
|