Revision 8e13c351acb8087f5a101d70bd7f9f9aebbdc1bc authored by JoostK on 21 September 2021, 21:39:11 UTC, committed by Jessica Janiuk on 26 October 2021, 18:22:33 UTC
The `ErrorCode` enum in the `error_code.ts` file is governed by public api guards but the other top-level exports from that file are exempt from public api documentation and are therefore marked as `@internal`. However, TypeScript is configured with the `stripInternal` compiler option such that declarations with `@internal` markers are not emitted into the `.d.ts` files, but this means that the reexports in the barrel file end up referring to missing declarations. The `stripInternal` option is considered internal and its documentation states to use at your own risk (as per https://github.com/microsoft/TypeScript/issues/45307). Having the option enabled is desirable for us as it works well for hiding class fields that are marked `@internal`, which is an effective way to hide members from the .d.ts file. As a workaround for the issue with top-level symbols, the declarations with `@internal` markers are moved to dedicated files for which no public api guard is setup, therefore allowing their `@internal` markers to be dropped. Fixes #43097 PR Close #43527
1 parent 59e56e7
tsconfig-legacy-saucelabs.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
// The project uses Bazel for TypeScript compilation. Unlike with Bazel, we build all
// sources as part of a single TypeScript compilation. This results in `@internal`
// declarations not being omitted between the logical as defined per the Bazel targets.
// This can cause issues where the `override` keyword is needed for the legacy TS
// compilation, but not within Bazel where the overridden member has `@internal`.
"noImplicitOverride": false
}
}
Computing file changes ...