SandpointsGitHook/vendor/github.com/evanw/esbuild/internal/compat/js_table.go

424 lines
6.7 KiB
Go

// This file was automatically generated by "compat-table.js"
package compat
type Engine uint8
const (
Chrome Engine = iota
Edge
ES
Firefox
IOS
Node
Safari
)
func (e Engine) String() string {
switch e {
case Chrome:
return "chrome"
case Edge:
return "edge"
case ES:
return "es"
case Firefox:
return "firefox"
case IOS:
return "ios"
case Node:
return "node"
case Safari:
return "safari"
}
return ""
}
type JSFeature uint64
const (
ArraySpread JSFeature = 1 << iota
Arrow
AsyncAwait
AsyncGenerator
BigInt
Class
ClassField
ClassPrivateAccessor
ClassPrivateField
ClassPrivateMethod
ClassPrivateStaticAccessor
ClassPrivateStaticField
ClassPrivateStaticMethod
ClassStaticField
Const
DefaultArgument
Destructuring
DynamicImport
ExponentOperator
ExportStarAs
ForAwait
ForOf
Generator
Hashbang
ImportMeta
Let
LogicalAssignment
NestedRestBinding
NewTarget
NullishCoalescing
ObjectAccessors
ObjectExtensions
ObjectRestSpread
OptionalCatchBinding
OptionalChain
RestArgument
TemplateLiteral
TopLevelAwait
UnicodeEscapes
)
func (features JSFeature) Has(feature JSFeature) bool {
return (features & feature) != 0
}
var jsTable = map[JSFeature]map[Engine][]int{
ArraySpread: {
Chrome: {46},
Edge: {13},
ES: {2015},
Firefox: {36},
IOS: {10},
Node: {5},
Safari: {10},
},
Arrow: {
Chrome: {49},
Edge: {13},
ES: {2015},
Firefox: {45},
IOS: {10},
Node: {6},
Safari: {10},
},
AsyncAwait: {
Chrome: {55},
Edge: {15},
ES: {2017},
Firefox: {52},
IOS: {11},
Node: {7, 6},
Safari: {11},
},
AsyncGenerator: {
Chrome: {63},
Edge: {79},
ES: {2018},
Firefox: {57},
IOS: {12},
Node: {10, 0},
Safari: {12},
},
BigInt: {
Chrome: {67},
Edge: {79},
ES: {2020},
Firefox: {68},
IOS: {14},
Node: {10, 4},
Safari: {14},
},
Class: {
Chrome: {49},
Edge: {13},
ES: {2015},
Firefox: {45},
IOS: {10},
Node: {6},
Safari: {10},
},
ClassField: {
Chrome: {73},
Edge: {79},
Firefox: {69},
IOS: {14},
Node: {12, 0},
Safari: {14},
},
ClassPrivateAccessor: {
Chrome: {84},
Edge: {84},
Node: {14, 6},
},
ClassPrivateField: {
Chrome: {84},
Edge: {84},
Node: {14, 6},
Safari: {14, 1},
},
ClassPrivateMethod: {
Chrome: {84},
Edge: {84},
Node: {14, 6},
},
ClassPrivateStaticAccessor: {
Chrome: {84},
Edge: {84},
Node: {14, 6},
},
ClassPrivateStaticField: {
Chrome: {74},
Edge: {79},
Node: {12, 0},
Safari: {14, 1},
},
ClassPrivateStaticMethod: {
Chrome: {84},
Edge: {84},
Node: {14, 6},
},
ClassStaticField: {
Chrome: {73},
Edge: {79},
Firefox: {75},
Node: {12, 0},
Safari: {14, 1},
},
Const: {
Chrome: {49},
Edge: {14},
ES: {2015},
Firefox: {51},
IOS: {11},
Node: {6},
Safari: {11},
},
DefaultArgument: {
Chrome: {49},
Edge: {14},
ES: {2015},
Firefox: {53},
IOS: {10},
Node: {6},
Safari: {10},
},
Destructuring: {
Chrome: {51},
Edge: {18},
ES: {2015},
Firefox: {53},
IOS: {10},
Node: {6, 5},
Safari: {10},
},
DynamicImport: {
Chrome: {63},
Edge: {79},
ES: {2015},
Firefox: {67},
IOS: {11},
Node: {13, 2},
Safari: {11, 1},
},
ExponentOperator: {
Chrome: {52},
Edge: {14},
ES: {2016},
Firefox: {52},
IOS: {10, 3},
Node: {7},
Safari: {10, 1},
},
ExportStarAs: {
Chrome: {72},
Edge: {79},
ES: {2020},
Firefox: {80},
Node: {12},
},
ForAwait: {
Chrome: {63},
Edge: {79},
ES: {2018},
Firefox: {57},
IOS: {12},
Node: {10, 0},
Safari: {12},
},
ForOf: {
Chrome: {51},
Edge: {15},
ES: {2015},
Firefox: {53},
IOS: {10},
Node: {6, 5},
Safari: {10},
},
Generator: {
Chrome: {50},
Edge: {13},
ES: {2015},
Firefox: {53},
IOS: {10},
Node: {6},
Safari: {10},
},
Hashbang: {
Chrome: {74},
Edge: {79},
Firefox: {67},
IOS: {13, 4},
Node: {12, 0},
Safari: {13, 1},
},
ImportMeta: {
Chrome: {64},
Edge: {79},
ES: {2020},
Firefox: {62},
IOS: {12},
Node: {10, 4},
Safari: {11, 1},
},
Let: {
Chrome: {49},
Edge: {14},
ES: {2015},
Firefox: {51},
IOS: {11},
Node: {6},
Safari: {11},
},
LogicalAssignment: {
Chrome: {85},
Edge: {85},
Firefox: {79},
IOS: {14},
Node: {15, 0},
Safari: {14},
},
NestedRestBinding: {
Chrome: {49},
Edge: {14},
ES: {2016},
Firefox: {47},
IOS: {10, 3},
Node: {6},
Safari: {10, 1},
},
NewTarget: {
Chrome: {46},
Edge: {14},
ES: {2015},
Firefox: {41},
IOS: {10},
Node: {5},
Safari: {10},
},
NullishCoalescing: {
Chrome: {80},
Edge: {80},
ES: {2020},
Firefox: {72},
IOS: {13, 4},
Node: {14, 0},
Safari: {13, 1},
},
ObjectAccessors: {
Chrome: {5},
Edge: {12},
ES: {5},
Firefox: {2},
IOS: {6},
Node: {0, 10},
Safari: {3, 1},
},
ObjectExtensions: {
Chrome: {44},
Edge: {12},
ES: {2015},
Firefox: {34},
IOS: {10},
Node: {4},
Safari: {10},
},
ObjectRestSpread: {
ES: {2018},
Firefox: {55},
IOS: {11, 3},
Safari: {11, 1},
},
OptionalCatchBinding: {
Chrome: {66},
Edge: {79},
ES: {2019},
Firefox: {58},
IOS: {11, 3},
Node: {10, 0},
Safari: {11, 1},
},
OptionalChain: {
Chrome: {80},
Edge: {80},
ES: {2020},
Firefox: {74},
IOS: {13, 4},
Node: {14, 0},
Safari: {13, 1},
},
RestArgument: {
Chrome: {47},
Edge: {12},
ES: {2015},
Firefox: {43},
IOS: {10},
Node: {6},
Safari: {10},
},
TemplateLiteral: {
Chrome: {41},
Edge: {13},
ES: {2015},
Firefox: {34},
IOS: {9},
Node: {4},
Safari: {9},
},
TopLevelAwait: {
Chrome: {89},
Node: {14, 8},
},
UnicodeEscapes: {
Chrome: {44},
Edge: {12},
ES: {2015},
Firefox: {53},
IOS: {9},
Node: {4},
Safari: {9},
},
}
func isVersionLessThan(a []int, b []int) bool {
for i := 0; i < len(a) && i < len(b); i++ {
if a[i] > b[i] {
return false
}
if a[i] < b[i] {
return true
}
}
return len(a) < len(b)
}
// Return all features that are not available in at least one environment
func UnsupportedJSFeatures(constraints map[Engine][]int) (unsupported JSFeature) {
for feature, engines := range jsTable {
for engine, version := range constraints {
if minVersion, ok := engines[engine]; !ok || isVersionLessThan(version, minVersion) {
unsupported |= feature
}
}
}
return
}