TestExportTypeIssue379
---------- /out.js ----------
// a.ts
var a_exports = {};
__export(a_exports, {
  foo: () => foo
});
var foo = 123;

// b.ts
var b_exports = {};
__export(b_exports, {
  foo: () => foo2
});
var foo2 = 123;

// c.ts
var c_exports = {};
__export(c_exports, {
  foo: () => foo3
});
var foo3 = 123;

// d.ts
var d_exports = {};
__export(d_exports, {
  foo: () => foo4
});
var foo4 = 123;

// entry.ts
console.log(a_exports, b_exports, c_exports, d_exports);

================================================================================
TestTSDeclareClass
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareConst
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareConstEnum
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareEnum
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareFunction
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareLet
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareNamespace
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSDeclareVar
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSExportDefaultTypeIssue316
---------- /out.js ----------
// keep/declare-class.ts
var declare_class_default = foo;
var bar = 123;

// keep/declare-let.ts
var declare_let_default = foo;
var bar2 = 123;

// keep/interface-merged.ts
var foo3 = class {
};
var foo2 = foo3;
foo2.x = new foo3();
var bar3 = 123;

// keep/interface-nested.ts
if (true) {
}
var interface_nested_default = foo;
var bar4 = 123;

// keep/type-nested.ts
if (true) {
}
var type_nested_default = foo;
var bar5 = 123;

// keep/value-namespace.ts
var foo4;
(function(foo6) {
  foo6.num = 0;
})(foo4 || (foo4 = {}));
var bar6 = 123;

// keep/value-namespace-merged.ts
var foo5;
(function(foo6) {
  foo6.num = 0;
})(foo5 || (foo5 = {}));
var bar7 = 123;

// remove/interface.ts
var bar8 = 123;

// remove/interface-exported.ts
var bar9 = 123;

// remove/type.ts
var bar10 = 123;

// remove/type-exported.ts
var bar11 = 123;

// remove/type-only-namespace.ts
var bar12 = 123;

// remove/type-only-namespace-exported.ts
var bar13 = 123;

// entry.ts
var entry_default = [
  bar,
  bar2,
  bar3,
  bar4,
  bar5,
  bar6,
  bar7,
  bar8,
  bar9,
  bar10,
  bar11,
  bar12,
  bar13
];
export {
  entry_default as default
};

================================================================================
TestTSExportEquals
---------- /out.js ----------
// b.ts
var require_b = __commonJS((exports, module) => {
  function foo() {
  }
  module.exports = [123, foo];
});

// a.ts
var import_b = __toModule(require_b());
console.log(import_b.default);

================================================================================
TestTSExportMissingES6
---------- /out.js ----------
// foo.ts
var foo_exports = {};

// entry.js
console.log(foo_exports);

================================================================================
TestTSExportNamespace
---------- /out.js ----------
// b.ts
var Foo = class {
};
(function(Foo2) {
  Foo2.foo = 1;
})(Foo || (Foo = {}));
(function(Foo2) {
  Foo2.bar = 2;
})(Foo || (Foo = {}));

// a.ts
console.log(new Foo());

================================================================================
TestTSImplicitExtensions
---------- /out.js ----------
// pick-js.js
console.log("correct");

// pick-ts.ts
console.log("correct");

// pick-jsx.jsx
console.log("correct");

// pick-tsx.tsx
console.log("correct");

// order-js.ts
console.log("correct");

// order-jsx.ts
console.log("correct");

================================================================================
TestTSImportEmptyNamespace
---------- /out.js ----------
// entry.ts
function foo() {
}
foo();

================================================================================
TestTSImportMissingUnusedES6
---------- /out.js ----------

================================================================================
TestTSImportTypeOnlyFile
---------- /out.js ----------
// entry.ts
var foo = bar();

================================================================================
TestTSImportVsLocalCollisionAllTypes
---------- /out.js ----------
// entry.ts
var a;
var b = 0;
var c;
function d() {
}
var e = class {
};
console.log(a, b, c, d, e);

================================================================================
TestTSImportVsLocalCollisionMixed
---------- /out.js ----------
// other.ts
var real = 123;

// entry.ts
var a;
var b = 0;
var c;
function d() {
}
var e = class {
};
console.log(a, b, c, d, e, real);

================================================================================
TestTSMinifiedBundleCommonJS
---------- /out.js ----------
var n=e(r=>{r.foo=function(){return 123}}),u=e((j,t)=>{t.exports={test:!0}}),{foo:c}=n();console.log(c(),u());

================================================================================
TestTSMinifiedBundleES6
---------- /out.js ----------
function o(){return 123}console.log(o());

================================================================================
TestTSMinifyDerivedClass
---------- /out.js ----------
class Foo extends Bar {
  constructor() {
    super();
    this.foo = 1;
    this.bar = 2;
    foo(), bar();
  }
}

================================================================================
TestTSMinifyEnum
---------- /a.js ----------
var Foo;(function(e){e[e.A=0]="A",e[e.B=1]="B",e[e.C=e]="C"})(Foo||(Foo={}));

