tests/test.sh exit code (0 → resolved); the classification below is post-hoc and cannot change it.rg -n "asyncGenerator|yieldStar|forAwait|async generator|for-await" internal cmd scripts tests -S
Chunk ID: 0f9838
Wall time: 0.0309 seconds
Process exited with code 2
Original token count: 2912
Output:
rg: scripts: No such file or directory (os error 2)
rg: tests: No such file or directory (os error 2)
internal/bundler_tests/snapshots/snapshots_lower.txt:24: for (var iter = __forAwait(b), more, temp, error; more = !(temp = await iter.next()).done; more = !1) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1180: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1185: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1188: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1202: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1233: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1238: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1241: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1255: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1286: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1291: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1294: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1308: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1340: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1345: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1348: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1362: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1395: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1400: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1403: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1417: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1460: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1465: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1468: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1482: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1513: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1518: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1521: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1535: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1566: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1571: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1574: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1588: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1620: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1625: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1628: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1642: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1675: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1680: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1683: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1697: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2077: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2094: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2111: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2128: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2145: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2162: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2185: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2202: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2219: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2236: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2253: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2270: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/js_parser/js_parser.go:7751: // If for-await loops aren't supported, then we only support lowering
internal/js_parser/js_parser.go:7753: // cannot lower for-await loops.
internal/js_parser/js_parser.go:10832: // Returning undefined is implicit except when inside an async generator
internal/js_parser/js_parser.go:11072: // Lower "for await" if it's unsupported if it's in a lowered async generator
internal/js_parser/js_parser.go:14765: // "yield* x" turns into "yield* __yieldStar(x)" when lowering async generator functions
internal/js_parser/js_parser.go:14767: e.ValueOrNil = p.callRuntime(expr.Loc, "__yieldStar", []js_ast.Expr{e.ValueOrNil})
internal/js_parser/js_parser_lower.go:73: name = "async generator functions"
internal/js_parser/js_parser_lower.go:76: name = "for-await loops"
internal/js_parser/js_parser_lower.go:343: // Lower async functions and async generator functions
internal/js_parser/js_parser_lower.go:478: // "async function* foo(a, b) { stmts }" => "function foo(a, b) { return __asyncGenerator(this, null, function* () { stmts }) }"
internal/js_parser/js_parser_lower.go:479: name = "__asyncGenerator"
internal/js_parser/js_parser_lower.go:1050: // "await x" turns into "yield __await(x)" when lowering async generator functions
internal/js_parser/js_parser_lower.go:1078: // for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/js_parser/js_parser_lower.go:1166: ValueOrNil: p.callRuntime(loc, "__forAwait", []js_ast.Expr{loop.Value})},
internal/runtime/runtime.go:38: // __asyncGenerator
internal/runtime/runtime.go:412: // These help for lowering async generator functions
internal/runtime/runtime.go:417: export var __asyncGenerator = (__this, __arguments, generator) => {
internal/runtime/runtime.go:437: export var __yieldStar = value => {
internal/runtime/runtime.go:468: // This helps for lowering for-await loops
internal/runtime/runtime.go:469: export var __forAwait = (obj, it, method) =>
internal/js_parser/js_parser_lower_test.go:812: // This is ok because for-await can be lowered to await
internal/js_parser/js_parser_lower_test.go:815: // This is ok because for-await can be lowered to yield
internal/js_parser/js_parser_lower_test.go:818: // This is not ok because for-await can't be lowered
internal/js_parser/js_parser_lower_test.go:821: "<stdin>: ERROR: Transforming for-await loops to the configured target environment is not supported yet\n"
internal/js_parser/js_parser_lower_test.go:824: // Can't use for-await at the top-level without top-level await
internal/compat/js_table.go:151: "for-await": ForAwait,
internal/compat/js_table.go:250: // Note: The latest version of "Hermes" failed this test: Asynchronous Iterators: async generators
internal/compat/js_table.go:251: // Note: The latest version of "IE" failed this test: Asynchronous Iterators: async generators
internal/compat/js_table.go:252: // Note: The latest version of "Rhino" failed this test: Asynchronous Iterators: async generators
internal/compat/js_table.go:507: // Note: The latest version of "Hermes" failed this test: Asynchronous Iterators: for-await-of loops
internal/compat/js_table.go:508: // Note: The latest version of "IE" failed this test: Asynchronous Iterators: for-await-of loops
internal/compat/js_table.go:509: // Note: The latest version of "Rhino" failed this test: Asynchronous Iterators: for-await-of loops
sed -n '1,260p' internal/runtime/runtime.go
Chunk ID: e67a83
Wall time: 0.0059 seconds
Process exited with code 0
Original token count: 2542
Output:
package runtime
// This is esbuild's runtime code. It contains helper functions that are
// automatically injected into output files to implement certain features. For
// example, the "**" operator is replaced with a call to "__pow" when targeting
// ES2015. Tree shaking automatically removes unused code from the runtime.
import (
"[code-host]/evanw/esbuild/internal/compat"
"[code-host]/evanw/esbuild/internal/logger"
)
// The runtime source is always at a special index. The index is always zero
// but this constant is always used instead to improve readability and ensure
// all code that references this index can be discovered easily.
const SourceIndex = uint32(0)
func Source(unsupportedJSFeatures compat.JSFeature) logger.Source {
// Note: These helper functions used to be named similar things to the helper
// functions from the TypeScript compiler. However, people sometimes use these
// two projects in combination and TypeScript's implementation of these helpers
// causes name collisions. Some examples:
//
// * The "tslib" library will overwrite esbuild's helper functions if the bundled
// code is run in the global scope: https://[code-host]/evanw/esbuild/issues/1102
//
// * Running the TypeScript compiler on esbuild's output to convert ES6 to ES5
// will also overwrite esbuild's helper functions because TypeScript doesn't
// change the names of its helper functions to avoid name collisions:
// https://[code-host]/microsoft/TypeScript/issues/43296
//
// These can both be considered bugs in TypeScript. However, they are unlikely
// to be fixed and it's simplest to just avoid using the same names to avoid
// these bugs. Forbidden names (from "tslib"):
//
// __assign
// __asyncDelegator
// __asyncGenerator
// __asyncValues
// __await
// __awaiter
// __classPrivateFieldGet
// __classPrivateFieldSet
// __createBinding
// __decorate
// __exportStar
// __extends
// __generator
// __importDefault
// __importStar
// __makeTemplateObject
// __metadata
// __param
// __read
// __rest
// __spread
// __spreadArray
// __spreadArrays
// __values
//
// Note: The "__objRest" function has a for-of loop which requires ES6, but
// transforming destructuring to ES5 isn't even supported so it's ok.
text := `
var __create = Object.create
var __freeze = Object.freeze
var __defProp = Object.defineProperty
var __defProps = Object.defineProperties
var __getOwnPropDesc = Object.getOwnPropertyDescriptor // Note: can return "undefined" due to a Safari bug
var __getOwnPropDescs = Object.getOwnPropertyDescriptors
var __getOwnPropNames = Object.getOwnPropertyNames
var __getOwnPropSymbols = Object.getOwnPropertySymbols
var __getProtoOf = Object.getPrototypeOf
var __hasOwnProp = Object.prototype.hasOwnProperty
var __propIsEnum = Object.prototype.propertyIsEnumerable
var __reflectGet = Reflect.get
var __reflectSet = Reflect.set
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for('Symbol.' + name)
var __typeError = msg => { throw TypeError(msg) }
export var __pow = Math.pow
var __defNormalProp = (obj, key, value) => key in obj
? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value})
: obj[key] = value
export var __spreadValues = (a, b) => {
for (var prop in b ||= {})
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop])
if (__getOwnPropSymbols)
`
// Avoid "of" when not using ES6
if !unsupportedJSFeatures.Has(compat.ForOf) {
text += `
for (var prop of __getOwnPropSymbols(b)) {
`
} else {
text += `
for (var props = __getOwnPropSymbols(b), i = 0, n = props.length, prop; i < n; i++) {
prop = props[i]
`
}
text += `
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop])
}
return a
}
export var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b))
// Update the "name" property on the function or class for "--keep-names"
export var __name = (target, value) => __defProp(target, 'name', { value, configurable: true })
// This fallback "require" function exists so that "typeof require" can
// naturally be "function" even in non-CommonJS environments since esbuild
// emulates a CommonJS environment (issue #1202). However, people want this
// shim to fall back to "globalThis.require" even if it's defined later
// (including property accesses such as "require.resolve") so we need to
// use a proxy (issue #1614).
export var __require =
/* @__PURE__ */ (x =>
typeof require !== 'undefined' ? require :
typeof Proxy !== 'undefined' ? new Proxy(x, {
get: (a, b) => (typeof require !== 'undefined' ? require : a)[b]
}) : x
)(function(x) {
if (typeof require !== 'undefined') return require.apply(this, arguments)
throw Error('Dynamic require of "' + x + '" is not supported')
})
// This is used for glob imports
export var __glob = map => path => {
var fn = map[path]
if (fn) return fn()
throw new Error('Module not found in bundle: ' + path)
}
// For object rest patterns
export var __restKey = key => typeof key === 'symbol' ? key : key + ''
export var __objRest = (source, exclude) => {
var target = {}
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop]
if (source != null && __getOwnPropSymbols)
`
// Avoid "of" when not using ES6
if !unsupportedJSFeatures.Has(compat.ForOf) {
text += `
for (var prop of __getOwnPropSymbols(source)) {
`
} else {
text += `
for (var props = __getOwnPropSymbols(source), i = 0, n = props.length, prop; i < n; i++) {
prop = props[i]
`
}
text += `
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop]
}
return target
}
// This is for lazily-initialized ESM code. This has two implementations, a
// compact one for minified code and a verbose one that generates friendly
// names in V8's profiler and in stack traces.
export var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res
}
export var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res)
// Wraps a CommonJS closure and returns a require() function. This has two
// implementations, a compact one for minified code and a verbose one that
// generates friendly names in V8's profiler and in stack traces.
export var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports
}
export var __commonJSMin = (cb, mod) => () => (mod || cb((mod = {exports: {}}).exports, mod), mod.exports)
// Used to implement ESM exports both for "require()" and "import * as"
export var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true })
}
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === 'object' || typeof from === 'function')
`
// Avoid "let" when not using ES6
if !unsupportedJSFeatures.Has(compat.ForOf) && !unsupportedJSFeatures.Has(compat.ConstAndLet) {
text += `
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable })
`
} else {
text += `
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i]
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: (k => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable })
}
`
}
text += `
return to
}
// This is used to implement "export * from" statements. It copies properties
// from the imported module to the current module's ESM export object. If the
// current module is an entry point and the target format is CommonJS, we
// also copy the properties to "module.exports" in addition to our module's
// internal ESM export object.
export var __reExport = (target, mod, secondTarget) => (
__copyProps(target, mod, 'default'),
secondTarget && __copyProps(secondTarget, mod, 'default')
)
// Converts the module from CommonJS to ESM. When in node mode (i.e. in an
// ".mjs" file, package.json has "type: module", or the "__esModule" export
// in the CommonJS file is falsy or missing), the "default" property is
// overridden to point to the original CommonJS exports object instead.
export var __toESM = (mod, isNodeMode, target) => (
target = mod != null ? __create(__getProtoOf(mod)) : {},
__copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule
? __defProp(target, 'default', { value: mod, enumerable: true })
: target,
mod)
)
// Converts the module from ESM to CommonJS. This clones the input module
// object with the addition of a non-enumerable "__esModule" property set
// to "true", which overwrites any existing export named "__esModule".
export var __toCommonJS = mod => __copyProps(__defProp({}, '__esModule', { value: true }), mod)
// For TypeScript experimental decorators
// - kind === undefined: class
// - kind === 1: method, parameter
// - kind === 2: field
export var __decorateClass = (decorators, target, key, kind) => {
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target
for (var i = decorators.length - 1, decorator; i >= 0; i--)
if (decorator = decorators[i])
result = (kind ? decorator(target, key, result) : decorator(result)) || result
if (kind && result) __defProp(target, key, result)
return result
}
git status --short
Chunk ID: 057659 Wall time: 0.0000 seconds Process exited with code 128 Original token count: 18 Output: fatal: not a git repository (or any of the parent directories): .git
sed -n '390,490p' internal/runtime/runtime.go
Chunk ID: 8bad98
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 821
Output:
// This helps for lowering async functions
export var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = value => {
try {
step(generator.next(value))
} catch (e) {
reject(e)
}
}
var rejected = value => {
try {
step(generator.throw(value))
} catch (e) {
reject(e)
}
}
var step = x => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected)
step((generator = generator.apply(__this, __arguments)).next())
})
}
// These help for lowering async generator functions
export var __await = function (promise, isYieldStar) {
this[0] = promise
this[1] = isYieldStar
}
export var __asyncGenerator = (__this, __arguments, generator) => {
var resume = (k, v, yes, no) => {
try {
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
Promise.resolve(isAwait ? v[0] : v)
.then(y => isAwait
? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no)
: yes({ value: y, done }))
.catch(e => resume('throw', e, yes, no))
} catch (e) {
no(e)
}
}, method = k => it[k] = x => new Promise((yes, no) => resume(k, x, yes, no)), it = {}
return generator = generator.apply(__this, __arguments),
it[__knownSymbol('asyncIterator')] = () => it,
method('next'),
method('throw'),
method('return'),
it
}
export var __yieldStar = value => {
var obj = value[__knownSymbol('asyncIterator')], isAwait = false, method, it = {}
if (obj == null) {
obj = value[__knownSymbol('iterator')]()
method = k => it[k] = x => obj[k](x)
} else {
obj = obj.call(value)
method = k => it[k] = v => {
if (isAwait) {
isAwait = false
if (k === 'throw') throw v
return v
}
isAwait = true
return {
done: false,
value: new __await(new Promise(resolve => {
var x = obj[k](v)
if (!(x instanceof Object)) __typeError('Object expected')
resolve(x)
}), 1),
}
}
}
return it[__knownSymbol('iterator')] = () => it,
method('next'),
'throw' in obj ? method('throw') : it.throw = x => { throw x },
'return' in obj && method('return'),
it
}
// This helps for lowering for-await loops
export var __forAwait = (obj, it, method) =>
(it = obj[__knownSymbol('asyncIterator')])
? it.call(obj)
: (obj = obj[__knownSymbol('iterator')](),
it = {},
method = (key, fn) =>
(fn = obj[key]) && (it[key] = arg =>
new Promise((yes, no, done) => (
arg = fn.call(obj, arg),
done = arg.done,
Promise.resolve(arg.value)
.then(value => yes({ value, done }), no)
))),
method('next'),
method('return'),
it)
// This is for the "binary" loader (custom code is ~2x faster than "atob")
export var __toBinaryNode = Uint8Array.fromBase64 || (base64 => new Uint8Array(Buffer.from(base64, 'base64')))
export var __toBinary = Uint8Array.fromBase64 || /* @__PURE__ */ (() => {
var table = new Uint8Array(128)
for (var i = 0; i < 64; i++) table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i
rg -n "Lower.*Async|asyncGenerator|yieldStar|forAwait|compat table|AsyncGenerator" internal/*_tests internal -S
Chunk ID: deaeef
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 6652
Output:
internal/bundler_tests/bundler_lower_test.go:780:func TestLowerAsync2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:825:func TestLowerAsync2017NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:858:func TestLowerAsyncThis2016CommonJS(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:874:func TestLowerAsyncThis2016ES6(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:898:func TestLowerAsyncES5(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:935:func TestLowerAsyncSuperES2017NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1011:func TestLowerAsyncSuperES2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1087:func TestLowerStaticAsyncSuperES2021NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1153:func TestLowerStaticAsyncSuperES2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1323:func TestLowerAsyncArrowSuperES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1368:func TestLowerAsyncArrowSuperSetterES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1413:func TestLowerStaticAsyncArrowSuperES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1458:func TestLowerStaticAsyncArrowSuperSetterES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2709:func TestLowerUsingUnsupportedAsync(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2758:func TestLowerUsingUnsupportedUsingAndAsync(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2998:func TestLowerAsyncGenerator(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:3053: UnsupportedJSFeatures: compat.AsyncGenerator,
internal/bundler_tests/bundler_lower_test.go:3058:func TestLowerAsyncGeneratorNoAwait(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:3113: UnsupportedJSFeatures: compat.AsyncGenerator | compat.AsyncAwait,
internal/bundler_tests/bundler_lower_test.go:780:func TestLowerAsync2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:825:func TestLowerAsync2017NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:858:func TestLowerAsyncThis2016CommonJS(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:874:func TestLowerAsyncThis2016ES6(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:898:func TestLowerAsyncES5(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:935:func TestLowerAsyncSuperES2017NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1011:func TestLowerAsyncSuperES2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1087:func TestLowerStaticAsyncSuperES2021NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1153:func TestLowerStaticAsyncSuperES2016NoBundle(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1323:func TestLowerAsyncArrowSuperES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1368:func TestLowerAsyncArrowSuperSetterES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1413:func TestLowerStaticAsyncArrowSuperES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:1458:func TestLowerStaticAsyncArrowSuperSetterES2016(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2709:func TestLowerUsingUnsupportedAsync(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2758:func TestLowerUsingUnsupportedUsingAndAsync(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:2998:func TestLowerAsyncGenerator(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:3053: UnsupportedJSFeatures: compat.AsyncGenerator,
internal/bundler_tests/bundler_lower_test.go:3058:func TestLowerAsyncGeneratorNoAwait(t *testing.T) {
internal/bundler_tests/bundler_lower_test.go:3113: UnsupportedJSFeatures: compat.AsyncGenerator | compat.AsyncAwait,
internal/bundler_tests/snapshots/snapshots_lower.txt:24: for (var iter = __forAwait(b), more, temp, error; more = !(temp = await iter.next()).done; more = !1) {
internal/bundler_tests/snapshots/snapshots_lower.txt:833:TestLowerAsync2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:889:TestLowerAsync2017NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:921:TestLowerAsyncArrowSuperES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:1049:TestLowerAsyncArrowSuperSetterES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:1177:TestLowerAsyncGenerator
internal/bundler_tests/snapshots/snapshots_lower.txt:1180: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1185: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1188: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1202: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1233: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1238: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1241: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1255: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1286: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1291: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1294: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1308: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1340: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1345: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1348: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1362: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1395: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1400: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1403: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1417: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1457:TestLowerAsyncGeneratorNoAwait
internal/bundler_tests/snapshots/snapshots_lower.txt:1460: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1465: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1468: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1482: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1513: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1518: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1521: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1535: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1566: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1571: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1574: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1588: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1620: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1625: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1628: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1642: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1675: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1680: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1683: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1697: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1756:TestLowerAsyncSuperES2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:1848:TestLowerAsyncSuperES2017NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:1931:TestLowerAsyncThis2016CommonJS
internal/bundler_tests/snapshots/snapshots_lower.txt:1944:TestLowerAsyncThis2016ES6
internal/bundler_tests/snapshots/snapshots_lower.txt:2077: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2094: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2111: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2128: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2145: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2162: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2185: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2202: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2219: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2236: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2253: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2270: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:3358:TestLowerStaticAsyncArrowSuperES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:3476:TestLowerStaticAsyncArrowSuperSetterES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:3594:TestLowerStaticAsyncSuperES2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:3664:TestLowerStaticAsyncSuperES2021NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:4436:TestLowerUsingUnsupportedAsync
internal/bundler_tests/snapshots/snapshots_lower.txt:4498:TestLowerUsingUnsupportedUsingAndAsync
internal/bundler_tests/snapshots/snapshots_lower.txt:24: for (var iter = __forAwait(b), more, temp, error; more = !(temp = await iter.next()).done; more = !1) {
internal/bundler_tests/snapshots/snapshots_lower.txt:833:TestLowerAsync2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:889:TestLowerAsync2017NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:921:TestLowerAsyncArrowSuperES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:1049:TestLowerAsyncArrowSuperSetterES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:1177:TestLowerAsyncGenerator
internal/bundler_tests/snapshots/snapshots_lower.txt:1180: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1185: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1188: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1202: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1233: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1238: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1241: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1255: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1286: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1291: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1294: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1308: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1340: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1345: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1348: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1362: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1395: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1400: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1403: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1417: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1457:TestLowerAsyncGeneratorNoAwait
internal/bundler_tests/snapshots/snapshots_lower.txt:1460: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1465: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1468: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1482: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1513: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1518: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1521: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1535: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1566: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1571: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1574: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1588: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1620: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1625: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1628: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1642: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1675: return __asyncGenerator(this, null, function* () {
internal/bundler_tests/snapshots/snapshots_lower.txt:1680: yield* __yieldStar(x);
internal/bundler_tests/snapshots/snapshots_lower.txt:1683: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1697: for (var iter2 = __forAwait(y), more2, temp2, error2; more2 = !(temp2 = yield new __await(iter2.next())).done; more2 = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:1756:TestLowerAsyncSuperES2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:1848:TestLowerAsyncSuperES2017NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:1931:TestLowerAsyncThis2016CommonJS
internal/bundler_tests/snapshots/snapshots_lower.txt:1944:TestLowerAsyncThis2016ES6
internal/bundler_tests/snapshots/snapshots_lower.txt:2077: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2094: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2111: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2128: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2145: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2162: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2185: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2202: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2219: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2236: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2253: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:2270: label: for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/bundler_tests/snapshots/snapshots_lower.txt:3358:TestLowerStaticAsyncArrowSuperES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:3476:TestLowerStaticAsyncArrowSuperSetterES2016
internal/bundler_tests/snapshots/snapshots_lower.txt:3594:TestLowerStaticAsyncSuperES2016NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:3664:TestLowerStaticAsyncSuperES2021NoBundle
internal/bundler_tests/snapshots/snapshots_lower.txt:4436:TestLowerUsingUnsupportedAsync
internal/bundler_tests/snapshots/snapshots_lower.txt:4498:TestLowerUsingUnsupportedUsingAndAsync
internal/runtime/runtime.go:38: // __asyncGenerator
internal/runtime/runtime.go:417: export var __asyncGenerator = (__this, __arguments, generator) => {
internal/runtime/runtime.go:437: export var __yieldStar = value => {
internal/runtime/runtime.go:469: export var __forAwait = (obj, it, method) =>
internal/js_parser/js_parser.go:11062: (p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator) && p.fnOrArrowDataVisit.isGenerator) {
internal/js_parser/js_parser.go:11074: (p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator) && p.fnOrArrowDataVisit.isGenerator)) {
internal/js_parser/js_parser.go:14765: // "yield* x" turns into "yield* __yieldStar(x)" when lowering async generator functions
internal/js_parser/js_parser.go:14766: if e.IsStar && p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator) && p.fnOrArrowDataVisit.isGenerator {
internal/js_parser/js_parser.go:14767: e.ValueOrNil = p.callRuntime(expr.Loc, "__yieldStar", []js_ast.Expr{e.ValueOrNil})
internal/js_parser/js_parser.go:15795: asyncArrowNeedsToBeLowered := e.IsAsync && p.options.unsupportedJSFeatures.Has(compat.AsyncAwait)
internal/js_parser/js_parser.go:17143: shouldLowerSuperPropertyAccess: (fn.IsAsync && p.options.unsupportedJSFeatures.Has(compat.AsyncAwait)) || opts.isLoweredPrivateMethod,
internal/js_parser/js_parser_lower.go:72: case compat.AsyncGenerator:
internal/js_parser/js_parser_lower.go:249: feature = compat.AsyncGenerator
internal/js_parser/js_parser_lower.go:344: if *isAsync && (p.options.unsupportedJSFeatures.Has(compat.AsyncAwait) || (isGenerator != nil && *isGenerator && p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator))) {
internal/js_parser/js_parser_lower.go:478: // "async function* foo(a, b) { stmts }" => "function foo(a, b) { return __asyncGenerator(this, null, function* () { stmts }) }"
internal/js_parser/js_parser_lower.go:479: name = "__asyncGenerator"
internal/js_parser/js_parser_lower.go:1051: if p.fnOrArrowDataVisit.isGenerator && (p.options.unsupportedJSFeatures.Has(compat.AsyncAwait) || p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator)) {
internal/js_parser/js_parser_lower.go:1078: // for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
internal/js_parser/js_parser_lower.go:1166: ValueOrNil: p.callRuntime(loc, "__forAwait", []js_ast.Expr{loop.Value})},
internal/js_parser/js_parser_lower.go:1892: (p.options.unsupportedJSFeatures.Has(compat.AsyncGenerator) && p.fnOrArrowDataVisit.isGenerator)))) {
internal/compat/js_table.go:67: AsyncGenerator
internal/compat/js_table.go:131: "async-generator": AsyncGenerator,
internal/compat/js_table.go:249: AsyncGenerator: {
internal/js_parser/js_parser_lower_test.go:234:func TestLowerAsyncFunctions(t *testing.T) {
internal/js_parser/js_parser_lower_test.go:785:func TestAsyncGeneratorFns(t *testing.T) {
internal/js_parser/js_parser_lower_test.go:802: expectParseErrorWithUnsupportedFeatures(t, compat.AsyncGenerator, "async function* gen() {}", err)
internal/js_parser/js_parser_lower_test.go:803: expectParseErrorWithUnsupportedFeatures(t, compat.AsyncGenerator, "(async function* () {});", err)
internal/js_parser/js_parser_lower_test.go:804: expectParseErrorWithUnsupportedFeatures(t, compat.AsyncGenerator, "({ async *foo() {} });", err)
internal/bundler/bundler.go:2965: fixInvalidUnsupportedJSFeatureOverrides(options, compat.AsyncAwait, compat.AsyncGenerator|compat.ForAwait|compat.TopLevelAwait)
internal/bundler/bundler.go:2966: fixInvalidUnsupportedJSFeatureOverrides(options, compat.Generator, compat.AsyncGenerator)
find . -maxdepth 3 -type f \( -name '*test.go' -o -name 'package.json' -o -name 'go.mod' \) | sort | sed -n '1,220p'
Chunk ID: 019a3f Wall time: 0.0000 seconds Process exited with code 0 Original token count: 347 Output: ./go.mod ./internal/bundler_tests/bundler_css_test.go ./internal/bundler_tests/bundler_dce_test.go ./internal/bundler_tests/bundler_default_test.go ./internal/bundler_tests/bundler_glob_test.go ./internal/bundler_tests/bundler_importphase_test.go ./internal/bundler_tests/bundler_importstar_test.go ./internal/bundler_tests/bundler_importstar_ts_test.go ./internal/bundler_tests/bundler_loader_test.go ./internal/bundler_tests/bundler_lower_test.go ./internal/bundler_tests/bundler_packagejson_test.go ./internal/bundler_tests/bundler_splitting_test.go ./internal/bundler_tests/bundler_test.go ./internal/bundler_tests/bundler_ts_test.go ./internal/bundler_tests/bundler_tsconfig_test.go ./internal/bundler_tests/bundler_yarnpnp_test.go ./internal/compat/compat_test.go ./internal/css_lexer/css_lexer_test.go ./internal/css_parser/css_parser_test.go ./internal/css_printer/css_printer_test.go ./internal/fs/fs_mock_test.go ./internal/helpers/dataurl_test.go ./internal/js_ast/js_ast_test.go ./internal/js_lexer/js_lexer_test.go ./internal/js_parser/js_parser_lower_test.go ./internal/js_parser/js_parser_test.go ./internal/js_parser/json_parser_test.go ./internal/js_parser/ts_parser_test.go ./internal/js_printer/js_printer_test.go ./internal/logger/logger_test.go ./internal/resolver/yarnpnp_test.go ./internal/runtime/runtime_test.go ./pkg/api/api_impl_test.go ./pkg/api/api_test.go
sed -n '1,260p' internal/runtime/runtime_test.go
Chunk ID: 1d094f
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 228
Output:
package runtime_test
import (
"testing"
"[code-host]/evanw/esbuild/internal/compat"
"[code-host]/evanw/esbuild/internal/config"
"[code-host]/evanw/esbuild/internal/js_parser"
"[code-host]/evanw/esbuild/internal/logger"
"[code-host]/evanw/esbuild/internal/runtime"
)
func TestUnsupportedFeatures(t *testing.T) {
for key, feature := range compat.StringToJSFeature {
t.Run(key, func(t *testing.T) {
source := runtime.Source(feature)
log := logger.NewDeferLog(logger.DeferLogAll, nil)
js_parser.Parse(log, source, js_parser.OptionsFromConfig(&config.Options{
UnsupportedJSFeatures: feature,
TreeShaking: true,
}))
if log.HasErrors() {
msgs := "Internal error: failed to parse runtime:\n"
for _, msg := range log.Done() {
msgs += msg.String(logger.OutputOptions{IncludeSource: true}, logger.TerminalInfo{})
}
t.Fatal(msgs[:len(msgs)-1])
}
})
}
}
sed -n '2980,3130p' internal/bundler_tests/bundler_lower_test.go
Chunk ID: e06b45
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 949
Output:
files: map[string]string{
"/entry.ts": `
namespace ns {
export let a = b
using c = d
export let e = f
}
`,
},
entryPaths: []string{"/entry.ts"},
options: config.Options{
Mode: config.ModePassThrough,
AbsOutputDir: "/out",
UnsupportedJSFeatures: compat.Using,
},
})
}
func TestLowerAsyncGenerator(t *testing.T) {
lower_suite.expectBundled(t, bundled{
files: map[string]string{
"/entry.ts": `
async function* foo() {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
foo = async function* () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
foo = { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
class Foo { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
Foo = class { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
async function bar() {
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
`,
},
entryPaths: []string{"/entry.ts"},
options: config.Options{
Mode: config.ModePassThrough,
AbsOutputDir: "/out",
UnsupportedJSFeatures: compat.AsyncGenerator,
},
})
}
func TestLowerAsyncGeneratorNoAwait(t *testing.T) {
lower_suite.expectBundled(t, bundled{
files: map[string]string{
"/entry.ts": `
async function* foo() {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
foo = async function* () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
foo = { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
class Foo { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
Foo = class { async *bar () {
yield
yield x
yield *x
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
} }
async function bar() {
await using x = await y
for await (let x of y) {}
for await (await using x of y) {}
}
`,
},
entryPaths: []string{"/entry.ts"},
options: config.Options{
Mode: config.ModePassThrough,
AbsOutputDir: "/out",
UnsupportedJSFeatures: compat.AsyncGenerator | compat.AsyncAwait,
},
})
}
// https://[code-host]/evanw/esbuild/issues/3768
func TestJavaScriptDecoratorsBundleIssue3768(t *testing.T) {
lower_suite.expectBundled(t, bundled{
files: map[string]string{
"/base-instance-method.js": `class Foo { @dec foo() { return Foo } }`,
"/base-instance-field.js": `class Foo { @dec foo = Foo }`,
"/base-instance-accessor.js": `class Foo { @dec accessor foo = Foo }`,
"/base-static-method.js": `class Foo { @dec static foo() { return Foo } }`,
"/base-static-field.js": `class Foo { @dec static foo = Foo }`,
"/base-static-accessor.js": `class Foo { @dec static accessor foo = Foo }`,
"/derived-instance-method.js": `class Foo extends Bar { @dec foo() { return Foo } }`,
sed -n '230,270p' internal/compat/js_table.go && sed -n '490,520p' internal/compat/js_table.go
Chunk ID: 05a20e
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 717
Output:
IOS: {{start: v{10, 0, 0}}},
Node: {{start: v{6, 0, 0}}},
Opera: {{start: v{36, 0, 0}}},
Safari: {{start: v{10, 0, 0}}},
},
AsyncAwait: {
// Note: The latest version of "Hermes" failed 4 tests including: async functions: async arrow functions
// Note: The latest version of "IE" failed 16 tests including: async functions: async arrow functions
// Note: The latest version of "Rhino" failed 16 tests including: async functions: async arrow functions
Chrome: {{start: v{55, 0, 0}}},
Deno: {{start: v{1, 0, 0}}},
Edge: {{start: v{15, 0, 0}}},
ES: {{start: v{2017, 0, 0}}},
Firefox: {{start: v{52, 0, 0}}},
IOS: {{start: v{11, 0, 0}}},
Node: {{start: v{7, 6, 0}}},
Opera: {{start: v{42, 0, 0}}},
Safari: {{start: v{11, 0, 0}}},
},
AsyncGenerator: {
// Note: The latest version of "Hermes" failed this test: Asynchronous Iterators: async generators
// Note: The latest version of "IE" failed this test: Asynchronous Iterators: async generators
// Note: The latest version of "Rhino" failed this test: Asynchronous Iterators: async generators
Chrome: {{start: v{63, 0, 0}}},
Deno: {{start: v{1, 0, 0}}},
Edge: {{start: v{79, 0, 0}}},
ES: {{start: v{2018, 0, 0}}},
Firefox: {{start: v{57, 0, 0}}},
IOS: {{start: v{12, 0, 0}}},
Node: {{start: v{10, 0, 0}}},
Opera: {{start: v{50, 0, 0}}},
Safari: {{start: v{12, 0, 0}}},
},
Bigint: {
// Note: The latest version of "IE" failed this test: BigInt: basic functionality
Chrome: {{start: v{67, 0, 0}}},
Deno: {{start: v{1, 0, 0}}},
Edge: {{start: v{79, 0, 0}}},
ES: {{start: v{2020, 0, 0}}},
Firefox: {{start: v{68, 0, 0}}},
Hermes: {{start: v{0, 12, 0}}},
Node: {{start: v{7, 0, 0}}},
Opera: {{start: v{39, 0, 0}}},
Rhino: {{start: v{1, 7, 14}}},
Safari: {{start: v{10, 1, 0}}},
},
ExportStarAs: {
Chrome: {{start: v{72, 0, 0}}},
Deno: {{start: v{1, 0, 0}}},
Edge: {{start: v{79, 0, 0}}},
ES: {{start: v{2020, 0, 0}}},
Firefox: {{start: v{80, 0, 0}}},
IOS: {{start: v{14, 5, 0}}},
Node: {{start: v{13, 2, 0}}},
Opera: {{start: v{60, 0, 0}}},
Safari: {{start: v{14, 1, 0}}},
},
ForAwait: {
// Note: The latest version of "Hermes" failed this test: Asynchronous Iterators: for-await-of loops
// Note: The latest version of "IE" failed this test: Asynchronous Iterators: for-await-of loops
// Note: The latest version of "Rhino" failed this test: Asynchronous Iterators: for-await-of loops
Chrome: {{start: v{63, 0, 0}}},
Deno: {{start: v{1, 0, 0}}},
Edge: {{start: v{79, 0, 0}}},
ES: {{start: v{2018, 0, 0}}},
Firefox: {{start: v{57, 0, 0}}},
IOS: {{start: v{12, 0, 0}}},
Node: {{start: v{10, 0, 0}}},
Opera: {{start: v{50, 0, 0}}},
Safari: {{start: v{12, 0, 0}}},
},
ForOf: {
rg -n "exec\.Command\(|node|NODE|go run|Run\(" internal pkg cmd -SChunk ID: e2cf5c
Wall time: 0.0004 seconds
Process exited with code 0
Original token count: 36430
Output:
Total output lines: 1281
pkg/cli/cli_impl.go:611: case "node":
pkg/cli/cli_impl.go:618: "Valid values are \"browser\", \"node\", or \"neutral\".",
pkg/cli/cli_impl.go:1070:func parseOptionsForRun(osArgs []string) (*api.BuildOptions, *api.TransformOptions, parseOptionsExtras, *cli_helpers.ErrorWithNote) {
pkg/cli/cli_impl.go:1196: buildOptions, transformOptions, extras, err := parseOptionsForRun(osArgs)
pkg/cli/cli_impl.go:1210: // Read the "NODE_PATH" from the environment. This is part of node's
pkg/cli/cli_impl.go:1212: // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
pkg/cli/cli_impl.go:1213: if value, ok := os.LookupEnv("NODE_PATH"); ok {
pkg/cli/cli_impl.go:1216: // On Windows, NODE_PATH is delimited by semicolons instead of colons
internal/bundler_tests/bundler_dce_test.go:22: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:26: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:47: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:51: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:72: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:76: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:97: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:101: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:122: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:126: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:147: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:151: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:173: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:177: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:188: expectedScanLog: `Users/user/project/src/entry.js: WARNING: Ignoring this import because "Users/user/project/node_modules/demo-pkg/index.js" was marked as having no side effects
internal/bundler_tests/bundler_dce_test.go:189:Users/user/project/node_modules/demo-pkg/package.json: NOTE: "sideEffects" is false in the enclosing "package.json" file:
internal/bundler_tests/bundler_dce_test.go:202: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:206: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:217: expectedScanLog: `Users/user/project/src/entry.js: WARNING: Ignoring this import because "Users/user/project/node_modules/demo-pkg/index.js" was marked as having no side effects
internal/bundler_tests/bundler_dce_test.go:218:Users/user/project/node_modules/demo-pkg/package.json: NOTE: "sideEffects" is false in the enclosing "package.json" file:
internal/bundler_tests/bundler_dce_test.go:230: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:234: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:245: expectedScanLog: `Users/user/project/src/entry.js: WARNING: Ignoring this import because "Users/user/project/node_modules/demo-pkg/index.js" was marked as having no side effects
internal/bundler_tests/bundler_dce_test.go:246:Users/user/project/node_modules/demo-pkg/package.json: NOTE: "sideEffects" is false in the enclosing "package.json" file:
internal/bundler_tests/bundler_dce_test.go:258: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:262: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:273: expectedScanLog: `Users/user/project/src/entry.js: WARNING: Ignoring this import because "Users/user/project/node_modules/demo-pkg/index.js" was marked as having no side effects
internal/bundler_tests/bundler_dce_test.go:274:Users/user/project/node_modules/demo-pkg/package.json: NOTE: "sideEffects" is false in the enclosing "package.json" file:
internal/bundler_tests/bundler_dce_test.go:286: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:290: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:311: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:315: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:336: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:340: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:361: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:365: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:386: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:390: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:411: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:415: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:436: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:440: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:444: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:468: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:472: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:476: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:500: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:504: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:508: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:536: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:540: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:544: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:567: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:571: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:575: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:599: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:603: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:607: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:631: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:635: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:639: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:667: "~/project/node_modules/demo-pkg/index-main.js": `
internal/bundler_tests/bundler_dce_test.go:671: "~/project/node_modules/demo-pkg/index-module.js": `
internal/bundler_tests/bundler_dce_test.go:675: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:698: "~/project/node_modules/demo-pkg/keep/this/file.js": `
internal/bundler_tests/bundler_dce_test.go:701: "~/project/node_modules/demo-pkg/remove/this/file.js": `
internal/bundler_tests/bundler_dce_test.go:704: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:719: expectedScanLog: `Users/user/project/src/entry.js: WARNING: Ignoring this import because "Users/user/project/node_modules/demo-pkg/remove/this/file.js" was marked as having no side effects
internal/bundler_tests/bundler_dce_test.go:720:Users/user/project/node_modules/demo-pkg/package.json: NOTE: It was excluded from the "sideEffects" array in the enclosing "package.json" file:
internal/bundler_tests/bundler_dce_test.go:732: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:737: "~/project/node_modules/demo-pkg/a/b/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:757: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:760: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:781: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:785: "~/project/node_modules/demo-pkg2/index.js": `
internal/bundler_tests/bundler_dce_test.go:789: "~/project/node_modules/demo-pkg2/package.json": `
internal/bundler_tests/bundler_dce_test.go:809: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:813: "~/project/node_modules/demo-pkg/foo.js": `
internal/bundler_tests/bundler_dce_test.go:816: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:835: "~/project/node_modules/demo-pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:839: "~/project/node_modules/demo-pkg/foo.js": `
internal/bundler_tests/bundler_dce_test.go:842: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:861: "~/project/node_modules/a/index.js": `
internal/bundler_tests/bundler_dce_test.go:864: "~/project/node_modules/a/package.json": `
internal/bundler_tests/bundler_dce_test.go:867: "~/project/node_modules/b/index.js": `
internal/bundler_tests/bundler_dce_test.go:871: "~/project/node_modules/b/package.json": `
internal/bundler_tests/bundler_dce_test.go:874: "~/project/node_modules/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:877: "~/project/node_modules/c/package.json": `
internal/bundler_tests/bundler_dce_test.go:880: "~/project/node_modules/d/index.js": `
internal/bundler_tests/bundler_dce_test.go:883: "~/project/node_modules/d/package.json": `
internal/bundler_tests/bundler_dce_test.go:902: "~/project/node_modules/a/index.js": `
internal/bundler_tests/bundler_dce_test.go:905: "~/project/node_modules/b/index.js": `
internal/bundler_tests/bundler_dce_test.go:909: "~/project/node_modules/b/package.json": `
internal/bundler_tests/bundler_dce_test.go:912: "~/project/node_modules/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:915: "~/project/node_modules/d/index.js": `
internal/bundler_tests/bundler_dce_test.go:934: "~/project/node_modules/a/index.js": `
internal/bundler_tests/bundler_dce_test.go:938: "~/project/node_modules/b1/index.js": `
internal/bundler_tests/bundler_dce_test.go:942: "~/project/node_modules/b1/package.json": `
internal/bundler_tests/bundler_dce_test.go:945: "~/project/node_modules/b2/index.js": `
internal/bundler_tests/bundler_dce_test.go:949: "~/project/node_modules/b2/package.json": `
internal/bundler_tests/bundler_dce_test.go:952: "~/project/node_modules/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:955: "~/project/node_modules/d/index.js": `
internal/bundler_tests/bundler_dce_test.go:973: "~/project/node_modules/a/index.js": `
internal/bundler_tests/bundler_dce_test.go:976: "~/project/node_modules/b/index.js": `
internal/bundler_tests/bundler_dce_test.go:980: "~/project/node_modules/b/package.json": `
internal/bundler_tests/bundler_dce_test.go:983: "~/project/node_modules/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:987: "~/project/node_modules/d/index.js": `
internal/bundler_tests/bundler_dce_test.go:1005: "~/project/node_modules/a/index.js": `
internal/bundler_tests/bundler_dce_test.go:1008: "~/project/node_modules/b/index.js": `
internal/bundler_tests/bundler_dce_test.go:1012: "~/project/node_modules/b/package.json": `
internal/bundler_tests/bundler_dce_test.go:1015: "~/project/node_modules/c/index.js": `
internal/bundler_tests/bundler_dce_test.go:1019: "~/project/node_modules/c/package.json": `
internal/bundler_tests/bundler_dce_test.go:1022: "~/project/node_modules/d/index.js": `
internal/bundler_tests/bundler_dce_test.go:1025: "~/project/node_modules/d/package.json": `
internal/bundler_tests/bundler_dce_test.go:1571: "~/project/node_modules/pkg/index.js": `
internal/bundler_tests/bundler_dce_test.go:1575: "~/project/node_modules/pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:1578: "~/project/node_modules/pkg/foo.js": `
internal/bundler_tests/bundler_dce_test.go:1581: "~/project/node_modules/pkg/bar.js": `
internal/bundler_tests/bundler_dce_test.go:3780: "~/project/node_modules/demo-pkg/foo.js": `
internal/bundler_tests/bundler_dce_test.go:3783: "~/project/node_modules/demo-pkg/bar/index.js": `
internal/bundler_tests/bundler_dce_test.go:3786: "~/project/node_modules/demo-pkg/package.json": `
internal/bundler_tests/bundler_dce_test.go:3811: "/project/node_modules/pkg/button.js": `
internal/bundler_tests/bundler_dce_test.go:3815: "/project/node_modules/pkg/button.css": `
internal/bundler_tests/bundler_dce_test.go:3818: "/project/node_modules/pkg/menu.js": `
internal/bundler_tests/bundler_dce_test.go:3822: "/project/node_modules/pkg/menu.css": `
internal/bundler_tests/bundler_dce_test.go:3841: "/project/node_modules/pkg/entry.js": `
internal/bundler_tests/bundler_dce_test.go:3844: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3848: "/project/node_modules/pkg/components.jsx": `
internal/bundler_tests/bundler_dce_test.go:3852: "/project/node_modules/pkg/button.css": `
internal/bundler_tests/bundler_dce_test.go:3871: "/project/node_modules/pkg/entry.js": `
internal/bundler_tests/bundler_dce_test.go:3874: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3878: "/project/node_modules/pkg/components.jsx": `
internal/bundler_tests/bundler_dce_test.go:3882: "/project/node_modules/pkg/button.css": `
internal/bundler_tests/bundler_dce_test.go:3901: "/project/node_modules/pkg/entry.js": `
internal/bundler_tests/bundler_dce_test.go:3904: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3908: "/project/node_modules/pkg/components.jsx": `
internal/bundler_tests/bundler_dce_test.go:3912: "/project/node_modules/pkg/button.css": `
internal/bundler_tests/bundler_dce_test.go:3931: "/project/node_modules/pkg/entry.js": `
internal/bundler_tests/bundler_dce_test.go:3934: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3938: "/project/node_modules/pkg/components.jsx": `
internal/bundler_tests/bundler_dce_test.go:3942: "/project/node_modules/pkg/button.css": `
internal/bundler_tests/bundler_dce_test.go:3961: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3964: "/project/node_modules/pkg/button.jsx": `
internal/bundler_tests/bundler_dce_test.go:3968: "/project/node_modules/pkg/styles.js": `
internal/bundler_tests/bundler_dce_test.go:3972: "/project/node_modules/pkg/styles.css": `
internal/bundler_tests/bundler_dce_test.go:3991: "/project/node_modules/pkg/package.json": `{
internal/bundler_tests/bundler_dce_test.go:3994: "/project/node_modules/pkg/button.jsx": `
internal/bundler_tests/bundler_dce_test.go:3998: "/project/node_modules/pkg/styles.js": `
internal/bundler_tests/bundler_dce_test.go:4002: "/project/node_modules/pkg/styles.css": `
pkg/cli/cli_js_table.go:15: "node": api.EngineNode,
pkg/cli/cli.go:15:// os.Exit(cli.Run(os.Args[1:]))
pkg/cli/cli.go:30:func Run(osArgs []string) int {
pkg/cli/cli.go:34:// This is similar to "Run()" but also takes an array of plugins to be used
internal/bundler_tests/snapshots/snapshots_dce.txt:1174:// Users/user/project/node_modules/pkg/foo.js
internal/bundler_tests/snapshots/snapshots_dce.txt:1176: "Users/user/project/node_modules/pkg/foo.js"(exports, module) {
internal/bundler_tests/snapshots/snapshots_dce.txt:1181:// Users/user/project/node_modules/pkg/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2228:// Users/user/project/node_modules/demo-pkg/keep/this/file.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2234:// Users/user/project/node_modules/demo-pkg/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2243:// Users/user/project/node_modules/demo-pkg/index-main.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2250: "Users/user/project/node_modules/demo-pkg/index-main.js"() {
internal/bundler_tests/snapshots/snapshots_dce.txt:2274:// Users/user/project/node_modules/demo-pkg/index-main.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2289:// Users/user/project/node_modules/demo-pkg/index-main.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2296: "Users/user/project/node_modules/demo-pkg/index-main.js"() {
internal/bundler_tests/snapshots/snapshots_dce.txt:2311:// Users/user/project/node_modules/demo-pkg/index-module.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2326:// Users/user/project/node_modules/demo-pkg/index-module.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2341:// Users/user/project/node_modules/c/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2344: "Users/user/project/node_modules/c/index.js"() {
internal/bundler_tests/snapshots/snapshots_dce.txt:2349:// Users/user/project/node_modules/b/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2351: "Users/user/project/node_modules/b/index.js"() {
internal/bundler_tests/snapshots/snapshots_dce.txt:2356:// Users/user/project/node_modules/a/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2362: "Users/user/project/node_modules/a/index.js"() {
internal/bundler_tests/snapshots/snapshots_dce.txt:2373:// Users/user/project/node_modules/demo-pkg/foo.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2376:// Users/user/project/node_modules/demo-pkg/bar/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2382:// Users/user/project/node_modules/d/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2385:// Users/user/project/node_modules/b/index.js
internal/bundler_tests/snapshots/snapshots_dce.txt:2394:// Users/user/project/node_modules/d/index.js
inter…26430 tokens truncated… // In node the default export is always "module.exports" regardless of
internal/linker/linker.go:5142: js_ast.Stmt{Data: &js_ast.SComment{Text: `// Annotate the CommonJS export names for ESM import in node:`}},
internal/linker/linker.go:5337: // collision because there is still a risk of node incorrectly detecting
internal/linker/linker.go:6570: // "node_modules" path component in the path, then assume this is a legal
internal/linker/linker.go:6571: // comment in third-party code and that everything after "node_modules" is
internal/linker/linker.go:6592: if component == "node_modules" {
internal/helpers/path.go:22: if base == "node_modules" {
internal/resolver/package_json.go:29: // See: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-2.html#tsconfigjson-inheritance-via-nodejs-packages
internal/resolver/package_json.go:36: // party modules. For example, you might remap the native "util" node module
internal/resolver/package_json.go:210: // is disallowed if there is a "node_modules" folder in between the child
internal/resolver/package_json.go:366: // option of having node vs. browser. The way to do this is to use the
internal/resolver/package_json.go:369: // "main": "dist/index.node.cjs.js",
internal/resolver/package_json.go:370: // "module": "dist/index.node.esm.js",
internal/resolver/package_json.go:372: // "./dist/index.node.cjs.js": "./dist/index.browser.cjs.js",
internal/resolver/package_json.go:373: // "./dist/index.node.esm.js": "./dist/index.browser.esm.js"
internal/resolver/package_json.go:540:// Reference: https://nodejs.org/api/esm.html#esm_resolver_algorithm_specification
internal/resolver/package_json.go:1072:// If path split on "/" or "\" contains any ".", ".." or "node_modules"
internal/resolver/package_json.go:1089: if segment == "." || segment == ".." || segment == "node_modules" {
internal/resolver/package_json.go:1149: // If target split on "/" or "\" contains any ".", ".." or "node_modules"
internal/resolver/package_json.go:1164: // If subpath split on "/" or "\" contains any ".", ".." or "node_modules"
internal/resolver/package_json.go:1242: // "node": {
internal/resolver/package_json.go:1243: // "require": "./dist/bwip-js-node.js"
internal/resolver/package_json.go:1250: // currently active conditions ("default", "import", "node")
internal/resolver/package_json.go:1251: // 14 | "node": {
internal/resolver/package_json.go:1256: // note: None of the conditions in the package definition ("browser", "electron", "node")
internal/resolver/package_json.go:1257: // match any of the currently active conditions ("default", "import", "node")
internal/resolver/yarnpnp.go:146:// Note: If this returns successfully then the node module resolution algorithm
internal/compat/js_table.go:41: return "node"
internal/compat/js_table.go:167: "node-colon-prefix-import": NodeColonPrefixImport,
internal/compat/js_table.go:168: "node-colon-prefix-require": NodeColonPrefixRequire,
internal/compat/compat_test.go:19: t.Run(fmt.Sprintf("%q ? %q", at, bt), func(t *testing.T) {
internal/resolver/resolver.go:35: // targeting node environments.
internal/resolver/resolver.go:39: // actually means "code for ES6 environments" which includes both node
internal/resolver/resolver.go:46: // If you want to enable tree shaking when targeting node, you will have to
internal/resolver/resolver.go:212: // compiled code, which is what will be loaded by node at run-time.
internal/resolver/resolver.go:213: nodeModulesExtensionOrder []string
internal/resolver/resolver.go:252: // for imports of files inside of "node_modules" directories. But insert
internal/resolver/resolver.go:257: nodeModulesExtensionOrder := make([]string, 0, len(options.ExtensionOrder))
internal/resolver/resolver.go:267: nodeModulesExtensionOrder = append(nodeModulesExtensionOrder, ext)
internal/resolver/resolver.go:272: nodeModulesExtensionOrder = append(nodeModulesExtensionOrder, ext)
internal/resolver/resolver.go:277: nodeModulesExtensionOrder = append(nodeModulesExtensionOrder, ext)
internal/resolver/resolver.go:293: esmConditionsDefault["node"] = true
internal/resolver/resolver.go:309: nodeModulesExtensionOrder: nodeModulesExtensionOrder,
internal/resolver/resolver.go:401: // node's path resolution to force node to load the package from the
internal/resolver/resolver.go:403: // is node's built-in module while "util/" is one on the file system.
internal/resolver/resolver.go:408: // to one built-in node module with another but really why would you
internal/resolver/resolver.go:614: // Don't allow omitting "./" for other imports since node doesn't let you do this either
internal/resolver/resolver.go:955: // This implements the module resolution algorithm from node.js, which is
internal/resolver/resolver.go:956: // described here: https://nodejs.org/api/modules.html#modules_all_together
internal/resolver/resolver.go:980: // Run node's resolution rules (e.g. adding ".js")
internal/resolver/resolver.go:1076: // Note: node's "self references" are not currently supported
internal/resolver/resolver.go:1143: isNodeModules bool // Is the base name "node_modules"?
internal/resolver/resolver.go:1144: hasNodeModules bool // Is there a "node_modules" subdirectory?
internal/resolver/resolver.go:1145: isInsideNodeModules bool // Is this within a "node_modules" subtree?
internal/resolver/resolver.go:1265: // Note: This doesn't use the normal node module resolution algorithm
internal/resolver/resolver.go:1336: // version of node's module resolution algorithm. The Yarn PnP
internal/resolver/resolver.go:1337: // specification says to use node's module resolution algorithm verbatim
internal/resolver/resolver.go:1356: // Continue with the module resolution algorithm from node.js
internal/resolver/resolver.go:1368: // If this is still a package path, try to resolve it to a "node_modules" directory
internal/resolver/resolver.go:1371: // Skip "node_modules" folders
internal/resolver/resolver.go:1372: if r.fs.Base(current) != "node_modules" {
internal/resolver/resolver.go:1373: join := r.fs.Join(current, "node_modules", extends)
internal/resolver/resolver.go:1376: pkgDir := r.fs.Join(current, "node_modules", esmPackageName)
internal/resolver/resolver.go:1381: // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-2.html#tsconfigjson-inheritance-via-nodejs-packages
internal/resolver/resolver.go:1472: // unlike how node path resolution works. We also need to explicitly
internal/resolver/resolver.go:1491: // Suppress warnings about missing base config files inside "node_modules"
internal/resolver/resolver.go:1552: // continue to check the directories above it, which is now node behaves.
internal/resolver/resolver.go:1564: // directory. The "pnpm" package manager generates a faulty "NODE_PATH"
internal/resolver/resolver.go:1580: // A "node_modules" directory isn't allowed to directly contain another "node_modules" directory
internal/resolver/resolver.go:1582: if base == "node_modules" {
internal/resolver/resolver.go:1585: } else if entry, _ := entries.Get("node_modules"); entry != nil {
internal/resolver/resolver.go:1639: // Except don't do this if we're inside a "node_modules" directory. Package
internal/resolver/resolver.go:1649: // Ignoring "tsconfig.json" files inside "node_modules" directories breaks
internal/resolver/resolver.go:1770: // Given "./x.js", node's algorithm tries things in the following order:
internal/resolver/resolver.go:1775: // ./x.js.node
internal/resolver/resolver.go:1778: // ./x.js/index.node
internal/resolver/resolver.go:1798: // Our order below is a blend of both. We try to follow node's algorithm but
internal/resolver/resolver.go:1811: // structured to handle node's algorithm and TypeScript's algorithm has a
internal/resolver/resolver.go:1813: // LOAD_INDEX together while node always does one LOAD_AS_FILE before one
internal/resolver/resolver.go:1925: // Use a special import order for imports inside "node_modules"
internal/resolver/resolver.go:1926: extensionOrder = r.nodeModulesExtensionOrder
internal/resolver/resolver.go:1944: // Use a special import order for imports inside "node_modules"
internal/resolver/resolver.go:1945: extensionOrder = r.nodeModulesExtensionOrder
internal/resolver/resolver.go:2335: // * https://[code-host]/nodejs/node/issues/41686
internal/resolver/resolver.go:2360: r.debugLogs.addNote(fmt.Sprintf("Searching for %q in \"node_modules\" directories starting from %q", importPath, dirInfo.absPath))
internal/resolver/resolver.go:2389: // Check for subpath imports: https://nodejs.org/api/packages.html#subpath-imports
internal/resolver/resolver.go:2425: // version of node's module resolution algorithm. The Yarn PnP
internal/resolver/resolver.go:2426: // specification says to use node's module resolution algorithm verbatim
internal/resolver/resolver.go:2458: // Try to parse the package name using node's ESM-specific rules
internal/resolver/resolver.go:2473: // Common package resolution logic shared between "node_modules" and "NODE_PATHS"
internal/resolver/resolver.go:2480: // Try node's new package resolution rules
internal/resolver/resolver.go:2502: // Try node's old package resolution rules
internal/resolver/resolver.go:2510: // Then check for the package in any enclosing "node_modules" directories
internal/resolver/resolver.go:2512: // Skip directories that are themselves called "node_modules", since we
internal/resolver/resolver.go:2513: // don't ever want to search for "node_modules/node_modules"
internal/resolver/resolver.go:2515: if absolute, ok, diffCase, sideEffects, shouldStop := tryToResolvePackage(r.fs.Join(dirInfo.absPath, "node_modules")); shouldStop {
internal/resolver/resolver.go:2527: // Then check the global "NODE_PATH" environment variable. It has been
internal/resolver/resolver.go:2528: // clarified that this step comes last after searching for "node_modules"
internal/resolver/resolver.go:2529: // directories: https://[code-host]/nodejs/node/issues/38128.
internal/resolver/resolver.go:2543: r.debugLogs.addNote("Marking this path as implicitly external due to it being a node built-in")
internal/resolver/resolver.go:2552: // "import fs from 'node:fs'"
internal/resolver/resolver.go:2553: // "require('node:fs')"
internal/resolver/resolver.go:2554: if r.options.Platform == config.PlatformNode && strings.HasPrefix(importPath, "node:") {
internal/resolver/resolver.go:2556: r.debugLogs.addNote("Marking this path as implicitly external due to the \"node:\" prefix")
internal/resolver/resolver.go:2559: // If this is a known node built-in module, mark it with "sideEffects: false"
internal/resolver/resolver.go:2561: if BuiltInNodeModules[strings.TrimPrefix(importPath, "node:")] {
internal/resolver/resolver.go:2574: r.debugLogs.addNote("Removing the \"node:\" prefix because the target environment doesn't support it with \"import\" statements")
internal/resolver/resolver.go:2584: r.debugLogs.addNote("Removing the \"node:\" prefix because the target environment doesn't support it with \"require\" calls")
internal/resolver/resolver.go:2893:// Package paths are loaded from a "node_modules" directory. Non-package paths
internal/resolver/resolver.go:2902:// node --experimental-wasi-unstable-preview1 -p "[...require('module').builtinModules].join('\n')"
internal/resolver/resolver.go:2904:// Be sure to use the *LATEST* version of node when updating this list!
internal/config/config.go:434: AbsNodePaths []string // The "NODE_PATH" variable from Node.js
internal/resolver/yarnpnp_test.go:69: t.Run(current.It, func(t *testing.T) {
internal/resolver/yarnpnp_test.go:85: // normal node module resolution rules instead of throwing an error.
internal/resolver/yarnpnp_test.go:94: // Otherwise esbuild's implementation of node module resolution
internal/config/globals.go:201: // Other globals present in both the browser and node. This should include at
internal/config/globals.go:914:// nodes such as identifiers within the injected context so that they can
internal/js_lexer/js_lexer.go:36: // "#!/usr/bin/env node"
internal/js_lexer/js_lexer.go:1016: // "#!/usr/bin/env node"
internal/js_lexer/js_lexer_test.go:43: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:73: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:93: expectHashbang(t, "#!/usr/bin/env node", "#!/usr/bin/env node")
internal/js_lexer/js_lexer_test.go:94: expectHashbang(t, "#!/usr/bin/env node\n", "#!/usr/bin/env node")
internal/js_lexer/js_lexer_test.go:95: expectHashbang(t, "#!/usr/bin/env node\nlet x", "#!/usr/bin/env node")
internal/js_lexer/js_lexer_test.go:96: expectLexerError(t, " #!/usr/bin/env node", "<stdin>: ERROR: Syntax error \"!\"\n")
internal/js_lexer/js_lexer_test.go:101: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:142: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:349: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:404: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:426: t.Run(contents, func(t *testing.T) {
internal/js_lexer/js_lexer_test.go:554: // "#!/usr/bin/env node"
internal/js_lexer/js_lexer_test.go:607: t.Run(contents, func(t *testing.T) {
internal/bundler/bundler.go:58: // are stored at every AST node) to UTF-16 column offsets (required by source
internal/bundler/bundler.go:842: pkg := strings.TrimPrefix(path, "node:")
internal/bundler/bundler.go:847: how = "--platform=node"
internal/bundler/bundler.go:849: how = "platform: 'node'"
internal/bundler/bundler.go:853: hint = fmt.Sprintf("The package %q wasn't found on the file system but is built into node. "+
internal/bundler/bundler.go:854: "Are you trying to bundle for node? You can use %q to do that, which will remove this error.", path, how)
internal/bundler/bundler.go:1280: // Native support for data URLs. This is supported natively by node:
internal/bundler/bundler.go:1281: // https://nodejs.org/docs/latest/api/esm.html#esm_data_imports
internal/bundler/bundler.go:1579: // Set the module type preference using node's module type rules
internal/bundler/bundler.go:2641: // Except don't do this if this file is inside "node_modules" since
internal/bundler/bundler.go:2645: // re-enabling the warning about code inside "node_modules".
internal/bundler/bundler.go:3426: // dynamically-importing npm packages that make use of node's implicit
internal/css_lexer/css_lexer_test.go:78: t.Run(contents, func(t *testing.T) {
internal/js_ast/js_ast_test.go:19: assertEqual(t, GenerateNonUniqueNameFromPath("node_modules/demo-pkg/index.js"), "demo_pkg")
internal/js_ast/js_ast_test.go:20: assertEqual(t, GenerateNonUniqueNameFromPath("node_modules\\demo-pkg\\index.js"), "demo_pkg")
internal/js_ast/js_ast_helpers.go:1784: // a nested AST node. The following transforms are invalid:
internal/js_ast/js_ast.go:798: // esbuild's output. These absent AST nodes are completely omitted when
internal/js_ast/js_ast.go:1590: // These are stored at the AST level instead of on individual AST nodes so
internal/js_ast/js_ast.go:1824: // node's implicit module resolution rules that allows you to import it by
internal/css_parser/css_parser_test.go:18: t.Run(name, func(t *testing.T) {
internal/runtime/runtime.go:227: // Converts the module from CommonJS to ESM. When in node mode (i.e. in an
internal/runtime/runtime.go:234: // If the importer is in node compatibility mode or this is not an ESM
internal/runtime/runtime.go:237: // "default" to the CommonJS "module.exports" for node compatibility.
internal/runtime/runtime_test.go:15: t.Run(key, func(t *testing.T) {
internal/js_printer/js_printer.go:3310: // Check whether this node is a special case, and stop if it is
internal/js_printer/js_printer.go:3318: // Stop iterating if iteration doesn't apply to the left node
internal/js_printer/js_printer.go:3337: // Process all binary operations from the deepest-visited node back toward
internal/js_printer/js_printer.go:4928: // us do binary search on to figure out what line a given AST node came from
internal/js_printer/js_printer_test.go:18: t.Run(name, func(t *testing.T) {
internal/css_printer/css_printer.go:39: // us do binary search on to figure out what line a given AST node came from
internal/css_printer/css_printer_test.go:16: t.Run(name, func(t *testing.T) {
internal/css_printer/css_printer_test.go:58: t.Run(stringValue, func(t *testing.T) {
internal/css_parser/css_reduce_calc.go:104: // ALGORITHM DEVIATION: Avoid parenthesizing product nodes inside sum nodes
internal/css_parser/css_reduce_calc.go:120: // If child is a Negate node, append " - " to s, then serialize the Negate’s child and append the result to s.
internal/css_parser/css_reduce_calc.go:160: // ALGORITHM DEVIATION: Avoid parenthesizing product nodes inside sum nodes
internal/css_parser/css_reduce_calc.go:194: // If child is an Invert node, append " / " to s, then serialize the Invert’s child and append the result to s.
internal/css_parser/css_reduce_calc.go:300: // For each of root’s children that are Sum nodes, replace them with their children.
internal/css_parser/css_reduce_calc.go:313: // removed nodes, and with the same unit. (E.g. combine numbers, combine percentages,
internal/css_parser/css_reduce_calc.go:345: // For each of root’s children that are Product nodes, replace them with their children.
internal/css_parser/css_reduce_calc.go:357: // them and replace them with a single number containing the product of the removed nodes.
internal/css_parser/css_reduce_calc.go:375: // If root contains only numeric values and/or Invert nodes containing numeric values,
internal/css_parser/css_reduce_calc.go:377: // node is the inverse of its child’s type) results in a type that matches any of the
internal/css_parser/css_reduce_calc.go:379: // values of the children (noting that the value of an Invert node is the reciprocal
internal/css_parser/css_reduce_calc.go:434: // If root’s child is a Negate node, return the child’s child.
internal/css_parser/css_reduce_calc.go:453: // If root’s child is an Invert node, return the child’s child.
internal/css_parser/css_reduce_calc.go:522: // Collect children into Product and Invert nodes
internal/css_parser/css_reduce_calc.go:537: // Generate a node for the run
internal/css_parser/css_reduce_calc.go:551: // Replace the run with a single node
internal/css_parser/css_reduce_calc.go:560: // Collect children into Sum and Negate nodes
internal/css_parser/css_reduce_calc.go:577: // Generate a node for the run
internal/css_parser/css_reduce_calc.go:591: // Replace the run with a single node
internal/fs/modkey_unix.go:34: inode: stat.Ino,
internal/fs/fs_zip.go:5:// instead of directory trees, and then modify node to treat zip files like
internal/fs/fs.go:224: inode uint64
cmd/esbuild/main.go:39: is browser and cjs when platform is node)
cmd/esbuild/main.go:48: --platform=... Platform target (browser | node | neutral,
cmd/esbuild/main.go:54: safari11, edge16, node10, ie9, opera45, default esnext)
cmd/esbuild/main.go:105: browser and "main,module" when platform is node)
cmd/esbuild/main.go:306: exitCode = cli.Run(osArgs)
cmd/esbuild/main.go:328: // in node. However, node has a bug/feature where any pending calls to
cmd/esbuild/main.go:381: exitCode = cli.Run(osArgs)
internal/fs/fs_mock_test.go:174: t.Run(fmt.Sprintf("Rel(%q, %q) == %q", a, b, c), func(t *testing.T) {
internal/fs/fs_mock_test.go:209: t.Run(fmt.Sprintf("Rel(%q, %q) == %q", a, b, c), func(t *testing.T) {
cmd/esbuild/service.go:606: options.NodePaths = decodeStringArray(request["nodePaths"].([]interface{}))
rg -n "func \(.*expectBundled|expectBundled\(" internal/bundler_tests -SChunk ID: 5c9451
Wall time: 0.0001 seconds
Process exited with code 0
Original token count: 24261
Output:
Total output lines: 1058
internal/bundler_tests/bundler_dce_test.go:16: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:41: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:66: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:91: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:116: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:141: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:166: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:195: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:224: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:252: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:280: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:305: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:330: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:355: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:380: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:405: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:430: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:462: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:494: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:525: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:561: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:593: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:625: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:656: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:692: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:726: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:751: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:775: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:804: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:829: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:855: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:896: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:928: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:968: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1000: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1038: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1055: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1072: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1093: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1114: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1135: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1153: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1226: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1251: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1279: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1316: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1409: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1434: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1521: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1565: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1594: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1618: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1659: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1698: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1737: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1767: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1828: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1846: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1864: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1882: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1908: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1941: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1958: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:1977: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2081: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2151: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2171: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2195: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2214: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2259: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2305: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2329: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2350: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2384: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2420: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2454: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2635: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2770: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2841: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:2861: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3035: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3184: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3213: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3273: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3399: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3491: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3548: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3590: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3633: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3650: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3710: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3774: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3804: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3835: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3865: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3895: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3925: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3955: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:3985: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4015: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4043: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4072: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4118: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4258: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4391: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4524: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4578: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4606: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4648: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4676: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4703: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4737: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4776: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4800: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4833: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4863: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4884: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4917: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4936: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4952: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_dce_test.go:4982: dce_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:14: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:40: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:67: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:94: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:122: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:150: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:179: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:209: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:224: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_glob_test.go:259: glob_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:19: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:36: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:64: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:109: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:150: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:191: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:232: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:272: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:294: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:316: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:337: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:359: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:384: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:405: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:456: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:507: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:558: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:608: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:650: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:692: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:733: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:757: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:781: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:826: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:859: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:875: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:899: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:936: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1012: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1088: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1154: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1220: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1272: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1324: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1369: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1414: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1459: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1504: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1535: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1567: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1588: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1612: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1635: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1664: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1692: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1734: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1776: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1824: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1872: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1898: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1915: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1946: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:1967: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2002: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2022: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2042: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2062: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2088: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2114: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2140: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2166: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2191: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2219: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2242: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2263: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2294: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2326: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2344: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2367: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2390: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2419: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2443: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2510: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2578: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2646: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2710: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2759: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2808: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2979: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:2999: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:3059: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:3120: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_lower_test.go:3149: lower_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:14: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:46: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:85: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:124: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:158: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:192: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:226: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:258: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:297: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:336: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:370: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importphase_test.go:404: importphase_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importstar_ts_test.go:14: importstar_ts_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importstar_ts_test.go:34: importstar_ts_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_importstar_ts_test.go:54: importstar_ts_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_impo…14261 tokens truncated…(t, bundled{
internal/bundler_tests/bundler_default_test.go:1901: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:1931: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:1971: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2094: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2119: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2135: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2157: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2208: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2241: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2286: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2321: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2346: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2398: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2423: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2457: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2476: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2495: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2514: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2533: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2588: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2607: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2631: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2666: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2688: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2750: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2783: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2817: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2849: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2882: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2919: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2946: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2975: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:2996: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3015: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3041: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3058: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3075: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3092: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3109: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3124: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3142: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3157: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3175: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3197: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3223: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3249: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3264: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3281: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3298: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3319: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3335: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3349: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3386: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3423: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3460: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3497: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3534: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3562: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3583: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3604: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3625: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3725: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3744: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3763: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3783: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3803: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3876: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3929: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3946: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3962: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3978: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:3998: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4015: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4035: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4052: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4069: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4086: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4101: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4116: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4133: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4150: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4170: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4187: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4207: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4224: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4267: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4296: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4325: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4355: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4449: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4532: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4663: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4750: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4794: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4894: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4976: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:4999: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5025: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5052: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5091: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5126: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5175: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5194: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5215: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5256: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5291: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5321: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5378: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5433: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5467: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5511: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5583: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5638: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5675: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5758: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5789: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5824: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5854: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5879: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5906: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5933: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5954: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5975: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:5994: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6016: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6058: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6138: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6178: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6226: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6266: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6314: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6364: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6414: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6509: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6521: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6533: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6564: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6593: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6615: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6638: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6673: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6711: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6737: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6772: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6796: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6816: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6848: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6876: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6927: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6946: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:6975: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7018: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7058: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7114: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7174: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7195: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7220: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7246: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7266: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7293: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7338: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7370: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7395: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7415: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7437: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7545: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7563: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7582: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7607: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7628: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7656: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7685: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7733: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7782: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7799: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7822: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7855: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7885: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7911: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7947: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:7985: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8036: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8066: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8155: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8202: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8235: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8300: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8334: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8377: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8397: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8563: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8587: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8623: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8662: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8683: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8743: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8784: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8815: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8857: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8915: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:8953: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9013: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9074: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9096: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9122: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9150: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9187: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9209: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9236: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9256: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9275: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9295: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9315: default_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9343: css_suite.expectBundled(t, bundled{
internal/bundler_tests/bundler_default_test.go:9383: css_suite.expectBundled(t, bundled{
sed -n '1,220p' internal/bundler_tests/bundler_test.go
Chunk ID: f7d644
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 1675
Output:
package bundler_tests
// Bundling test results are stored in snapshot files, located in the
// "snapshots" directory. This allows test results to be updated easily without
// manually rewriting all of the expected values. To update the tests run
// "UPDATE_SNAPSHOTS=1 make test" and commit the updated values. Make sure to
// inspect the diff to ensure the expected values are valid.
import (
"fmt"
"io/ioutil"
"os"
"path"
"sort"
"strings"
"sync"
"testing"
"[code-host]/evanw/esbuild/internal/bundler"
"[code-host]/evanw/esbuild/internal/cache"
"[code-host]/evanw/esbuild/internal/compat"
"[code-host]/evanw/esbuild/internal/config"
"[code-host]/evanw/esbuild/internal/fs"
"[code-host]/evanw/esbuild/internal/linker"
"[code-host]/evanw/esbuild/internal/logger"
"[code-host]/evanw/esbuild/internal/test"
)
func es(version int) compat.JSFeature {
return compat.UnsupportedJSFeatures(map[compat.Engine]compat.Semver{
compat.ES: {Parts: []int{version}},
})
}
func assertLog(t *testing.T, msgs []logger.Msg, expected string) {
t.Helper()
var text strings.Builder
for _, msg := range msgs {
text.WriteString(msg.String(logger.OutputOptions{}, logger.TerminalInfo{}))
}
test.AssertEqualWithDiff(t, text.String(), expected)
}
func hasErrors(msgs []logger.Msg) bool {
for _, msg := range msgs {
if msg.Kind == logger.Error {
return true
}
}
return false
}
type bundled struct {
files map[string]string
entryPaths []string
entryPathsAdvanced []bundler.EntryPoint
expectedScanLog string
expectedCompileLog string
options config.Options
debugLogs bool
absWorkingDir string
}
type suite struct {
expectedSnapshots map[string]string
generatedSnapshots map[string]string
name string
path string
mutex sync.Mutex
}
func (s *suite) expectBundled(t *testing.T, args bundled) {
t.Helper()
s.__expectBundledImpl(t, args, fs.MockUnix)
// Handle conversion to Windows-style paths
{
files := make(map[string]string)
for k, v := range args.files {
files[unix2win(k)] = v
}
args.files = files
args.entryPaths = append([]string{}, args.entryPaths...)
for i, entry := range args.entryPaths {
args.entryPaths[i] = unix2win(entry)
}
args.absWorkingDir = unix2win(args.absWorkingDir)
args.options.InjectPaths = append([]string{}, args.options.InjectPaths...)
for i, absPath := range args.options.InjectPaths {
args.options.InjectPaths[i] = unix2win(absPath)
}
aliases := make(map[string]string)
for k, v := range args.options.PackageAliases {
if strings.HasPrefix(v, "/") {
v = unix2win(v)
}
aliases[k] = v
}
args.options.PackageAliases = aliases
replace := make(map[string]bool)
for k, v := range args.options.ExternalSettings.PostResolve.Exact {
replace[unix2win(k)] = v
}
args.options.ExternalSettings.PostResolve.Exact = replace
args.options.AbsOutputFile = unix2win(args.options.AbsOutputFile)
args.options.AbsOutputBase = unix2win(args.options.AbsOutputBase)
args.options.AbsOutputDir = unix2win(args.options.AbsOutputDir)
args.options.TSConfigPath = unix2win(args.options.TSConfigPath)
}
s.__expectBundledImpl(t, args, fs.MockWindows)
}
func (s *suite) expectBundledUnix(t *testing.T, args bundled) {
t.Helper()
s.__expectBundledImpl(t, args, fs.MockUnix)
}
func (s *suite) expectBundledWindows(t *testing.T, args bundled) {
t.Helper()
s.__expectBundledImpl(t, args, fs.MockWindows)
}
// Don't call this directly. Call the helpers above instead.
func (s *suite) __expectBundledImpl(t *testing.T, args bundled, fsKind fs.MockKind) {
t.Helper()
testName := t.Name()
subName := "Unix"
if fsKind == fs.MockWindows {
subName = "Windows"
}
t.Run(subName, func(t *testing.T) {
t.Helper()
// Prepare the options
if args.options.ExtensionOrder == nil {
args.options.ExtensionOrder = []string{".tsx", ".ts", ".jsx", ".js", ".css", ".json"}
}
if args.options.AbsOutputFile != "" {
if fsKind == fs.MockWindows {
args.options.AbsOutputDir = unix2win(path.Dir(win2unix(args.options.AbsOutputFile)))
} else {
args.options.AbsOutputDir = path.Dir(args.options.AbsOutputFile)
}
}
if args.options.Mode == config.ModeBundle || (args.options.Mode == config.ModeConvertFormat && args.options.OutputFormat == config.FormatIIFE) {
// Apply this default to all tests since it was not configurable when the tests were written
args.options.TreeShaking = true
}
if args.options.Mode == config.ModeBundle && args.options.OutputFormat == config.FormatPreserve {
// The format can't be "preserve" while bundling
args.options.OutputFormat = config.FormatESModule
}
logKind := logger.DeferLogNoVerboseOrDebug
if args.debugLogs {
logKind = logger.DeferLogAll
}
entryPoints := make([]bundler.EntryPoint, 0, len(args.entryPaths)+len(args.entryPathsAdvanced))
for _, path := range args.entryPaths {
entryPoints = append(entryPoints, bundler.EntryPoint{InputPath: path})
}
entryPoints = append(entryPoints, args.entryPathsAdvanced...)
if args.absWorkingDir == "" {
if fsKind == fs.MockWindows {
args.absWorkingDir = "C:\\"
} else {
args.absWorkingDir = "/"
}
}
if args.options.AbsOutputDir == "" {
args.options.AbsOutputDir = args.absWorkingDir // Match the behavior of the API in this case
}
// Run the bundler
log := logger.NewDeferLog(logKind, nil)
caches := cache.MakeCacheSet()
mockFS := fs.MockFS(args.files, fsKind, args.absWorkingDir)
args.options.OmitRuntimeForTests = true
bundle := bundler.ScanBundle(config.BuildCall, log, mockFS, caches, entryPoints, args.options, nil)
msgs := log.Done()
assertLog(t, msgs, args.expectedScanLog)
// Stop now if there were any errors during the scan
if hasErrors(msgs) {
return
}
log = logger.NewDeferLog(logKind, nil)
results, metafileJSON := bundle.Compile(log, nil, nil, linker.Link)
msgs = log.Done()
assertLog(t, msgs, args.expectedCompileLog)
// Stop now if there were any errors during the compile
if hasErrors(msgs) {
return
}
// Don't include source maps in results since they are just noise. Source
// map validity is tested separately in a test that uses Mozilla's source
// map parsing library.
generated := ""
for _, result := range results {
if generated != "" {
generated += "\n"
}
if fsKind == fs.MockWindows {
result.AbsPath = win2unix(result.AbsPath)
}
generated += fmt.Sprintf("---------- %s ----------\n%s", result.AbsPath, string(result.Contents))
}
if metafileJSON != "" {
generated += fmt.Sprintf("---------- metafile.json ----------\n%s", metafileJSON)
}
sed -n '220,440p' internal/bundler_tests/bundler_test.go
Chunk ID: 58eaf4
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 797
Output:
}
s.compareSnapshot(t, testName, generated)
})
}
const snapshotsDir = "snapshots"
const snapshotSplitter = "\n================================================================================\n"
var globalTestMutex sync.Mutex
var globalSuites map[*suite]bool
var globalUpdateSnapshots bool
func (s *suite) compareSnapshot(t *testing.T, testName string, generated string) {
t.Helper()
// Initialize the test suite during the first test
s.mutex.Lock()
defer s.mutex.Unlock()
if s.path == "" {
s.path = snapshotsDir + "/snapshots_" + s.name + ".txt"
s.generatedSnapshots = make(map[string]string)
s.expectedSnapshots = make(map[string]string)
if contents, err := ioutil.ReadFile(s.path); err == nil {
// Replacing CRLF with LF is necessary to fix tests in [code-host] actions,
// which for some reason check out the source code in CLRF mode
for _, part := range strings.Split(strings.ReplaceAll(string(contents), "\r\n", "\n"), snapshotSplitter) {
if newline := strings.IndexByte(part, '\n'); newline != -1 {
key := part[:newline]
value := part[newline+1:]
s.expectedSnapshots[key] = value
} else {
s.expectedSnapshots[part] = ""
}
}
}
globalTestMutex.Lock()
defer globalTestMutex.Unlock()
if globalSuites == nil {
globalSuites = make(map[*suite]bool)
}
globalSuites[s] = true
_, globalUpdateSnapshots = os.LookupEnv("UPDATE_SNAPSHOTS")
}
// Check against the stored snapshot if present
s.generatedSnapshots[testName] = generated
if !globalUpdateSnapshots {
if expected, ok := s.expectedSnapshots[testName]; ok {
test.AssertEqualWithDiff(t, generated, expected)
} else {
t.Fatalf("No snapshot saved for %s\n%s%s%s",
testName,
logger.TerminalColors.Green,
generated,
logger.TerminalColors.Reset,
)
}
}
}
func (s *suite) updateSnapshots() {
os.Mkdir(snapshotsDir, 0755)
keys := make([]string, 0, len(s.generatedSnapshots))
for key := range s.generatedSnapshots {
keys = append(keys, key)
}
sort.Strings(keys)
var contents strings.Builder
for i, key := range keys {
if i > 0 {
contents.WriteString(snapshotSplitter)
}
contents.WriteString(fmt.Sprintf("%s\n%s", key, s.generatedSnapshots[key]))
}
if err := ioutil.WriteFile(s.path, []byte(contents.String()), 0644); err != nil {
panic(err)
}
}
func (s *suite) validateSnapshots() bool {
isValid := true
for key := range s.expectedSnapshots {
if _, ok := s.generatedSnapshots[key]; !ok {
if isValid {
fmt.Printf("%s\n", s.path)
}
fmt.Printf(" No test found for snapshot %s\n", key)
isValid = false
}
}
return isValid
}
func TestMain(m *testing.M) {
code := m.Run()
if globalSuites != nil {
if globalUpdateSnapshots {
for s := range globalSuites {
s.updateSnapshots()
}
} else {
for s := range globalSuites {
if !s.validateSnapshots() {
code = 1
}
}
}
}
os.Exit(code)
}
func win2unix(p string) string {
if strings.HasPrefix(p, "C:\\") {
p = p[2:]
}
p = strings.ReplaceAll(p, "\\", "/")
return p
}
func unix2win(p string) string {
p = strings.ReplaceAll(p, "/", "\\")
if strings.HasPrefix(p, "\\") {
p = "C:" + p
}
return p
}
node --version
Chunk ID: 70abf1 Wall time: 0.0000 seconds Process exited with code 0 Original token count: 3 Output: v22.23.0
rg -n "OmitRuntimeForTests|runtime" internal/bundler internal/linker internal/js_printer -S
Chunk ID: b1b321
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 2171
Output:
internal/bundler/bundler.go:38: "[code-host]/evanw/esbuild/internal/runtime"
internal/bundler/bundler.go:1420: // Always start by parsing the runtime file
internal/bundler/bundler.go:2337: // Fill out "nil" for any additional imports (i.e. from the runtime)
internal/bundler/bundler.go:2522: // import assertions in a real JavaScript runtime. In addition, we also
internal/bundler/bundler.go:2525: // runtime evaluates them, not us).
internal/bundler/bundler.go:3047: // Otherwise, link each entry point with the runtime file separately
internal/bundler/bundler.go:3192: // The runtime is always included in case it's needed
internal/bundler/bundler.go:3193: visit(runtime.SourceIndex)
internal/bundler/bundler.go:3327:type runtimeCacheKey struct {
internal/bundler/bundler.go:3333:type runtimeCache struct {
internal/bundler/bundler.go:3334: astMap map[runtimeCacheKey]js_ast.AST
internal/bundler/bundler.go:3338:var globalRuntimeCache runtimeCache
internal/bundler/bundler.go:3340:func (cache *runtimeCache) parseRuntime(options *config.Options) (source logger.Source, runtimeAST js_ast.AST, ok bool) {
internal/bundler/bundler.go:3341: key := runtimeCacheKey{
internal/bundler/bundler.go:3342: // All configuration options that the runtime code depends on must go here
internal/bundler/bundler.go:3349: source = runtime.Source(key.unsupportedJSFeatures)
internal/bundler/bundler.go:3356: runtimeAST, ok = cache.astMap[key]
internal/bundler/bundler.go:3365: runtimeAST, ok = js_parser.Parse(log, source, js_parser.OptionsFromConfig(&config.Options{
internal/bundler/bundler.go:3371: // Always do tree shaking for the runtime because we never want to
internal/bundler/bundler.go:3372: // include unnecessary runtime code
internal/bundler/bundler.go:3376: msgs := "Internal error: failed to parse runtime:\n"
internal/bundler/bundler.go:3388: cache.astMap = make(map[runtimeCacheKey]js_ast.AST)
internal/bundler/bundler.go:3390: cache.astMap[key] = runtimeAST
internal/linker/linker.go:40: "[code-host]/evanw/esbuild/internal/runtime"
internal/linker/linker.go:72: // We may need to refer to the "__esm" and/or "__commonJS" runtime symbols
internal/linker/linker.go:264: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:266: c.cjsRuntimeRef = runtimeRepr.AST.NamedExports["__commonJS"].Ref
internal/linker/linker.go:267: c.esmRuntimeRef = runtimeRepr.AST.NamedExports["__esm"].Ref
internal/linker/linker.go:269: c.cjsRuntimeRef = runtimeRepr.AST.NamedExports["__commonJSMin"].Ref
internal/linker/linker.go:270: c.esmRuntimeRef = runtimeRepr.AST.NamedExports["__esmMin"].Ref
internal/linker/linker.go:307: c.unboundModuleRef = c.graph.GenerateNewSymbol(runtime.SourceIndex, ast.SymbolUnbound, "module")
internal/linker/linker.go:378: // Don't mangle anything in the runtime code
internal/linker/linker.go:379: if sourceIndex == runtime.SourceIndex {
internal/linker/linker.go:1795: // Include the "__export" symbol from the runtime if it was used in the
internal/linker/linker.go:1799: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:1800: exportRef := runtimeRepr.AST.ModuleScope.Members["__export"].Ref
internal/linker/linker.go:1801: c.graph.GenerateSymbolImportAndUse(sourceIndex, js_ast.NSExportPartIndex, exportRef, 1, runtime.SourceIndex)
internal/linker/linker.go:1888: runtimeRequireUses := uint32(0)
internal/linker/linker.go:1903: runtimeRequireUses++
internal/linker/linker.go:1978: // "__toESM" symbol from the runtime to wrap the result of "require()"
internal/linker/linker.go:1982: // "__toCommonJS" symbol from the runtime to wrap the exports object
internal/linker/linker.go:1987: c.graph.GenerateRuntimeSymbolImportAndUse(sourceIndex, uint32(partIndex), "__require", runtimeRequireUses)
internal/linker/linker.go:1990: // going to need the "__reExport" symbol from the runtime
internal/linker/linker.go:2347: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:2348: exportRef = runtimeRepr.AST.ModuleScope.Members["__export"].Ref
internal/linker/linker.go:2360: for _, partIndex := range runtimeRepr.TopLevelSymbolToParts(exportRef) {
internal/linker/linker.go:2362: SourceIndex: runtime.SourceIndex,
internal/linker/linker.go:2379: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:2380: toCommonJSRef := runtimeRepr.AST.NamedExports["__toCommonJS"].Ref
internal/linker/linker.go:2439: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:2440: commonJSParts := runtimeRepr.TopLevelSymbolToParts(c.cjsRuntimeRef)
internal/linker/linker.go:2446: SourceIndex: runtime.SourceIndex,
internal/linker/linker.go:2462: c.graph.GenerateSymbolImportAndUse(sourceIndex, partIndex, c.cjsRuntimeRef, 1, runtime.SourceIndex)
internal/linker/linker.go:2475: runtimeRepr := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr)
internal/linker/linker.go:2476: esmParts := runtimeRepr.TopLevelSymbolToParts(c.esmRuntimeRef)
internal/linker/linker.go:2482: SourceIndex: runtime.SourceIndex,
internal/linker/linker.go:2496: c.graph.GenerateSymbolImportAndUse(sourceIndex, partIndex, c.esmRuntimeRef, 1, runtime.SourceIndex)
internal/linker/linker.go:2913: // Never wrap the runtime file since it always comes first
internal/linker/linker.go:2914: if sourceIndex == runtime.SourceIndex {
internal/linker/linker.go:3264: // perform tree-shaking on the runtime even if tree-shaking is disabled.
internal/linker/linker.go:4202: if sourceIndex == runtime.SourceIndex {
internal/linker/linker.go:4226: // Always put the runtime code first before anything else
internal/linker/linker.go:4227: visit(runtime.SourceIndex)
internal/linker/linker.go:4398: exportStarRef := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr).AST.ModuleScope.Members["__reExport"].Ref
internal/linker/linker.go:4443: exportStarRef := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr).AST.ModuleScope.Members["__reExport"].Ref
internal/linker/linker.go:4663: runtimeRequireRef ast.Ref,
internal/linker/linker.go:4961: RuntimeRequireRef: runtimeRequireRef,
internal/linker/linker.go:5564: defer c.recoverInternalError(chunkWaitGroup, runtime.SourceIndex)
internal/linker/linker.go:5578: runtimeMembers := c.graph.Files[runtime.SourceIndex].InputFile.Repr.(*graph.JSRepr).AST.ModuleScope.Members
internal/linker/linker.go:5579: toCommonJSRef := ast.FollowSymbols(c.graph.Symbols, runtimeMembers["__toCommonJS"].Ref)
internal/linker/linker.go:5580: toESMRef := ast.FollowSymbols(c.graph.Symbols, runtimeMembers["__toESM"].Ref)
internal/linker/linker.go:5581: runtimeRequireRef := ast.FollowSymbols(c.graph.Symbols, runtimeMembers["__require"].Ref)
internal/linker/linker.go:5598: // Skip the runtime in test output
internal/linker/linker.go:5599: if partRange.sourceIndex == runtime.SourceIndex && c.options.OmitRuntimeForTests {
internal/linker/linker.go:5613: runtimeRequireRef,
internal/linker/linker.go:5865: // Don't include the runtime in source maps
internal/linker/linker.go:6094: defer c.recoverInternalError(chunkWaitGroup, runtime.SourceIndex)
internal/linker/linker.go:6936: // the original source code (e.g. the runtime or an injected file).
internal/linker/linker.go:7256: if sourceIndex != runtime.SourceIndex {
internal/js_printer/js_printer.go:1299: // https://tc39.es/ecma262/#sec-runtime-semantics-propertydefinitionevaluation
internal/js_printer/js_printer.go:1346: // https://tc39.es/ecma262/#sec-runtime-semantics-propertydefinitionevaluation
internal/js_printer/js_printer_test.go:229: // crashing in the WebAssembly build due to a bug in the Go runtime.
internal/js_printer/js_printer_test.go:1067: "import { __template } from \"<runtime>\";\nvar _a;\nString.raw(_a || (_a = __template([\"<\\/script\"])));\n")
internal/js_printer/js_printer_test.go:1069: "import { __template } from \"<runtime>\";\nvar _a;\nString.raw(_a || (_a = __template([\"<\\/script\", \"\"])), a);\n")
internal/js_printer/js_printer_test.go:1071: "import { __template } from \"<runtime>\";\nvar _a;\nString.raw(_a || (_a = __template([\"\", \"<\\/script\"])), a);\n")
internal/js_printer/js_printer_test.go:1073: "import { __template } from \"<runtime>\";\nvar _a;\nString.raw(_a || (_a = __template([\"<\\/SCRIPT\"])));\n")
internal/js_printer/js_printer_test.go:1075: "import { __template } from \"<runtime>\";\nvar _a;\nString.raw(_a || (_a = __template([\"<\\/ScRiPt\"])));\n")
node <<'EOF'
(async () => {
const log=[];
async function* inner(){try{log.push('inner-start'); yield await Promise.resolve('value'); log.push('after-yield')} finally { log.push('finally-start'); yield 'cleanup'; log.push('finally-after') }}
async function* outer(){ log.push('outer-start'); yield* inner(); log.push('outer-after') }
const it=outer();
const p1=it.next(); log.push('after-p1');
const p2=it.return('done'); log.push('after-p2');
p1.then(x=>log.push('p1:'+JSON.stringify(x)));
p2.then(x=>log.push('p2:'+JSON.stringify(x)));
await p1; log.push('awaited-p1');
await p2; log.push('awaited-p2');
console.log(JSON.stringify(log));
})();
EOFChunk ID: 0dd42c
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 45
Output:
["outer-start","inner-start","after-p1","after-p2","p1:{\"value\":\"value\",\"done\":false}","awaited-p1","finally-start","p2:{\"value\":\"cleanup\",\"done\":false}","awaited-p2"]
node <<'EOF'
(async () => {
for (const kind of ['sync-yield','await-yield']) {
const log=[];
async function* g(){ log.push('start'); let a= kind==='await-yield' ? (yield await Promise.resolve(1)) : (yield 1); log.push('after-yield:'+a); yield 2; }
const it=g(); const p1=it.next(); log.push('after-p1'); const p2=it.next('sent'); log.push('after-p2'); p1.then(x=>log.push('p1:'+JSON.stringify(x))); p2.then(x=>log.push('p2:'+JSON.stringify(x))); await p1; log.push('awaited-p1'); await p2; log.push('awaited-p2'); console.log(kind, JSON.stringify(log));
}
})();
EOFChunk ID: 0975cb
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 79
Output:
sync-yield ["start","after-p1","after-p2","after-yield:sent","p1:{\"value\":1,\"done\":false}","awaited-p1","p2:{\"value\":2,\"done\":false}","awaited-p2"]
await-yield ["start","after-p1","after-p2","after-yield:sent","p1:{\"value\":1,\"done\":false}","awaited-p1","p2:{\"value\":2,\"done\":false}","awaited-p2"]
node <<'EOF'
(async () => {
const log=[];
async function* g(){ log.push('start'); try { let a=yield await Promise.resolve(1); log.push('after-yield:'+a); } catch(e) { log.push('catch:'+e); yield 'recover'; } }
const it=g(); const p1=it.next(); log.push('after-p1'); const p2=it.throw('err'); log.push('after-p2'); p1.then(x=>log.push('p1:'+JSON.stringify(x)),e=>log.push('p1err:'+e)); p2.then(x=>log.push('p2:'+JSON.stringify(x)),e=>log.push('p2err:'+e)); await p1.catch(()=>{}); log.push('awaited-p1'); await p2.catch(()=>{}); log.push('awaited-p2'); console.log(JSON.stringify(log));
})();
EOFChunk ID: c1e880
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 37
Output:
["start","after-p1","after-p2","catch:err","p1:{\"value\":1,\"done\":false}","awaited-p1","p2:{\"value\":\"recover\",\"done\":false}","awaited-p2"]
node <<'EOF'
(async () => {
const log=[];
async function* g(){ try { log.push('start'); let a=yield await Promise.resolve(1); log.push('after-yield:'+a); yield 2; } finally { log.push('finally-start'); yield 'cleanup'; log.push('finally-after') } }
const it=g(); const p1=it.next(); log.push('after-p1'); const p2=it.return('ret'); log.push('after-p2'); const p3=it.next('after'); log.push('after-p3');
for (const [n,p] of [['p1',p1],['p2',p2],['p3',p3]]) p.then(x=>log.push(n+':'+JSON.stringify(x)),e=>log.push(n+'err:'+e));
await Promise.allSettled([p1,p2,p3]); console.log(JSON.stringify(log));
})();
EOFChunk ID: 5ab6a3
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 48
Output:
["start","after-p1","after-p2","after-p3","p1:{\"value\":1,\"done\":false}","finally-start","finally-after","p2:{\"value\":\"cleanup\",\"done\":false}","p3:{\"value\":\"ret\",\"done\":true}"]
node <<'EOF'
(async () => {
const log=[];
async function* inner(){ try { log.push('inner-start'); let a=yield await Promise.resolve('v1'); log.push('after-yield1:'+a); let b=yield await Promise.resolve('v2'); log.push('after-yield2:'+b); } finally { log.push('finally-start'); yield 'cleanup'; log.push('finally-after') } }
async function* outer(){ log.push('outer-start'); yield* inner(); log.push('outer-after') }
const it=outer(); const p1=it.next(); log.push('after-p1'); const p2=it.next('sent1'); log.push('after-p2'); const p3=it.return('done'); log.push('after-p3'); const p4=it.next('after'); log.push('after-p4');
for (const [n,p] of [['p1',p1],['p2',p2],['p3',p3],['p4',p4]]) p.then(x=>log.push(n+':'+JSON.stringify(x)),e=>log.push(n+'err:'+e));
await Promise.allSettled([p1,p2,p3,p4]); console.log(JSON.stringify(log));
})();
EOFChunk ID: b8beec
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 71
Output:
["outer-start","inner-start","after-p1","after-p2","after-p3","after-p4","after-yield1:sent1","p1:{\"value\":\"v1\",\"done\":false}","p2:{\"value\":\"v2\",\"done\":false}","finally-start","finally-after","p3:{\"value\":\"cleanup\",\"done\":false}","outer-after","p4:{\"done\":true}"]
node <<'EOF'
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for('Symbol.' + name)
var __typeError = msg => { throw TypeError(msg) }
var __await = function (promise, isYieldStar) { this[0]=promise; this[1]=isYieldStar }
var __asyncGenerator = (__this, __arguments, generator) => {
var resume = (k, v, yes, no) => {
try {
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
Promise.resolve(isAwait ? v[0] : v)
.then(y => isAwait
? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no)
: yes({ value: y, done }))
.catch(e => resume('throw', e, yes, no))
} catch (e) { no(e) }
}, method = k => it[k] = x => new Promise((yes, no) => resume(k, x, yes, no)), it = {}
return generator = generator.apply(__this, __arguments), it[Symbol.asyncIterator]=()=>it, method('next'), method('throw'), method('return'), it
}
var __yieldStar = value => {
var obj = value[Symbol.asyncIterator], isAwait = false, method, it = {}
if (obj == null) { obj = value[Symbol.iterator](); method = k => it[k] = x => obj[k](x) }
else { obj = obj.call(value); method = k => it[k] = v => { if (isAwait) { isAwait=false; if (k==='throw') throw v; return v } isAwait=true; return {done:false, value:new __await(new Promise(resolve=>{var x=obj[k](v); if (!(x instanceof Object)) throw Error('Object expected'); resolve(x)}),1)}}}
return it[Symbol.iterator]=()=>it, method('next'), 'throw' in obj ? method('throw') : it.throw=x=>{throw x}, 'return' in obj && method('return'), it
}
const log=[];
function outer(){ return __asyncGenerator(this, null, function*(){ yield* __yieldStar(inner()) }) }
async function* inner(){ try { log.push('start'); yield await Promise.resolve('v') } finally { log.push('finally'); yield 'cleanup'; log.push('finally-after') } }
(async()=>{ const it=outer(); const p1=it.next(); const p2=it.return('done'); for (const [n,p] of [['p1',p1],['p2',p2]]) p.then(x=>log.push(n+JSON.stringify(x)),e=>log.push(n+'err'+e)); await Promise.allSettled([p1,p2]); console.log(JSON.stringify(log)); })()
EOFChunk ID: 6bdacd
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 22
Output:
["start","p2errTypeError: Iterator result done is not an object","p1{\"done\":true}"]
node <<'EOF'
function makeIt(){ let isAwait=false; return { [Symbol.iterator](){return this}, next(v){ console.log('it.next',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-next'}}, return(v){ console.log('it.return',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-return'}}, throw(v){ console.log('it.throw',v,isAwait); if(isAwait){isAwait=false; throw v} isAwait=true; return {done:false,value:'await-throw'}} }}
function* outer(){ try { console.log('outer before'); yield* makeIt(); console.log('outer after yield*') } finally { console.log('outer finally') } }
for (const method of ['next','return','throw']) {
console.log('\nmethod',method);
const g=outer(); console.log('first', g.next());
try { console.log('resume with next', g.next({done:false,value:'cleanup'})); } catch(e){ console.log('err next',e) }
const g2=outer(); console.log('first2', g2.next());
try { console.log('resume with same', g2[method]({done:false,value:'cleanup'})); } catch(e){ console.log('err same',e) }
}
EOFChunk ID: 12c164
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 281
Output:
method next
outer before
it.next undefined false
first { done: false, value: 'await-next' }
it.next { done: false, value: 'cleanup' } true
resume with next { done: false, value: 'cleanup' }
outer before
it.next undefined false
first2 { done: false, value: 'await-next' }
it.next { done: false, value: 'cleanup' } true
resume with same { done: false, value: 'cleanup' }
method return
outer before
it.next undefined false
first { done: false, value: 'await-next' }
it.next { done: false, value: 'cleanup' } true
resume with next { done: false, value: 'cleanup' }
outer before
it.next undefined false
first2 { done: false, value: 'await-next' }
it.return { done: false, value: 'cleanup' } true
resume with same { done: false, value: 'cleanup' }
method throw
outer before
it.next undefined false
first { done: false, value: 'await-next' }
it.next { done: false, value: 'cleanup' } true
resume with next { done: false, value: 'cleanup' }
outer before
it.next undefined false
first2 { done: false, value: 'await-next' }
it.throw { done: false, value: 'cleanup' } true
outer finally
err same { done: false, value: 'cleanup' }
node <<'EOF'
function makeIt(){ let isAwait=false; return { [Symbol.iterator](){return this}, next(v){ console.log('it.next',v,isAwait); if(isAwait){isAwait=false; return v} return {done:false,value:'normal-next'}}, return(v){ console.log('it.return',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-return'}}, throw(v){ console.log('it.throw',v,isAwait); if(isAwait){isAwait=false; throw v} isAwait=true; return {done:false,value:'await-throw'}} }}
function* outer(){ try { console.log('outer before'); yield* makeIt(); console.log('outer after yield*') } finally { console.log('outer finally') } }
for (const handoff of ['next','return']) {
console.log('\nhandoff',handoff);
const g=outer(); console.log('n1', g.next());
console.log('r1', g.return('done'));
try { console.log('h', g[handoff]({done:false,value:'cleanup'})); } catch(e){ console.log('err',e) }
console.log('n2', g.next('after'));
}
EOFChunk ID: 318a83
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 151
Output:
handoff next
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.return done false
r1 { done: false, value: 'await-return' }
it.next { done: false, value: 'cleanup' } true
h { done: false, value: 'cleanup' }
it.next after false
n2 { done: false, value: 'normal-next' }
handoff return
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.return done false
r1 { done: false, value: 'await-return' }
it.return { done: false, value: 'cleanup' } true
h { done: false, value: 'cleanup' }
it.next after false
n2 { done: false, value: 'normal-next' }
node <<'EOF'
function makeIt(){ let isAwait=false; return { [Symbol.iterator](){return this}, next(v){ console.log('it.next',v,isAwait); if(isAwait){isAwait=false; return v} return {done:false,value:'normal-next'}}, return(v){ console.log('it.return',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-return'}} }}
function* outer(){ try { console.log('outer before'); const r=yield* makeIt(); console.log('outer after yield*',r); return 'outer-return' } finally { console.log('outer finally') } }
for (const handoff of ['next','return']) {
console.log('\nhandoff',handoff);
const g=outer(); console.log('n1', g.next()); console.log('r1', g.return('done'));
try { console.log('h', g[handoff]({done:true,value:'inner-returned'})); } catch(e){ console.log('err',e) }
console.log('n2', g.next('after'));
}
EOFChunk ID: 79ad0b
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 159
Output:
handoff next
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.return done false
r1 { done: false, value: 'await-return' }
it.next { done: true, value: 'inner-returned' } true
outer after yield* inner-returned
outer finally
h { value: 'outer-return', done: true }
n2 { value: undefined, done: true }
handoff return
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.return done false
r1 { done: false, value: 'await-return' }
it.return { done: true, value: 'inner-returned' } true
outer finally
h { value: 'inner-returned', done: true }
n2 { value: undefined, done: true }
node <<'EOF'
(async()=>{ const log=[]; async function* inner(){ try{yield 'v'} finally{log.push('inner finally')} return 'inner-ret' } async function* outer(){ try{ const r=yield* inner(); log.push('outer r '+r); return 'outer-ret' } finally {log.push('outer finally')} } const it=outer(); const p1=it.next(); const p2=it.return('done'); p1.then(x=>log.push('p1'+JSON.stringify(x))); p2.then(x=>log.push('p2'+JSON.stringify(x)),e=>log.push('e'+e)); await Promise.allSettled([p1,p2]); console.log(JSON.stringify(log)); })()
EOFChunk ID: 1777eb
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 28
Output:
["p1{\"value\":\"v\",\"done\":false}","inner finally","outer finally","p2{\"value\":\"done\",\"done\":true}"]
node <<'EOF'
(async()=>{ const log=[]; async function* inner(){ try{ yield 'v' } catch(e){ log.push('inner catch '+e); yield 'recover'; return 'inner-ret' } finally{ log.push('inner finally') } } async function* outer(){ try{ const r=yield* inner(); log.push('outer r '+r); return 'outer-ret' } catch(e){ log.push('outer catch '+e); yield 'outer-recover' } finally {log.push('outer finally')} } const it=outer(); const p1=it.next(); const p2=it.throw('err'); const p3=it.next('after'); for(const [n,p] of [['p1',p1],['p2',p2],['p3',p3]]) p.then(x=>log.push(n+JSON.stringify(x)),e=>log.push(n+'err'+e)); await Promise.allSettled([p1,p2,p3]); console.log(JSON.stringify(log)); })()
EOFChunk ID: d0c791
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 49
Output:
["inner catch err","p1{\"value\":\"v\",\"done\":false}","p2{\"value\":\"recover\",\"done\":false}","inner finally","outer r inner-ret","outer finally","p3{\"value\":\"outer-ret\",\"done\":true}"]
node <<'EOF'
function makeIt(){ let isAwait=false; return { [Symbol.iterator](){return this}, next(v){ console.log('it.next',v,isAwait); if(isAwait){isAwait=false; return v} return {done:false,value:'normal-next'}}, throw(v){ console.log('it.throw',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-throw'}}, return(v){ console.log('it.return',v,isAwait); return {done:true,value:v} } }}
function* outer(){ try { console.log('outer before'); const r=yield* makeIt(); console.log('outer after yield*',r); return 'outer-ret' } catch(e){ console.log('outer catch',e); yield 'outer-recover' } finally { console.log('outer finally') } }
for (const handoff of ['next','throw']) { console.log('\nhandoff',handoff); const g=outer(); console.log('n1',g.next()); console.log('t1',g.throw('err')); try{ console.log('h',g[handoff]({done:false,value:'recover'})); }catch(e){console.log('err',e)} console.log('n2',g.next('after')); }
EOFChunk ID: 33ec5c
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 149
Output:
handoff next
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.throw err false
t1 { done: false, value: 'await-throw' }
it.next { done: false, value: 'recover' } true
h { done: false, value: 'recover' }
it.next after false
n2 { done: false, value: 'normal-next' }
handoff throw
outer before
it.next undefined false
n1 { done: false, value: 'normal-next' }
it.throw err false
t1 { done: false, value: 'await-throw' }
it.throw { done: false, value: 'recover' } true
h { done: false, value: 'recover' }
it.next after false
n2 { done: false, value: 'normal-next' }
node <<'EOF'
function makeIt(){ let isAwait=false; return { [Symbol.iterator](){return this}, next(v){ if(isAwait){isAwait=false; return v} return {done:false,value:'normal-next'}}, throw(v){ console.log('it.throw',v,isAwait); if(isAwait){isAwait=false; return v} isAwait=true; return {done:false,value:'await-throw'}} }}
function* outer(){ try { const r=yield* makeIt(); console.log('outer after yield*',r); return 'outer-ret' } catch(e){ console.log('outer catch',e); yield 'outer-recover' } finally { console.log('outer finally') } }
for (const handoff of ['next','throw']) { console.log('\nhandoff',handoff); const g=outer(); console.log('n1',g.next()); console.log('t1',g.throw('err')); try{ console.log('h',g[handoff]({done:true,value:'inner-ret'})); }catch(e){console.log('err',e)} console.log('n2',g.next('after')); }
EOFChunk ID: 929a48
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 128
Output:
handoff next
n1 { done: false, value: 'normal-next' }
it.throw err false
t1 { done: false, value: 'await-throw' }
outer after yield* inner-ret
outer finally
h { value: 'outer-ret', done: true }
n2 { value: undefined, done: true }
handoff throw
n1 { done: false, value: 'normal-next' }
it.throw err false
t1 { done: false, value: 'await-throw' }
it.throw { done: true, value: 'inner-ret' } true
outer after yield* inner-ret
outer finally
h { value: 'outer-ret', done: true }
n2 { value: undefined, done: true }
node <<'EOF'
(async()=>{for(const meth of ['next','throw','return']){const log=[]; async function* g(){ log.push('start'); return await Promise.resolve('ret') } const it=g(); const p1=it.next(); const p2=it[meth]('x'); p1.then(x=>log.push('p1'+JSON.stringify(x)),e=>log.push('p1err'+e)); p2.then(x=>log.push('p2'+JSON.stringify(x)),e=>log.push('p2err'+e)); await Promise.allSettled([p1,p2]); console.log(meth,JSON.stringify(log));}})()
EOFChunk ID: 44d5d8
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 57
Output:
next ["start","p1{\"value\":\"ret\",\"done\":true}","p2{\"done\":true}"]
throw ["start","p1{\"value\":\"ret\",\"done\":true}","p2errx"]
return ["start","p1{\"value\":\"ret\",\"done\":true}","p2{\"value\":\"x\",\"done\":true}"]
node <<'EOF'
(async()=>{for(const meth of ['next','throw','return']){const log=[]; async function* g(){ log.push('start'); await Promise.resolve(); throw 'boom' } const it=g(); const p1=it.next(); const p2=it[meth]('x'); p1.then(x=>log.push('p1'+JSON.stringify(x)),e=>log.push('p1err'+e)); p2.then(x=>log.push('p2'+JSON.stringify(x)),e=>log.push('p2err'+e)); await Promise.allSettled([p1,p2]); console.log(meth,JSON.stringify(log));}})()
EOFChunk ID: b6662b
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 38
Output:
next ["start","p1errboom","p2{\"done\":true}"]
throw ["start","p1errboom","p2errx"]
return ["start","p1errboom","p2{\"value\":\"x\",\"done\":true}"]
node <<'EOF'
(async()=>{const log=[]; async function* g(){ try{ yield Promise.reject('x'); log.push('after') } catch(e){ log.push('catch '+e); yield 'recover' } } const it=g(); const p1=it.next(); const p2=it.next(); p1.then(x=>log.push('p1'+JSON.stringify(x)),e=>log.push('p1err'+e)); p2.then(x=>log.push('p2'+JSON.stringify(x)),e=>log.push('p2err'+e)); await Promise.allSettled([p1,p2]); console.log(JSON.stringify(log));})()
EOFChunk ID: 7dc352
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 19
Output:
["catch x","p1{\"value\":\"recover\",\"done\":false}","p2{\"done\":true}"]
node <<'EOF'
(async()=>{const log=[]; async function* g(){ try{ yield Promise.reject('x'); log.push('after') } catch(e){ log.push('catch '+e); yield 'recover'; log.push('after recover') } } const it=g(); const p1=it.next(); const p2=it.next(); p1.then(x=>log.push('p1'+JSON.stringify(x)),e=>log.push('p1err'+e)); p2.then(x=>log.push('p2'+JSON.stringify(x)),e=>log.push('p2err'+e)); await Promise.allSettled([p1,p2]); console.log(JSON.stringify(log));})()
EOFChunk ID: 1610b2
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 23
Output:
["catch x","after recover","p1{\"value\":\"recover\",\"done\":false}","p2{\"done\":true}"]
*** Begin Patch
*** Update File: /app/internal/runtime/runtime.go
@@
export var __asyncGenerator = (__this, __arguments, generator) => {
- var resume = (k, v, yes, no) => {
+ var resume = (k, v, yes, no, record) => {
try {
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
Promise.resolve(isAwait ? v[0] : v)
.then(y => isAwait
- ? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no)
- : yes({ value: y, done }))
- .catch(e => resume('throw', e, yes, no))
+ ? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no, record)
+ : (done ? (yes({ value: y, done }), record.resolve()) : (record.resolve(), yes({ value: y, done }), record.resolve())))
+ .catch(e => {
+ try {
+ resume('throw', e, yes, no, record)
+ } catch (e) {
+ no(e)
+ record.resolve()
+ }
+ })
} catch (e) {
no(e)
+ record.resolve()
}
- }, method = k => it[k] = x => new Promise((yes, no) => resume(k, x, yes, no)), it = {}
+ }, method = k => it[k] = x => {
+ var previous = queue, record = {}, promise = new Promise((yes, no) => {
+ record.resolve = () => record.resolve && (record.done = true, record.resolveEarly(), record.resolveLate(), record.resolve = null)
+ record.early = new Promise(resolve => record.resolveEarly = resolve)
+ record.late = new Promise(resolve => record.resolveLate = resolve)
+ var run = () => resume(k, x, yes, no, record)
+ previous && !previous.done ? (k === 'return' ? previous.late : previous.early).then(run, run) : run()
+ })
+ return queue = record, promise
+ }, queue, it = {}
*** End Patch
Exit code: 0
Wall time: 0 seconds
Output:
Success. Updated the following files:
M /app/internal/runtime/runtime.go
*** Begin Patch
*** Update File: /app/internal/runtime/runtime.go
@@
export var __asyncGenerator = (__this, __arguments, generator) => {
var resume = (k, v, yes, no, record) => {
try {
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
Promise.resolve(isAwait ? v[0] : v)
.then(y => isAwait
? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no, record)
- : (done ? (yes({ value: y, done }), record.resolve()) : (record.resolve(), yes({ value: y, done }), record.resolve())))
+ : done ? (yes({ value: y, done }), record.resolveEarly(), record.resolveLate()) : (record.resolveEarly(), yes({ value: y, done }), record.resolveLate()))
.catch(e => {
try {
resume('throw', e, yes, no, record)
} catch (e) {
no(e)
- record.resolve()
+ record.resolveEarly()
+ record.resolveLate()
}
})
} catch (e) {
no(e)
- record.resolve()
+ record.resolveEarly()
+ record.resolveLate()
}
}, method = k => it[k] = x => {
var previous = queue, record = {}, promise = new Promise((yes, no) => {
- record.resolve = () => record.resolve && (record.done = true, record.resolveEarly(), record.resolveLate(), record.resolve = null)
- record.early = new Promise(resolve => record.resolveEarly = resolve)
- record.late = new Promise(resolve => record.resolveLate = resolve)
+ record.early = new Promise(resolve => record.resolveEarly = () => {
+ record.resolveEarly = () => {}
+ resolve()
+ })
+ record.late = new Promise(resolve => record.resolveLate = () => {
+ record.done = true
+ record.resolveLate = () => {}
+ resolve()
+ })
var run = () => resume(k, x, yes, no, record)
previous && !previous.done ? (k === 'return' ? previous.late : previous.early).then(run, run) : run()
})
*** End Patch
Exit code: 0
Wall time: 0 seconds
Output:
Success. Updated the following files:
M /app/internal/runtime/runtime.go
tmp=$(mktemp -d)
cat > "$tmp/trace.js" <<'EOF'
const log = [];
async function* inner() {
try {
log.push('inner-start');
const a = yield await Promise.resolve('v1');
log.push('after-yield1:' + a);
const b = yield await Promise.resolve('v2');
log.push('after-yield2:' + b);
} finally {
log.push('finally-start');
const c = yield 'cleanup';
log.push('finally-after:' + c);
}
}
async function* outer() {
log.push('outer-start');
yield* inner();
log.push('outer-after');
}
(async () => {
const it = outer();
const p1 = it.next(); log.push('after-p1');
const p2 = it.next('sent1'); log.push('after-p2');
const p3 = it.return('done'); log.push('after-p3');
const p4 = it.next('after'); log.push('after-p4');
for (const [n, p] of [['p1', p1], ['p2', p2], ['p3', p3], ['p4', p4]]) p.then(x => log.push(n + ':' + JSON.stringify(x)), e => log.push(n + 'err:' + e));
await Promise.allSettled([p1, p2, p3, p4]);
console.log(JSON.stringify(log));
})();
EOF
node "$tmp/trace.js"
go run ./cmd/esbuild "$tmp/trace.js" --bundle --target=es2017 --format=cjs --outfile="$tmp/out.js" >/dev/null
node "$tmp/out.js"
rg -n "async function\*|for await|__asyncGenerator|__yieldStar|__forAwait" "$tmp/out.js"Chunk ID: 189b00
Wall time: 1.0255 seconds
Process exited with code 0
Original token count: 221
Output:
["outer-start","inner-start","after-p1","after-p2","after-p3","after-p4","after-yield1:sent1","p1:{\"value\":\"v1\",\"done\":false}","p2:{\"value\":\"v2\",\"done\":false}","finally-start","finally-after:after","p3:{\"value\":\"cleanup\",\"done\":false}","outer-after","p4:{\"done\":true}"]
../tmp/tmp.jepjh3h02N/out.js 3.9kb
⚡ Done in 1ms
["outer-start","inner-start","after-p1","after-p2","after-p3","after-p4","after-yield1:sent1","p1:{\"value\":\"v1\",\"done\":false}","p2:{\"value\":\"v2\",\"done\":false}","finally-start","finally-after:after","p3:{\"value\":\"cleanup\",\"done\":false}","outer-after","p4:{\"done\":true}"]
9:var __asyncGenerator = (__this, __arguments, generator) => {
47:var __yieldStar = (value) => {
79: return __asyncGenerator(this, null, function* () {
94: return __asyncGenerator(this, null, function* () {
96: yield* __yieldStar(inner());
rg -n "type TransformOptions|func Transform" pkg/api/api.go pkg/api/api_impl.go
Chunk ID: 87c8cf
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 36
Output:
pkg/api/api.go:411:type TransformOptions struct {
pkg/api/api.go:476:func Transform(input string, options TransformOptions) TransformResult {
sed -n '411,455p' pkg/api/api.go
Chunk ID: 3f78cb
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 860
Output:
type TransformOptions struct {
Color StderrColor // Documentation: https://esbuild.[code-host]/api/#color
LogLevel LogLevel // Documentation: https://esbuild.[code-host]/api/#log-level
LogLimit int // Documentation: https://esbuild.[code-host]/api/#log-limit
LogOverride map[string]LogLevel // Documentation: https://esbuild.[code-host]/api/#log-override
AbsPaths AbsPaths // Documentation: https://esbuild.[code-host]/api/#abs-path
Sourcemap SourceMap // Documentation: https://esbuild.[code-host]/api/#sourcemap
SourceRoot string // Documentation: https://esbuild.[code-host]/api/#source-root
SourcesContent SourcesContent // Documentation: https://esbuild.[code-host]/api/#sources-content
Target Target // Documentation: https://esbuild.[code-host]/api/#target
Engines []Engine // Documentation: https://esbuild.[code-host]/api/#target
Supported map[string]bool // Documentation: https://esbuild.[code-host]/api/#supported
Platform Platform // Documentation: https://esbuild.[code-host]/api/#platform
Format Format // Documentation: https://esbuild.[code-host]/api/#format
GlobalName string // Documentation: https://esbuild.[code-host]/api/#global-name
MangleProps string // Documentation: https://esbuild.[code-host]/api/#mangle-props
ReserveProps string // Documentation: https://esbuild.[code-host]/api/#mangle-props
MangleQuoted MangleQuoted // Documentation: https://esbuild.[code-host]/api/#mangle-props
MangleCache map[string]interface{} // Documentation: https://esbuild.[code-host]/api/#mangle-props
Drop Drop // Documentation: https://esbuild.[code-host]/api/#drop
DropLabels []string // Documentation: https://esbuild.[code-host]/api/#drop-labels
MinifyWhitespace bool // Documentation: https://esbuild.[code-host]/api/#minify
MinifyIdentifiers bool // Documentation: https://esbuild.[code-host]/api/#minify
MinifySyntax bool // Documentation: https://esbuild.[code-host]/api/#minify
LineLimit int // Documentation: https://esbuild.[code-host]/api/#line-limit
Charset Charset // Documentation: https://esbuild.[code-host]/api/#charset
TreeShaking TreeShaking // Documentation: https://esbuild.[code-host]/api/#tree-shaking
IgnoreAnnotations bool // Documentation: https://esbuild.[code-host]/api/#ignore-annotations
LegalComments LegalComments // Documentation: https://esbuild.[code-host]/api/#legal-comments
JSX JSX // Documentation: https://esbuild.[code-host]/api/#jsx
JSXFactory string // Documentation: https://esbuild.[code-host]/api/#jsx-factory
JSXFragment string // Documentation: https://esbuild.[code-host]/api/#jsx-fragment
JSXImportSource string // Documentation: https://esbuild.[code-host]/api/#jsx-import-source
JSXDev bool // Documentation: https://esbuild.[code-host]/api/#jsx-dev
JSXSideEffects bool // Documentation: https://esbuild.[code-host]/api/#jsx-side-effects
TsconfigRaw string // Documentation: https://esbuild.[code-host]/api/#tsconfig-raw
Banner string // Documentation: https://esbuild.[code-host]/api/#banner
Footer string // Documentation: https://esbuild.[code-host]/api/#footer
rg -n "TargetES|ES2017|ES6|FormatIIFE|FormatCommonJS" pkg/api -S
Chunk ID: 93d335 Wall time: 0.0000 seconds Process exited with code 0 Original token count: 185 Output: pkg/api/api_impl.go:125: case FormatIIFE: pkg/api/api_impl.go:126: return config.FormatIIFE pkg/api/api_impl.go:127: case FormatCommonJS: pkg/api/api_impl.go:128: return config.FormatCommonJS pkg/api/api_impl.go:239: return bundle || format == FormatIIFE pkg/api/api_impl.go:315: case ES2017: pkg/api/api_impl.go:1402: options.OutputFormat = config.FormatIIFE pkg/api/api_impl.go:1404: options.OutputFormat = config.FormatCommonJS pkg/api/api_impl.go:1422: // Code splitting is experimental and currently only enabled for ES6 modules pkg/api/api_impl.go:1427: // Code splitting is experimental and currently only enabled for ES6 modules pkg/api/api.go:129: ES2017 pkg/api/api.go:174: FormatIIFE pkg/api/api.go:175: FormatCommonJS
go test ./internal/runtime
Chunk ID: 5dee5a Wall time: 1.0105 seconds Process exited with code 0 Original token count: 14 Output: ok [code-host]/evanw/esbuild/internal/runtime 0.032s
tmp=$(mktemp -d)
cat > "$tmp/regress.js" <<'EOF'
const log = [];
const watch = (name, promise) => promise.then(
value => log.push(name + ':' + JSON.stringify(value)),
error => log.push(name + 'err:' + error)
);
async function* delegated() {
try {
log.push('delegated:start');
const a = yield await Promise.resolve('one');
log.push('delegated:after-one:' + a);
const b = yield await Promise.resolve('two');
log.push('delegated:after-two:' + b);
} finally {
log.push('delegated:finally');
const c = yield 'cleanup';
log.push('delegated:after-cleanup:' + c);
}
}
async function* outer() {
log.push('outer:start');
yield* delegated();
log.push('outer:after');
}
async function delegatedReturnOne() {
const it = outer();
const p1 = it.next(); log.push('one:after-next');
const p2 = it.return('done'); log.push('one:after-return');
watch('one:p1', p1); watch('one:p2', p2);
await Promise.allSettled([p1, p2]);
}
async function delegatedReturnTwo() {
const it = outer();
const p1 = it.next(); log.push('two:after-next1');
const p2 = it.next('sent1'); log.push('two:after-next2');
const p3 = it.return('done'); log.push('two:after-return');
const p4 = it.next('after'); log.push('two:after-next3');
watch('two:p1', p1); watch('two:p2', p2); watch('two:p3', p3); watch('two:p4', p4);
await Promise.allSettled([p1, p2, p3, p4]);
}
async function* catches() {
try {
log.push('catch:start');
const a = yield await Promise.resolve('before-throw');
log.push('catch:after-yield:' + a);
} catch (e) {
log.push('catch:caught:' + e);
const b = yield await Promise.resolve('recovered');
log.push('catch:after-recover:' + b);
}
}
async function throwRecovery() {
const it = catches();
const p1 = it.next(); log.push('throw:after-next');
const p2 = it.throw('boom'); log.push('throw:after-throw');
const p3 = it.next('sent-after-throw'); log.push('throw:after-next2');
watch('throw:p1', p1); watch('throw:p2', p2); watch('throw:p3', p3);
await Promise.allSettled([p1, p2, p3]);
}
async function* source() {
yield await Promise.resolve('loop-a');
yield await Promise.resolve('loop-b');
}
async function* forAwaitWrapper() {
for await (const value of source()) {
log.push('for-await:' + value);
const sent = yield value;
log.push('for-await:sent:' + sent);
}
}
async function forAwaitCase() {
const it = forAwaitWrapper();
const p1 = it.next(); log.push('for:after-next1');
const p2 = it.next('loop-sent'); log.push('for:after-next2');
watch('for:p1', p1); watch('for:p2', p2);
await Promise.allSettled([p1, p2]);
}
(async () => {
await delegatedReturnOne();
await delegatedReturnTwo();
await throwRecovery();
await forAwaitCase();
console.log(JSON.stringify(log));
})();
EOF
native=$(node "$tmp/regress.js")
go run ./cmd/esbuild "$tmp/regress.js" --bundle --target=es2017 --format=cjs --outfile="$tmp/es2017.js" >/dev/null
lowered=$(node "$tmp/es2017.js")
printf 'native=%s\nlowered=%s\nmatch=%s\n' "$native" "$lowered" "$([ "$native" = "$lowered" ] && echo yes || echo no)"
rg -n "async function\*|for await|__asyncGenerator|__yieldStar|__forAwait" "$tmp/es2017.js"Chunk ID: ed3caa
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 762
Output:
../tmp/tmp.sWtaKWIMjc/es2017.js 6.6kb
⚡ Done in 1ms
native=["outer:start","delegated:start","one:after-next","one:after-return","one:p1:{\"value\":\"one\",\"done\":false}","delegated:finally","one:p2:{\"value\":\"cleanup\",\"done\":false}","outer:start","delegated:start","two:after-next1","two:after-next2","two:after-return","two:after-next3","delegated:after-one:sent1","two:p1:{\"value\":\"one\",\"done\":false}","two:p2:{\"value\":\"two\",\"done\":false}","delegated:finally","delegated:after-cleanup:after","two:p3:{\"value\":\"cleanup\",\"done\":false}","outer:after","two:p4:{\"done\":true}","catch:start","throw:after-next","throw:after-throw","throw:after-next2","catch:caught:boom","throw:p1:{\"value\":\"before-throw\",\"done\":false}","catch:after-recover:sent-after-throw","throw:p2:{\"value\":\"recovered\",\"done\":false}","throw:p3:{\"done\":true}","for:after-next1","for:after-next2","for-await:loop-a","for-await:sent:loop-sent","for:p1:{\"value\":\"loop-a\",\"done\":false}","for-await:loop-b","for:p2:{\"value\":\"loop-b\",\"done\":false}"]
lowered=["outer:start","delegated:start","one:after-next","one:after-return","one:p1:{\"value\":\"one\",\"done\":false}","delegated:finally","one:p2:{\"value\":\"cleanup\",\"done\":false}","outer:start","delegated:start","two:after-next1","two:after-next2","two:after-return","two:after-next3","delegated:after-one:sent1","two:p1:{\"value\":\"one\",\"done\":false}","two:p2:{\"value\":\"two\",\"done\":false}","delegated:finally","delegated:after-cleanup:after","two:p3:{\"value\":\"cleanup\",\"done\":false}","outer:after","two:p4:{\"done\":true}","catch:start","throw:after-next","throw:after-throw","throw:after-next2","catch:caught:boom","throw:p1:{\"value\":\"before-throw\",\"done\":false}","catch:after-recover:sent-after-throw","throw:p2:{\"value\":\"recovered\",\"done\":false}","throw:p3:{\"done\":true}","for:after-next1","for:after-next2","for-await:loop-a","for-await:sent:loop-sent","for:p1:{\"value\":\"loop-a\",\"done\":false}","for-await:loop-b","for:p2:{\"value\":\"loop-b\",\"done\":false}"]
match=yes
9:var __asyncGenerator = (__this, __arguments, generator) => {
47:var __yieldStar = (value) => {
75:var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
84: return __asyncGenerator(this, null, function* () {
99: return __asyncGenerator(this, null, function* () {
101: yield* __yieldStar(delegated());
132: return __asyncGenerator(this, null, function* () {
158: return __asyncGenerator(this, null, function* () {
164: return __asyncGenerator(this, null, function* () {
166: for (var iter = __forAwait(source()), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
tmp=$(mktemp -d)
cat > "$tmp/regress.js" <<'EOF'
const log = [];
const watch = (name, promise) => promise.then(value => log.push(name + ':' + JSON.stringify(value)), error => log.push(name + 'err:' + error));
async function* delegated() { try { log.push('delegated:start'); const a = yield await Promise.resolve('one'); log.push('delegated:after-one:' + a); const b = yield await Promise.resolve('two'); log.push('delegated:after-two:' + b); } finally { log.push('delegated:finally'); const c = yield 'cleanup'; log.push('delegated:after-cleanup:' + c); } }
async function* outer() { log.push('outer:start'); yield* delegated(); log.push('outer:after'); }
async function delegatedReturnTwo() { const it = outer(); const p1 = it.next(); log.push('two:after-next1'); const p2 = it.next('sent1'); log.push('two:after-next2'); const p3 = it.return('done'); log.push('two:after-return'); const p4 = it.next('after'); log.push('two:after-next3'); watch('two:p1', p1); watch('two:p2', p2); watch('two:p3', p3); watch('two:p4', p4); await Promise.allSettled([p1, p2, p3, p4]); }
async function* catches() { try { log.push('catch:start'); yield await Promise.resolve('before-throw'); } catch (e) { log.push('catch:caught:' + e); const b = yield await Promise.resolve('recovered'); log.push('catch:after-recover:' + b); } }
async function throwRecovery() { const it = catches(); const p1 = it.next(); log.push('throw:after-next'); const p2 = it.throw('boom'); log.push('throw:after-throw'); const p3 = it.next('sent-after-throw'); log.push('throw:after-next2'); watch('throw:p1', p1); watch('throw:p2', p2); watch('throw:p3', p3); await Promise.allSettled([p1, p2, p3]); }
async function* source() { yield await Promise.resolve('loop-a'); yield await Promise.resolve('loop-b'); }
async function* forAwaitWrapper() { for await (const value of source()) { log.push('for-await:' + value); const sent = yield value; log.push('for-await:sent:' + sent); } }
async function forAwaitCase() { const it = forAwaitWrapper(); const p1 = it.next(); log.push('for:after-next1'); const p2 = it.next('loop-sent'); log.push('for:after-next2'); watch('for:p1', p1); watch('for:p2', p2); await Promise.allSettled([p1, p2]); }
(async () => { await delegatedReturnTwo(); await throwRecovery(); await forAwaitCase(); console.log(JSON.stringify(log)); })();
EOF
native=$(node "$tmp/regress.js")
go run ./cmd/esbuild "$tmp/regress.js" --bundle --target=es6 --format=cjs --outfile="$tmp/es6.js" >/dev/null
lowered=$(node "$tmp/es6.js")
printf 'match=%s\n' "$([ "$native" = "$lowered" ] && echo yes || echo no)"
rg -n "async function\*|for await|__asyncGenerator|__yieldStar|__forAwait" "$tmp/es6.js"Chunk ID: e4ae88
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 257
Output:
../tmp/tmp.61vNLFbhcC/es6.js 7.0kb
⚡ Done in 1ms
match=yes
29:var __asyncGenerator = (__this, __arguments, generator) => {
67:var __yieldStar = (value) => {
95:var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
101: return __asyncGenerator(this, null, function* () {
116: return __asyncGenerator(this, null, function* () {
118: yield* __yieldStar(delegated());
141: return __asyncGenerator(this, null, function* () {
168: return __asyncGenerator(this, null, function* () {
174: return __asyncGenerator(this, null, function* () {
176: for (var iter = __forAwait(source()), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
*** Begin Patch
*** Update File: /app/internal/runtime/runtime_test.go
@@
import (
+ "os/exec"
+ "strings"
"testing"
"[code-host]/evanw/esbuild/internal/compat"
"[code-host]/evanw/esbuild/internal/config"
"[code-host]/evanw/esbuild/internal/js_parser"
"[code-host]/evanw/esbuild/internal/logger"
"[code-host]/evanw/esbuild/internal/runtime"
+ "[code-host]/evanw/esbuild/pkg/api"
)
@@
func TestUnsupportedFeatures(t *testing.T) {
for key, feature := range compat.StringToJSFeature {
t.Run(key, func(t *testing.T) {
source := runtime.Source(feature)
@@
}
}
+
+func TestAsyncGeneratorConcurrentLoweringMatchesNode(t *testing.T) {
+ if _, err := exec.LookPath("node"); err != nil {
+ t.Skip("node not found")
+ }
+
+ source := `
+ const log = [];
+ const watch = (name, promise) => promise.then(
+ value => log.push(name + ':' + JSON.stringify(value)),
+ error => log.push(name + 'err:' + error)
+ );
+
+ async function* delegated() {
+ try {
+ log.push('delegated:start');
+ const a = yield await Promise.resolve('one');
+ log.push('delegated:after-one:' + a);
+ const b = yield await Promise.resolve('two');
+ log.push('delegated:after-two:' + b);
+ } finally {
+ log.push('delegated:finally');
+ const c = yield 'cleanup';
+ log.push('delegated:after-cleanup:' + c);
+ }
+ }
+ async function* outer() {
+ log.push('outer:start');
+ yield* delegated();
+ log.push('outer:after');
+ }
+
+ async function delegatedReturnOne() {
+ const it = outer();
+ const p1 = it.next(); log.push('one:after-next');
+ const p2 = it.return('done'); log.push('one:after-return');
+ watch('one:p1', p1); watch('one:p2', p2);
+ await Promise.allSettled([p1, p2]);
+ }
+
+ async function delegatedReturnTwo() {
+ const it = outer();
+ const p1 = it.next(); log.push('two:after-next1');
+ const p2 = it.next('sent1'); log.push('two:after-next2');
+ const p3 = it.return('done'); log.push('two:after-return');
+ const p4 = it.next('after'); log.push('two:after-next3');
+ watch('two:p1', p1); watch('two:p2', p2); watch('two:p3', p3); watch('two:p4', p4);
+ await Promise.allSettled([p1, p2, p3, p4]);
+ }
+
+ async function* catches() {
+ try {
+ log.push('catch:start');
+ const a = yield await Promise.resolve('before-throw');
+ log.push('catch:after-yield:' + a);
+ } catch (e) {
+ log.push('catch:caught:' + e);
+ const b = yield await Promise.resolve('recovered');
+ log.push('catch:after-recover:' + b);
+ }
+ }
+ async function throwRecovery() {
+ const it = catches();
+ const p1 = it.next(); log.push('throw:after-next');
+ const p2 = it.throw('boom'); log.push('throw:after-throw');
+ const p3 = it.next('sent-after-throw'); log.push('throw:after-next2');
+ watch('throw:p1', p1); watch('throw:p2', p2); watch('throw:p3', p3);
+ await Promise.allSettled([p1, p2, p3]);
+ }
+
+ async function* source() {
+ yield await Promise.resolve('loop-a');
+ yield await Promise.resolve('loop-b');
+ }
+ async function* forAwaitWrapper() {
+ for await (const value of source()) {
+ log.push('for-await:' + value);
+ const sent = yield value;
+ log.push('for-await:sent:' + sent);
+ }
+ }
+ async function forAwaitCase() {
+ const it = forAwaitWrapper();
+ const p1 = it.next(); log.push('for:after-next1');
+ const p2 = it.next('loop-sent'); log.push('for:after-next2');
+ watch('for:p1', p1); watch('for:p2', p2);
+ await Promise.allSettled([p1, p2]);
+ }
+
+ (async () => {
+ await delegatedReturnOne();
+ await delegatedReturnTwo();
+ await throwRecovery();
+ await forAwaitCase();
+ console.log(JSON.stringify(log));
+ })();
+ `
+
+ expected := runNodeForTest(t, source)
+ for _, target := range []api.Target{api.ES2017, api.ES6} {
+ result := api.Transform(source, api.TransformOptions{
+ Target: target,
+ Format: api.FormatCommonJS,
+ })
+ if len(result.Errors) > 0 {
+ t.Fatalf("transform failed: %v", result.Errors)
+ }
+ for _, helper := range []string{"__asyncGenerator", "__yieldStar", "__forAwait"} {
+ if !strings.Contains(result.Code, helper) {
+ t.Fatalf("expected %s in lowered output for target %v", helper, target)
+ }
+ }
+ for _, syntax := range []string{"async function*", "for await"} {
+ if strings.Contains(result.Code, syntax) {
+ t.Fatalf("unexpected %q in lowered output for target %v", syntax, target)
+ }
+ }
+ if actual := runNodeForTest(t, result.Code); actual != expected {
+ t.Fatalf("lowered output mismatch for target %v:\nwant %s\ngot %s", target, expected, actual)
+ }
+ }
+}
+
+func runNodeForTest(t *testing.T, source string) string {
+ t.Helper()
+ cmd := exec.Command("node")
+ cmd.Stdin = strings.NewReader(source)
+ output, err := cmd.CombinedOutput()
+ if err != nil {
+ t.Fatalf("node failed: %v\n%s", err, output)
+ }
+ return strings.TrimSpace(string(output))
+}
*** End Patch
Exit code: 0
Wall time: 0 seconds
Output:
Success. Updated the following files:
M /app/internal/runtime/runtime_test.go
gofmt -w internal/runtime/runtime_test.go internal/runtime/runtime.go
Chunk ID: 5507cb Wall time: 0.0000 seconds Process exited with code 0 Original token count: 0 Output:
sed -n '410,455p' internal/runtime/runtime.go
Chunk ID: 17d4b1
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 419
Output:
}
// These help for lowering async generator functions
export var __await = function (promise, isYieldStar) {
this[0] = promise
this[1] = isYieldStar
}
export var __asyncGenerator = (__this, __arguments, generator) => {
var resume = (k, v, yes, no, record) => {
try {
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
Promise.resolve(isAwait ? v[0] : v)
.then(y => isAwait
? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no, record)
: done ? (yes({ value: y, done }), record.resolveEarly(), record.resolveLate()) : (record.resolveEarly(), yes({ value: y, done }), record.resolveLate()))
.catch(e => {
try {
resume('throw', e, yes, no, record)
} catch (e) {
no(e)
record.resolveEarly()
record.resolveLate()
}
})
} catch (e) {
no(e)
record.resolveEarly()
record.resolveLate()
}
}, method = k => it[k] = x => {
var previous = queue, record = {}, promise = new Promise((yes, no) => {
record.early = new Promise(resolve => record.resolveEarly = () => {
record.resolveEarly = () => {}
resolve()
})
record.late = new Promise(resolve => record.resolveLate = () => {
record.done = true
record.resolveLate = () => {}
resolve()
})
var run = () => resume(k, x, yes, no, record)
previous && !previous.done ? (k === 'return' ? previous.late : previous.early).then(run, run) : run()
})
return queue = record, promise
}, queue, it = {}
return generator = generator.apply(__this, __arguments),
sed -n '1,220p' internal/runtime/runtime_test.go
Chunk ID: 1b6e92
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 1290
Output:
package runtime_test
import (
"os/exec"
"strings"
"testing"
"[code-host]/evanw/esbuild/internal/compat"
"[code-host]/evanw/esbuild/internal/config"
"[code-host]/evanw/esbuild/internal/js_parser"
"[code-host]/evanw/esbuild/internal/logger"
"[code-host]/evanw/esbuild/internal/runtime"
"[code-host]/evanw/esbuild/pkg/api"
)
func TestUnsupportedFeatures(t *testing.T) {
for key, feature := range compat.StringToJSFeature {
t.Run(key, func(t *testing.T) {
source := runtime.Source(feature)
log := logger.NewDeferLog(logger.DeferLogAll, nil)
js_parser.Parse(log, source, js_parser.OptionsFromConfig(&config.Options{
UnsupportedJSFeatures: feature,
TreeShaking: true,
}))
if log.HasErrors() {
msgs := "Internal error: failed to parse runtime:\n"
for _, msg := range log.Done() {
msgs += msg.String(logger.OutputOptions{IncludeSource: true}, logger.TerminalInfo{})
}
t.Fatal(msgs[:len(msgs)-1])
}
})
}
}
func TestAsyncGeneratorConcurrentLoweringMatchesNode(t *testing.T) {
if _, err := exec.LookPath("node"); err != nil {
t.Skip("node not found")
}
source := `
const log = [];
const watch = (name, promise) => promise.then(
value => log.push(name + ':' + JSON.stringify(value)),
error => log.push(name + 'err:' + error)
);
async function* delegated() {
try {
log.push('delegated:start');
const a = yield await Promise.resolve('one');
log.push('delegated:after-one:' + a);
const b = yield await Promise.resolve('two');
log.push('delegated:after-two:' + b);
} finally {
log.push('delegated:finally');
const c = yield 'cleanup';
log.push('delegated:after-cleanup:' + c);
}
}
async function* outer() {
log.push('outer:start');
yield* delegated();
log.push('outer:after');
}
async function delegatedReturnOne() {
const it = outer();
const p1 = it.next(); log.push('one:after-next');
const p2 = it.return('done'); log.push('one:after-return');
watch('one:p1', p1); watch('one:p2', p2);
await Promise.allSettled([p1, p2]);
}
async function delegatedReturnTwo() {
const it = outer();
const p1 = it.next(); log.push('two:after-next1');
const p2 = it.next('sent1'); log.push('two:after-next2');
const p3 = it.return('done'); log.push('two:after-return');
const p4 = it.next('after'); log.push('two:after-next3');
watch('two:p1', p1); watch('two:p2', p2); watch('two:p3', p3); watch('two:p4', p4);
await Promise.allSettled([p1, p2, p3, p4]);
}
async function* catches() {
try {
log.push('catch:start');
const a = yield await Promise.resolve('before-throw');
log.push('catch:after-yield:' + a);
} catch (e) {
log.push('catch:caught:' + e);
const b = yield await Promise.resolve('recovered');
log.push('catch:after-recover:' + b);
}
}
async function throwRecovery() {
const it = catches();
const p1 = it.next(); log.push('throw:after-next');
const p2 = it.throw('boom'); log.push('throw:after-throw');
const p3 = it.next('sent-after-throw'); log.push('throw:after-next2');
watch('throw:p1', p1); watch('throw:p2', p2); watch('throw:p3', p3);
await Promise.allSettled([p1, p2, p3]);
}
async function* source() {
yield await Promise.resolve('loop-a');
yield await Promise.resolve('loop-b');
}
async function* forAwaitWrapper() {
for await (const value of source()) {
log.push('for-await:' + value);
const sent = yield value;
log.push('for-await:sent:' + sent);
}
}
async function forAwaitCase() {
const it = forAwaitWrapper();
const p1 = it.next(); log.push('for:after-next1');
const p2 = it.next('loop-sent'); log.push('for:after-next2');
watch('for:p1', p1); watch('for:p2', p2);
await Promise.allSettled([p1, p2]);
}
(async () => {
await delegatedReturnOne();
await delegatedReturnTwo();
await throwRecovery();
await forAwaitCase();
console.log(JSON.stringify(log));
})();
`
expected := runNodeForTest(t, source)
for _, target := range []api.Target{api.ES2017, api.ES6} {
result := api.Transform(source, api.TransformOptions{
Target: target,
Format: api.FormatCommonJS,
})
if len(result.Errors) > 0 {
t.Fatalf("transform failed: %v", result.Errors)
}
for _, helper := range []string{"__asyncGenerator", "__yieldStar", "__forAwait"} {
if !strings.Contains(result.Code, helper) {
t.Fatalf("expected %s in lowered output for target %v", helper, target)
}
}
for _, syntax := range []string{"async function*", "for await"} {
if strings.Contains(result.Code, syntax) {
t.Fatalf("unexpected %q in lowered output for target %v", syntax, target)
}
}
if actual := runNodeForTest(t, result.Code); actual != expected {
t.Fatalf("lowered output mismatch for target %v:\nwant %s\ngot %s", target, expected, actual)
}
}
}
func runNodeForTest(t *testing.T, source string) string {
t.Helper()
cmd := exec.Command("node")
cmd.Stdin = strings.NewReader(source)
output, err := cmd.CombinedOutput()
if err != nil {
t.Fatalf("node failed: %v\n%s", err, output)
}
return strings.TrimSpace(string(output))
}
go test ./internal/runtime -run 'TestUnsupportedFeatures|TestAsyncGeneratorConcurrentLoweringMatchesNode'
Chunk ID: ee1b6d Wall time: 0.4154 seconds Process exited with code 1 Original token count: 160 Output: # [code-host]/evanw/esbuild/internal/runtime_test [[code-host]/evanw/esbuild/internal/runtime.test] internal/runtime/runtime_test.go:136:54: undefined: api.ES6 internal/runtime/runtime_test.go:145:25: cannot use result.Code (variable of type []byte) as string value in argument to strings.Contains internal/runtime/runtime_test.go:150:24: cannot use result.Code (variable of type []byte) as string value in argument to strings.Contains internal/runtime/runtime_test.go:154:34: cannot use result.Code (variable of type []byte) as string value in argument to runNodeForTest FAIL [code-host]/evanw/esbuild/internal/runtime [build failed] FAIL
sed -n '455,485p' internal/runtime/runtime.go
Chunk ID: f79e54
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 207
Output:
return generator = generator.apply(__this, __arguments),
it[__knownSymbol('asyncIterator')] = () => it,
method('next'),
method('throw'),
method('return'),
it
}
export var __yieldStar = value => {
var obj = value[__knownSymbol('asyncIterator')], isAwait = false, method, it = {}
if (obj == null) {
obj = value[__knownSymbol('iterator')]()
method = k => it[k] = x => obj[k](x)
} else {
obj = obj.call(value)
method = k => it[k] = v => {
if (isAwait) {
isAwait = false
if (k === 'throw') throw v
return v
}
isAwait = true
return {
done: false,
value: new __await(new Promise(resolve => {
var x = obj[k](v)
if (!(x instanceof Object)) __typeError('Object expected')
resolve(x)
}), 1),
}
}
}
sed -n '110,135p' pkg/api/api.go
Chunk ID: 70210f Wall time: 0.0000 seconds Process exited with code 0 Original token count: 62 Output: LegalCommentsExternal ) type JSX uint8 const ( JSXTransform JSX = iota JSXPreserve JSXAutomatic ) type Target uint8 const ( DefaultTarget Target = iota ESNext ES5 ES2015 ES2016 ES2017 ES2018 ES2019 ES2020 ES2021 ES2022 ES2023
*** Begin Patch
*** Update File: /app/internal/runtime/runtime_test.go
@@
- for _, target := range []api.Target{api.ES2017, api.ES6} {
+ for _, target := range []api.Target{api.ES2017, api.ES2015} {
result := api.Transform(source, api.TransformOptions{
Target: target,
Format: api.FormatCommonJS,
})
if len(result.Errors) > 0 {
t.Fatalf("transform failed: %v", result.Errors)
}
+ code := string(result.Code)
for _, helper := range []string{"__asyncGenerator", "__yieldStar", "__forAwait"} {
- if !strings.Contains(result.Code, helper) {
+ if !strings.Contains(code, helper) {
t.Fatalf("expected %s in lowered output for target %v", helper, target)
}
}
for _, syntax := range []string{"async function*", "for await"} {
- if strings.Contains(result.Code, syntax) {
+ if strings.Contains(code, syntax) {
t.Fatalf("unexpected %q in lowered output for target %v", syntax, target)
}
}
- if actual := runNodeForTest(t, result.Code); actual != expected {
+ if actual := runNodeForTest(t, code); actual != expected {
t.Fatalf("lowered output mismatch for target %v:\nwant %s\ngot %s", target, expected, actual)
}
}
}
*** End Patch
Exit code: 0
Wall time: 0 seconds
Output:
Success. Updated the following files:
M /app/internal/runtime/runtime_test.go
gofmt -w internal/runtime/runtime_test.go
Chunk ID: a61f9f Wall time: 0.0000 seconds Process exited with code 0 Original token count: 0 Output:
go test ./internal/runtime -run 'TestUnsupportedFeatures|TestAsyncGeneratorConcurrentLoweringMatchesNode'
Chunk ID: e3e84a Wall time: 0.0995 seconds Process exited with code 0 Original token count: 14 Output: ok [code-host]/evanw/esbuild/internal/runtime 0.081s
go build ./cmd/...
Chunk ID: 58d89b Wall time: 0.2118 seconds Process exited with code 0 Original token count: 0 Output:
go test ./internal/bundler_tests -run 'TestLowerAsyncGenerator'
Chunk ID: 4c2242
Wall time: 0.5040 seconds
Process exited with code 1
Original token count: 1339
Output:
PASS
snapshots/snapshots_lower.txt
No test found for snapshot TestTSLowerPrivateStaticMembers2015NoBundle
No test found for snapshot TestForAwaitWithOptionalCatchIssue4378
No test found for snapshot TestLowerPrivateFieldAssignments2015NoBundle
No test found for snapshot TestLowerPrivateFieldOptionalChain2019NoBundle
No test found for snapshot TestLowerStrictModeSyntax
No test found for snapshot TestLowerAsyncArrowSuperSetterES2016
No test found for snapshot TestLowerPrivateClassStaticAccessorOrder
No test found for snapshot TestLowerPrivateClassStaticFieldOrder
No test found for snapshot TestLowerPrivateSuperStaticBundleIssue2158
No test found for snapshot TestLowerStaticAsyncSuperES2016NoBundle
No test found for snapshot TestTSLowerPrivateFieldAndMethodAvoidNameCollision2015
No test found for snapshot TestLowerAsync2016NoBundle
No test found for snapshot TestLowerPrivateMethod2019
No test found for snapshot TestLowerPrivateMethodWithModifiers2020
No test found for snapshot TestLowerStaticAsyncArrowSuperSetterES2016
No test found for snapshot TestLowerUsingUnsupportedUsingAndAsync
No test found for snapshot TestStaticClassBlockES2021
No test found for snapshot TestLowerPrivateClassAccessorOrder
No test found for snapshot TestLowerAsyncThis2016CommonJS
No test found for snapshot TestLowerPrivateClassStaticMethodOrder
No test found for snapshot TestLowerPrivateFieldAssignments2019NoBundle
No test found for snapshot TestLowerPrivateGetterSetterNext
No test found for snapshot TestLowerClassField2020NoBundle
No test found for snapshot TestLowerForAwait2017
No test found for snapshot TestLowerPrivateClassFieldStaticIssue1424
No test found for snapshot TestLowerPrivateGetterSetter2015
No test found for snapshot TestLowerPrivateSuperES2022
No test found for snapshot TestLowerUsing
No test found for snapshot TestTSLowerPrivateFieldOptionalChain2015NoBundle
No test found for snapshot TestLowerExportStarAsNameCollisionNoBundle
No test found for snapshot TestLowerStaticAsyncSuperES2021NoBundle
No test found for snapshot TestJavaScriptAutoAccessorESNext
No test found for snapshot TestLowerAsync2017NoBundle
No test found for snapshot TestLowerAsyncThis2016ES6
No test found for snapshot TestLowerPrivateClassExpr2020NoBundle
No test found for snapshot TestLowerStaticSuperES2016NoBundle
No test found for snapshot TestLowerPrivateGetterSetter2019
No test found for snapshot TestJavaScriptAutoAccessorES2022
No test found for snapshot TestJavaScriptDecoratorsESNext
No test found for snapshot TestLowerAsyncSuperES2016NoBundle
No test found for snapshot TestLowerExportStarAsNameCollision
No test found for snapshot TestLowerPrivateFieldOptionalChain2020NoBundle
No test found for snapshot TestStaticClassBlockESNext
No test found for snapshot TestJavaScriptDecoratorsBundleIssue3768
No test found for snapshot TestLowerForAwait2015
No test found for snapshot TestLowerPrivateClassMethodOrder
No test found for snapshot TestLowerPrivateFieldAssignments2020NoBundle
No test found for snapshot TestLowerPrivateFieldOptionalChainNextNoBundle
No test found for snapshot TestLowerRegExpNameCollision
No test found for snapshot TestLowerStaticAsyncArrowSuperES2016
No test found for snapshot TestLowerTemplateObject
No test found for snapshot TestLowerPrivateGetterSetter2020
No test found for snapshot TestLowerPrivateMethod2020
No test found for snapshot TestLowerStaticSuperES2021NoBundle
No test found for snapshot TestTSLowerClassFieldStrictTsconfigJson2020
No test found for snapshot TestJavaScriptAutoAccessorES2021
No test found for snapshot TestLowerClassFieldNextNoBundle
No test found for snapshot TestLowerNestedFunctionDirectEval
No test found for snapshot TestLowerPrivateFieldAssignmentsNextNoBundle
No test found for snapshot TestLowerPrivateSuperES2021
No test found for snapshot TestLowerUsingHoisting
No test found for snapshot TestLowerNullishCoalescingAssignmentIssue1493
No test found for snapshot TestTSLowerClassField2020NoBundle
No test found for snapshot TestLowerAsyncArrowSuperES2016
No test found for snapshot TestLowerAsyncSuperES2017NoBundle
No test found for snapshot TestLowerPrivateClassBrandCheckSupported
No test found for snapshot TestLowerPrivateClassBrandCheckUnsupported
No test found for snapshot TestLowerPrivateClassFieldOrder
No test found for snapshot TestLowerPrivateMethodNext
No test found for snapshot TestLowerUsingUnsupportedAsync
No test found for snapshot TestTSLowerObjectRest2017NoBundle
No test found for snapshot TestLowerClassFieldStrictTsconfigJson2020
No test found for snapshot TestLowerOptionalCatchNameCollisionNoBundle
No test found for snapshot TestTSLowerClassPrivateFieldNextNoBundle
No test found for snapshot TestTSLowerObjectRest2018NoBundle
No test found for snapshot TestClassSuperThisIssue242NoBundle
No test found for snapshot TestLowerExponentiationOperatorNoBundle
No test found for snapshot TestLowerObjectSpreadNoBundle
No test found for snapshot TestLowerUsingInsideTSNamespace
FAIL [code-host]/evanw/esbuild/internal/bundler_tests 0.005s
FAIL
go test ./pkg/api -run 'TestTransform|TestBuild'
Chunk ID: a046c7 Wall time: 0.3697 seconds Process exited with code 0 Original token count: 16 Output: ok [code-host]/evanw/esbuild/pkg/api 0.002s [no tests to run]
go test ./internal/bundler_tests
Chunk ID: 547d59 Wall time: 0.6661 seconds Process exited with code 0 Original token count: 15 Output: ok [code-host]/evanw/esbuild/internal/bundler_tests 0.612s
go test ./internal/runtime
Chunk ID: cf3774 Wall time: 0.1112 seconds Process exited with code 0 Original token count: 14 Output: ok [code-host]/evanw/esbuild/internal/runtime 0.084s
go test ./...
Chunk ID: 07112b Wall time: 2.1662 seconds Process exited with code 0 Original token count: 437 Output: ? [code-host]/evanw/esbuild/cmd/esbuild [no test files] ? [code-host]/evanw/esbuild/internal/api_helpers [no test files] ? [code-host]/evanw/esbuild/internal/ast [no test files] ? [code-host]/evanw/esbuild/internal/bundler [no test files] ok [code-host]/evanw/esbuild/internal/bundler_tests (cached) ? [code-host]/evanw/esbuild/internal/cache [no test files] ? [code-host]/evanw/esbuild/internal/cli_helpers [no test files] ok [code-host]/evanw/esbuild/internal/compat 0.001s ? [code-host]/evanw/esbuild/internal/config [no test files] ? [code-host]/evanw/esbuild/internal/css_ast [no test files] ok [code-host]/evanw/esbuild/internal/css_lexer 0.001s ok [code-host]/evanw/esbuild/internal/css_parser 0.027s ok [code-host]/evanw/esbuild/internal/css_printer 0.003s ok [code-host]/evanw/esbuild/internal/fs 0.001s ? [code-host]/evanw/esbuild/internal/graph [no test files] ok [code-host]/evanw/esbuild/internal/helpers 0.001s ok [code-host]/evanw/esbuild/internal/js_ast 0.001s ok [code-host]/evanw/esbuild/internal/js_lexer 0.022s ok [code-host]/evanw/esbuild/internal/js_parser 0.131s ok [code-host]/evanw/esbuild/internal/js_printer 0.022s ? [code-host]/evanw/esbuild/internal/linker [no test files] ok [code-host]/evanw/esbuild/internal/logger 0.001s ? [code-host]/evanw/esbuild/internal/renamer [no test files] ok [code-host]/evanw/esbuild/internal/resolver 0.001s ok [code-host]/evanw/esbuild/internal/runtime (cached) ? [code-host]/evanw/esbuild/internal/sourcemap [no test files] ? [code-host]/evanw/esbuild/internal/test [no test files] ? [code-host]/evanw/esbuild/internal/xxhash [no test files] ok [code-host]/evanw/esbuild/pkg/api 0.001s ? [code-host]/evanw/esbuild/pkg/cli [no test files]
nl -ba internal/runtime/runtime.go | sed -n '412,456p'
Chunk ID: 944168
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 509
Output:
412 // These help for lowering async generator functions
413 export var __await = function (promise, isYieldStar) {
414 this[0] = promise
415 this[1] = isYieldStar
416 }
417 export var __asyncGenerator = (__this, __arguments, generator) => {
418 var resume = (k, v, yes, no, record) => {
419 try {
420 var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done
421 Promise.resolve(isAwait ? v[0] : v)
422 .then(y => isAwait
423 ? resume(k === 'return' ? k : 'next', v[1] ? { done: y.done, value: y.value } : y, yes, no, record)
424 : done ? (yes({ value: y, done }), record.resolveEarly(), record.resolveLate()) : (record.resolveEarly(), yes({ value: y, done }), record.resolveLate()))
425 .catch(e => {
426 try {
427 resume('throw', e, yes, no, record)
428 } catch (e) {
429 no(e)
430 record.resolveEarly()
431 record.resolveLate()
432 }
433 })
434 } catch (e) {
435 no(e)
436 record.resolveEarly()
437 record.resolveLate()
438 }
439 }, method = k => it[k] = x => {
440 var previous = queue, record = {}, promise = new Promise((yes, no) => {
441 record.early = new Promise(resolve => record.resolveEarly = () => {
442 record.resolveEarly = () => {}
443 resolve()
444 })
445 record.late = new Promise(resolve => record.resolveLate = () => {
446 record.done = true
447 record.resolveLate = () => {}
448 resolve()
449 })
450 var run = () => resume(k, x, yes, no, record)
451 previous && !previous.done ? (k === 'return' ? previous.late : previous.early).then(run, run) : run()
452 })
453 return queue = record, promise
454 }, queue, it = {}
455 return generator = generator.apply(__this, __arguments),
456 it[__knownSymbol('asyncIterator')] = () => it,
nl -ba internal/runtime/runtime_test.go | sed -n '1,180p'
Chunk ID: 31255e
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 1591
Output:
1 package runtime_test
2
3 import (
4 "os/exec"
5 "strings"
6 "testing"
7
8 "[code-host]/evanw/esbuild/internal/compat"
9 "[code-host]/evanw/esbuild/internal/config"
10 "[code-host]/evanw/esbuild/internal/js_parser"
11 "[code-host]/evanw/esbuild/internal/logger"
12 "[code-host]/evanw/esbuild/internal/runtime"
13 "[code-host]/evanw/esbuild/pkg/api"
14 )
15
16 func TestUnsupportedFeatures(t *testing.T) {
17 for key, feature := range compat.StringToJSFeature {
18 t.Run(key, func(t *testing.T) {
19 source := runtime.Source(feature)
20 log := logger.NewDeferLog(logger.DeferLogAll, nil)
21
22 js_parser.Parse(log, source, js_parser.OptionsFromConfig(&config.Options{
23 UnsupportedJSFeatures: feature,
24 TreeShaking: true,
25 }))
26
27 if log.HasErrors() {
28 msgs := "Internal error: failed to parse runtime:\n"
29 for _, msg := range log.Done() {
30 msgs += msg.String(logger.OutputOptions{IncludeSource: true}, logger.TerminalInfo{})
31 }
32 t.Fatal(msgs[:len(msgs)-1])
33 }
34 })
35 }
36 }
37
38 func TestAsyncGeneratorConcurrentLoweringMatchesNode(t *testing.T) {
39 if _, err := exec.LookPath("node"); err != nil {
40 t.Skip("node not found")
41 }
42
43 source := `
44 const log = [];
45 const watch = (name, promise) => promise.then(
46 value => log.push(name + ':' + JSON.stringify(value)),
47 error => log.push(name + 'err:' + error)
48 );
49
50 async function* delegated() {
51 try {
52 log.push('delegated:start');
53 const a = yield await Promise.resolve('one');
54 log.push('delegated:after-one:' + a);
55 const b = yield await Promise.resolve('two');
56 log.push('delegated:after-two:' + b);
57 } finally {
58 log.push('delegated:finally');
59 const c = yield 'cleanup';
60 log.push('delegated:after-cleanup:' + c);
61 }
62 }
63 async function* outer() {
64 log.push('outer:start');
65 yield* delegated();
66 log.push('outer:after');
67 }
68
69 async function delegatedReturnOne() {
70 const it = outer();
71 const p1 = it.next(); log.push('one:after-next');
72 const p2 = it.return('done'); log.push('one:after-return');
73 watch('one:p1', p1); watch('one:p2', p2);
74 await Promise.allSettled([p1, p2]);
75 }
76
77 async function delegatedReturnTwo() {
78 const it = outer();
79 const p1 = it.next(); log.push('two:after-next1');
80 const p2 = it.next('sent1'); log.push('two:after-next2');
81 const p3 = it.return('done'); log.push('two:after-return');
82 const p4 = it.next('after'); log.push('two:after-next3');
83 watch('two:p1', p1); watch('two:p2', p2); watch('two:p3', p3); watch('two:p4', p4);
84 await Promise.allSettled([p1, p2, p3, p4]);
85 }
86
87 async function* catches() {
88 try {
89 log.push('catch:start');
90 const a = yield await Promise.resolve('before-throw');
91 log.push('catch:after-yield:' + a);
92 } catch (e) {
93 log.push('catch:caught:' + e);
94 const b = yield await Promise.resolve('recovered');
95 log.push('catch:after-recover:' + b);
96 }
97 }
98 async function throwRecovery() {
99 const it = catches();
100 const p1 = it.next(); log.push('throw:after-next');
101 const p2 = it.throw('boom'); log.push('throw:after-throw');
102 const p3 = it.next('sent-after-throw'); log.push('throw:after-next2');
103 watch('throw:p1', p1); watch('throw:p2', p2); watch('throw:p3', p3);
104 await Promise.allSettled([p1, p2, p3]);
105 }
106
107 async function* source() {
108 yield await Promise.resolve('loop-a');
109 yield await Promise.resolve('loop-b');
110 }
111 async function* forAwaitWrapper() {
112 for await (const value of source()) {
113 log.push('for-await:' + value);
114 const sent = yield value;
115 log.push('for-await:sent:' + sent);
116 }
117 }
118 async function forAwaitCase() {
119 const it = forAwaitWrapper();
120 const p1 = it.next(); log.push('for:after-next1');
121 const p2 = it.next('loop-sent'); log.push('for:after-next2');
122 watch('for:p1', p1); watch('for:p2', p2);
123 await Promise.allSettled([p1, p2]);
124 }
125
126 (async () => {
127 await delegatedReturnOne();
128 await delegatedReturnTwo();
129 await throwRecovery();
130 await forAwaitCase();
131 console.log(JSON.stringify(log));
132 })();
133 `
134
135 expected := runNodeForTest(t, source)
136 for _, target := range []api.Target{api.ES2017, api.ES2015} {
137 result := api.Transform(source, api.TransformOptions{
138 Target: target,
139 Format: api.FormatCommonJS,
140 })
141 if len(result.Errors) > 0 {
142 t.Fatalf("transform failed: %v", result.Errors)
143 }
144 code := string(result.Code)
145 for _, helper := range []string{"__asyncGenerator", "__yieldStar", "__forAwait"} {
146 if !strings.Contains(code, helper) {
147 t.Fatalf("expected %s in lowered output for target %v", helper, target)
148 }
149 }
150 for _, syntax := range []string{"async function*", "for await"} {
151 if strings.Contains(code, syntax) {
152 t.Fatalf("unexpected %q in lowered output for target %v", syntax, target)
153 }
154 }
155 if actual := runNodeForTest(t, code); actual != expected {
156 t.Fatalf("lowered output mismatch for target %v:\nwant %s\ngot %s", target, expected, actual)
157 }
158 }
159 }
160
161 func runNodeForTest(t *testing.T, source string) string {
162 t.Helper()
163 cmd := exec.Command("node")
164 cmd.Stdin = strings.NewReader(source)
165 output, err := cmd.CombinedOutput()
166 if err != nil {
167 t.Fatalf("node failed: %v\n%s", err, output)
168 }
169 return strings.TrimSpace(string(output))
170 }
No file changes, the agent left the workspace untouched.
============================= test session starts ============================== platform linux -- Python 3.11.2, pytest-8.3.3, pluggy-1.6.0 -- /opt/test-venv/bin/python3 cachedir: .pytest_cache rootdir: /tests collecting ... collected 6 items ../tests/test_outputs.py::test_async_generator_lowering_matches_native PASSED [ 16%] ../tests/test_outputs.py::test_bundled_output_uses_lowered_async_generator_helpers PASSED [ 33%] ../tests/test_outputs.py::test_case_roster_actually_ran PASSED [ 50%] ../tests/test_outputs.py::test_output_is_json_trace PASSED [ 66%] ../tests/test_outputs.py::test_async_generator_compatibility_targets_still_require_lowering PASSED [ 83%] ../tests/test_outputs.py::test_no_hardcoded_hidden_literals PASSED [100%] ==================================== PASSES ==================================== =========================== short test summary info ============================ PASSED ../tests/test_outputs.py::test_async_generator_lowering_matches_native PASSED ../tests/test_outputs.py::test_bundled_output_uses_lowered_async_generator_helpers PASSED ../tests/test_outputs.py::test_case_roster_actually_ran PASSED ../tests/test_outputs.py::test_output_is_json_trace PASSED ../tests/test_outputs.py::test_async_generator_compatibility_targets_still_require_lowering PASSED ../tests/test_outputs.py::test_no_hardcoded_hidden_literals ============================== 6 passed in 3.34s ===============================
Reproduce this trial: git checkout 2f94510 && PYTHONPATH=src python3 scripts/build_site.py , then open trial/trial_8f956e5fb69542ff. Re-running the agent live requires EVAL_PLATFORM_ENABLE_OAUTH_SMOKE=1 and is non-deterministic.
Trial trial_8f956e5fb69542ff · verifier authoritative; classifier explanatory.