refactor(core): rename ngInjectableDef to ɵprov (#33151)

Injectable defs are not considered public API, so the property
that contains them should be prefixed with Angular's marker
for "private" ('ɵ') to discourage apps from relying on def
APIs directly.

This commit adds the prefix and shortens the name from
ngInjectableDef to "prov" (for "provider", since injector defs
are known as "inj"). This is because property names cannot
be minified by Uglify without turning on property mangling
(which most apps have turned off) and are thus size-sensitive.

PR Close #33151
This commit is contained in:
Kara Erickson
2019-10-15 12:41:30 -07:00
committed by Matias Niemelä
parent cda9248b33
commit 86104b82b8
38 changed files with 168 additions and 154 deletions

View File

@ -92,7 +92,7 @@ export class InjectableDecoratorHandler implements
}
results.push({
name: 'ngInjectableDef',
name: 'ɵprov',
initializer: res.expression, statements,
type: res.type,
});
@ -214,8 +214,7 @@ function extractInjectableCtorDeps(
// Angular's DI.
//
// To deal with this, @Injectable() without an argument is more lenient, and if the
// constructor
// signature does not work for DI then an ngInjectableDef that throws.
// constructor signature does not work for DI then a provider def (ɵprov) that throws.
if (strictCtorDeps) {
ctorDeps = getValidConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore);
} else {