angular-cn/tools/ts-api-guardian
Igor Minar 5d3ba8dec7 test: update ts-api-guardian's strip_export_pattern to exclude Ivy instructions (#38224)
Previously the instructions were included in the golden files to monitor the frequency and rate of
the instruction API changes for the purpose of understanding the stability of this API (as it was
considered for becoming a public API and deployed to npm via generated code).

This experiment has confirmed that the instruction API is not stable enough to be used as public
API. We've since also came up with an alternative plan to compile libraries with the Ivy compiler
for npm deployment and this plan does not rely on making Ivy instructions public.

For these reasons, I'm removing the instructions from the golden files as it's no longer important
to track them.

The are three instructions that are still being included: `ɵɵdefineInjectable`, `ɵɵinject`, and
`ɵɵInjectableDef`.

These instructions are already generated by the VE compiler to support tree-shakable providers, and
code depending on these instructions is already deployed to npm. For this reason we need to treat
them as public api.

This change also reduces the code review overhead, because changes to public api golden files now
require multiple approvals.

PR Close #38224
2020-07-27 14:37:41 -07:00
..
bin test(bazel): Build and test ts-api-guardian locally (#22544) 2018-03-02 15:00:00 -08:00
lib test: update ts-api-guardian's strip_export_pattern to exclude Ivy instructions (#38224) 2020-07-27 14:37:41 -07:00
test build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
BUILD.bazel build: cleanup //tools/ts-api-guardian:tests target (#34736) 2020-01-15 14:58:07 -05:00
README.md release: ts_api_guardian (#30120) 2019-05-13 10:53:34 -07:00
index.bzl test: update ts-api-guardian's strip_export_pattern to exclude Ivy instructions (#38224) 2020-07-27 14:37:41 -07:00
package.json build: update to typescript 3.9.5 (#37456) 2020-06-11 12:05:33 -07:00

README.md

Typescript API Guardian

Keeps track of public API surface of a typescript library.

Examples:

# Generate one declaration file
ts-api-guardian --out api_guard.d.ts index.d.ts
# Generate multiple declaration files
# (output location like typescript)
ts-api-guardian --outDir api_guard [--rootDir .] core/index.d.ts core/testing.d.ts
# Print usage
ts-api-guardian --help
# Check against one declaration file
ts-api-guardian --verify api_guard.d.ts index.d.ts
# Check against multiple declaration files
ts-api-guardian --verifyDir api_guard [--rootDir .] core/index.d.ts core/testing.d.ts

For developers

Build and test this library:

$ yarn bazel run //:install
$ yarn bazel test //tools/ts-api-guardian:all

Publish to NPM:

$ yarn bazel run @nodejs//:npm whoami # should be logged in as angular
$ grep version tools/ts-api-guardian/package.json # advance as needed
$ yarn bazel run //tools/ts-api-guardian:ts-api-guardian.publish