fixtures/jsii-calc/lib/erasures.ts (49 lines of code) (raw):
//
// Un-exported base classes are erased
// https://github.com/aws/jsii/issues/417
//
class JSII417PrivateRoot {
public readonly hasRoot = true;
}
export class JSII417PublicBaseOfBase extends JSII417PrivateRoot {
public static makeInstance(): JSII417PublicBaseOfBase {
return new JSII417PrivateBase('TEST');
}
public foo(): void {
return;
}
}
class JSII417PrivateBase extends JSII417PublicBaseOfBase {
public constructor(protected readonly property: string) {
super();
}
public bar() {
return;
}
}
export class JSII417Derived extends JSII417PrivateBase {
public override bar(): void {
return super.bar();
}
public baz(): void {
return;
}
}
// Same thing with interfaces
interface IJSII417PrivateRoot {
readonly hasRoot: boolean;
}
export interface IJSII417PublicBaseOfBase extends IJSII417PrivateRoot {
foo(): void;
}
interface IJSII417PrivateBase extends IJSII417PublicBaseOfBase {
readonly property: string;
bar(): void;
}
export interface IJSII417Derived extends IJSII417PrivateBase {
baz(): void;
}
//
// Interfaces should be copied from erased classes to public classes
// https://github.com/aws/jsii/issues/487
//
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IJsii487External {}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IJsii487External2 {}
class Jsii487Internal implements IJsii487External {}
export class Jsii487Derived
extends Jsii487Internal
implements IJsii487External2 {}
//
// Deduplicate interfaces that come from different declaration sites
// https://github.com/aws/jsii/issues/496
//
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IJsii496 {}
class Jsii496Base implements IJsii496 {}
export class Jsii496Derived extends Jsii496Base implements IJsii496 {}