Note: This borrows a lot from TypeScript.
Input
namespace MyNamespace {
function nonMember() {}
export class Member {
methodA() {
nonMember(true);
}
methodB() {
nonMember(false);
}
}
}
Output
const MyNamespace = {};
(() => {
function nonMember() {}
MyNamespace.Member = class Member {
methodA() {
nonMember(true);
}
methodB() {
nonMember(false);
}
};
}());
Input
namespace MyNamespace {
export class Foo {}
}
namespace MyNamespace {
export class Bar {}
}
Output
const MyNamespace = {};
(() => {
MyNamespace.Foo = class Foo {};
}());
(() => {
MyNamespace.Bar = class Bar {};
}());
Input
namespace MyNamespace.Nested {
export class Member {}
}
Output
const MyNamespace = {};
Namespace.Nested = {}
(() => {
Namespace.Nested.Member = class Member {};
}());