---------- /b.js ----------
export var Foo;(function(e){e[e.X=0]="X",e[e.Y=1]="Y",e[e.Z=e]="Z"})(Foo||(Foo={}));

================================================================================
TestTSMinifyNamespace
---------- /a.js ----------
var Foo;(function(e){let a;(function(p){foo(e,p)})(a=e.Bar||(e.Bar={}))})(Foo||(Foo={}));

---------- /b.js ----------
export var Foo;(function(e){let a;(function(p){foo(e,p)})(a=e.Bar||(e.Bar={}))})(Foo||(Foo={}));

================================================================================
TestTypeScriptDecorators
---------- /out.js ----------
// all.ts
var Foo = class {
  constructor() {
    this.mDef = 1;
  }
  method(arg0, arg1) {
    return new Foo();
  }
  static sMethod(arg0, arg1) {
    return new Foo();
  }
};
Foo.sDef = new Foo();
__decorate([
  x,
  y
], Foo.prototype, "mUndef", 2);
__decorate([
  x,
  y
], Foo.prototype, "mDef", 2);
__decorate([
  x,
  y,
  __param(0, x0),
  __param(0, y0),
  __param(1, x1),
  __param(1, y1)
], Foo.prototype, "method", 1);
__decorate([
  x,
  y
], Foo, "sUndef", 2);
__decorate([
  x,
  y
], Foo, "sDef", 2);
__decorate([
  x,
  y,
  __param(0, x0),
  __param(0, y0),
  __param(1, x1),
  __param(1, y1)
], Foo, "sMethod", 1);
Foo = __decorate([
  x.y(),
  new y.x()
], Foo);
var all_default = Foo;

// all_computed.ts
var _a, _b, _c, _d, _e, _f, _g, _h;
var Foo2 = class {
  constructor() {
    this[_b] = 1;
    this[_d] = 2;
  }
  [(_a = mUndef(), _b = mDef(), _c = method())](arg0, arg1) {
    return new Foo2();
  }
  static [(xUndef(), _d = xDef(), yUndef(), _e = yDef(), _f = sUndef(), _g = sDef(), _h = sMethod())](arg0, arg1) {
    return new Foo2();
  }
};
Foo2[_e] = 3;
Foo2[_g] = new Foo2();
__decorate([
  x,
  y
], Foo2.prototype, _a, 2);
__decorate([
  x,
  y
], Foo2.prototype, _b, 2);
__decorate([
  x,
  y,
  __param(0, x0),
  __param(0, y0),
  __param(1, x1),
  __param(1, y1)
], Foo2.prototype, _c, 1);
__decorate([
  x,
  y
], Foo2, _f, 2);
__decorate([
  x,
  y
], Foo2, _g, 2);
__decorate([
  x,
  y,
  __param(0, x0),
  __param(0, y0),
  __param(1, x1),
  __param(1, y1)
], Foo2, _h, 1);
Foo2 = __decorate([
  x?.[_ + "y"](),
  new y?.[_ + "x"]()
], Foo2);
var all_computed_default = Foo2;

// a.ts
var a_class = class {
  fn() {
    return new a_class();
  }
};
a_class.z = new a_class();
a_class = __decorate([
  x(() => 0),
  y(() => 1)
], a_class);
var a = a_class;

// b.ts
var b_class = class {
  fn() {
    return new b_class();
  }
};
b_class.z = new b_class();
b_class = __decorate([
  x(() => 0),
  y(() => 1)
], b_class);
var b = b_class;

// c.ts
var c = class {
  fn() {
    return new c();
  }
};
c.z = new c();
c = __decorate([
  x(() => 0),
  y(() => 1)
], c);

// d.ts
var d = class {
  fn() {
    return new d();
  }
};
d.z = new d();
d = __decorate([
  x(() => 0),
  y(() => 1)
], d);

// e.ts
var e_default = class {
};
e_default = __decorate([
  x(() => 0),
  y(() => 1)
], e_default);
var e_default2 = e_default;

// f.ts
var f = class {
  fn() {
    return new f();
  }
};
f.z = new f();
f = __decorate([
  x(() => 0),
  y(() => 1)
], f);
var f_default = f;

// g.ts
var g_default = class {
};
g_default = __decorate([
  x(() => 0),
  y(() => 1)
], g_default);
var g_default2 = g_default;

// h.ts
var h = class {
  fn() {
    return new h();
  }
};
h.z = new h();
h = __decorate([
  x(() => 0),
  y(() => 1)
], h);
var h_default = h;

// i.ts
var i_class = class {
};
__decorate([
  x(() => 0),
  y(() => 1)
], i_class.prototype, "foo", 2);
var i = i_class;

// j.ts
var j = class {
  foo() {
  }
};
__decorate([
  x(() => 0),
  y(() => 1)
], j.prototype, "foo", 1);

// k.ts
var k_default = class {
  foo(x2) {
  }
};
__decorate([
  __param(0, x2(() => 0)),
  __param(0, y(() => 1))
], k_default.prototype, "foo", 1);
var k_default2 = k_default;

// entry.js
console.log(all_default, all_computed_default, a, b, c, d, e_default2, f_default, g_default2, h_default, i, j, k_default2);
