@angular/core 14.0.0-rc.1 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,10 @@ export const TestBed = TestBedRender3;
28
28
  */
29
29
  export const getTestBed = _getTestBedRender3;
30
30
  /**
31
- * Allows injecting dependencies in `beforeEach()` and `it()`.
31
+ * Allows injecting dependencies in `beforeEach()` and `it()`. Note: this function
32
+ * (imported from the `@angular/core/testing` package) can **only** be used to inject dependencies
33
+ * in tests. To inject dependencies in your application code, use the [`inject`](api/core/inject)
34
+ * function from the `@angular/core` package instead.
32
35
  *
33
36
  * Example:
34
37
  *
@@ -88,4 +91,4 @@ export function withModule(moduleDef, fn) {
88
91
  }
89
92
  return new InjectSetupWrapper(() => moduleDef);
90
93
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9iZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3Rlc3Rpbmcvc3JjL3Rlc3RfYmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUF5RWpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFrQixjQUFjLENBQUM7QUFFckQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFrQixrQkFBa0IsQ0FBQztBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFhLEVBQUUsRUFBWTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM3Qix3RUFBd0U7SUFDeEUsT0FBTztRQUNMLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsVUFBb0M7UUFBcEMsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7SUFBRyxDQUFDO0lBRXBELFVBQVU7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLElBQUksU0FBUyxFQUFFO1lBQ2IsVUFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWEsRUFBRSxFQUFZO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQix3RUFBd0U7UUFDeEUsT0FBTztZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU9ELE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBNkIsRUFBRSxFQUFrQjtJQUUxRSxJQUFJLEVBQUUsRUFBRTtRQUNOLHdFQUF3RTtRQUN4RSxPQUFPO1lBQ0wsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztLQUNIO0lBQ0QsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0RmxhZ3MsIE5nTW9kdWxlLCBQaXBlLCBQbGF0Zm9ybVJlZiwgUHJvdmlkZXJUb2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tcG9uZW50Rml4dHVyZX0gZnJvbSAnLi9jb21wb25lbnRfZml4dHVyZSc7XG5pbXBvcnQge01ldGFkYXRhT3ZlcnJpZGV9IGZyb20gJy4vbWV0YWRhdGFfb3ZlcnJpZGUnO1xuaW1wb3J0IHtfZ2V0VGVzdEJlZFJlbmRlcjMsIFRlc3RCZWRSZW5kZXIzfSBmcm9tICcuL3IzX3Rlc3RfYmVkJztcbmltcG9ydCB7VGVzdEJlZFN0YXRpYywgVGVzdEVudmlyb25tZW50T3B0aW9ucywgVGVzdE1vZHVsZU1ldGFkYXRhfSBmcm9tICcuL3Rlc3RfYmVkX2NvbW1vbic7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RCZWQge1xuICBwbGF0Zm9ybTogUGxhdGZvcm1SZWY7XG5cbiAgbmdNb2R1bGU6IFR5cGU8YW55PnxUeXBlPGFueT5bXTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgZm9yIHRlc3Rpbmcgd2l0aCBhIGNvbXBpbGVyIGZhY3RvcnksIGEgUGxhdGZvcm1SZWYsIGFuZCBhblxuICAgKiBhbmd1bGFyIG1vZHVsZS4gVGhlc2UgYXJlIGNvbW1vbiB0byBldmVyeSB0ZXN0IGluIHRoZSBzdWl0ZS5cbiAgICpcbiAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgb25jZSwgdG8gc2V0IHVwIHRoZSBjb21tb24gcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCB0ZXN0XG4gICAqIHN1aXRlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiBJZiB5b3UgYWJzb2x1dGVseSBuZWVkIHRvIGNoYW5nZSB0aGUgcHJvdmlkZXJzLFxuICAgKiBmaXJzdCB1c2UgYHJlc2V0VGVzdEVudmlyb25tZW50YC5cbiAgICpcbiAgICogVGVzdCBtb2R1bGVzIGFuZCBwbGF0Zm9ybXMgZm9yIGluZGl2aWR1YWwgcGxhdGZvcm1zIGFyZSBhdmFpbGFibGUgZnJvbVxuICAgKiAnQGFuZ3VsYXIvPHBsYXRmb3JtX25hbWU+L3Rlc3RpbmcnLlxuICAgKi9cbiAgaW5pdFRlc3RFbnZpcm9ubWVudChcbiAgICAgIG5nTW9kdWxlOiBUeXBlPGFueT58VHlwZTxhbnk+W10sIHBsYXRmb3JtOiBQbGF0Zm9ybVJlZixcbiAgICAgIG9wdGlvbnM/OiBUZXN0RW52aXJvbm1lbnRPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIHByb3ZpZGVycyBmb3IgdGhlIHRlc3QgaW5qZWN0b3IuXG4gICAqL1xuICByZXNldFRlc3RFbnZpcm9ubWVudCgpOiB2b2lkO1xuXG4gIHJlc2V0VGVzdGluZ01vZHVsZSgpOiB2b2lkO1xuXG4gIGNvbmZpZ3VyZUNvbXBpbGVyKGNvbmZpZzoge3Byb3ZpZGVycz86IGFueVtdLCB1c2VKaXQ/OiBib29sZWFufSk6IHZvaWQ7XG5cbiAgY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSk6IHZvaWQ7XG5cbiAgY29tcGlsZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIGluamVjdDxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xuICBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU6IG51bGwsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUfG51bGw7XG5cbiAgLyoqIEBkZXByZWNhdGVkIGZyb20gdjkuMC4wIHVzZSBUZXN0QmVkLmluamVjdCAqL1xuICBnZXQ8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogYW55O1xuICAvKiogQGRlcHJlY2F0ZWQgZnJvbSB2OS4wLjAgdXNlIFRlc3RCZWQuaW5qZWN0ICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xuXG4gIGV4ZWN1dGUodG9rZW5zOiBhbnlbXSwgZm46IEZ1bmN0aW9uLCBjb250ZXh0PzogYW55KTogYW55O1xuXG4gIG92ZXJyaWRlTW9kdWxlKG5nTW9kdWxlOiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPE5nTW9kdWxlPik6IHZvaWQ7XG5cbiAgb3ZlcnJpZGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPENvbXBvbmVudD4pOiB2b2lkO1xuXG4gIG92ZXJyaWRlRGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxEaXJlY3RpdmU+KTogdm9pZDtcblxuICBvdmVycmlkZVBpcGUocGlwZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxQaXBlPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0ZXMgYWxsIHByb3ZpZGVycyBmb3IgdGhlIGdpdmVuIHRva2VuIHdpdGggdGhlIGdpdmVuIHByb3ZpZGVyIGRlZmluaXRpb24uXG4gICAqL1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7XG4gICAgdXNlRmFjdG9yeTogRnVuY3Rpb24sXG4gICAgZGVwczogYW55W10sXG4gIH0pOiB2b2lkO1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7dXNlVmFsdWU6IGFueTt9KTogdm9pZDtcbiAgb3ZlcnJpZGVQcm92aWRlcih0b2tlbjogYW55LCBwcm92aWRlcjoge3VzZUZhY3Rvcnk/OiBGdW5jdGlvbiwgdXNlVmFsdWU/OiBhbnksIGRlcHM/OiBhbnlbXX0pOlxuICAgICAgdm9pZDtcblxuICBvdmVycmlkZVRlbXBsYXRlVXNpbmdUZXN0aW5nTW9kdWxlKGNvbXBvbmVudDogVHlwZTxhbnk+LCB0ZW1wbGF0ZTogc3RyaW5nKTogdm9pZDtcblxuICBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBUeXBlPFQ+KTogQ29tcG9uZW50Rml4dHVyZTxUPjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbmZpZ3VyZXMgYW5kIGluaXRpYWxpemVzIGVudmlyb25tZW50IGZvciB1bml0IHRlc3RpbmcgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBjcmVhdGluZyBjb21wb25lbnRzIGFuZCBzZXJ2aWNlcyBpbiB1bml0IHRlc3RzLlxuICpcbiAqIGBUZXN0QmVkYCBpcyB0aGUgcHJpbWFyeSBhcGkgZm9yIHdyaXRpbmcgdW5pdCB0ZXN0cyBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy5cbiAqXG4gKiBOb3RlOiBVc2UgYFRlc3RCZWRgIGluIHRlc3RzLiBJdCB3aWxsIGJlIHNldCB0byBlaXRoZXIgYFRlc3RCZWRWaWV3RW5naW5lYCBvciBgVGVzdEJlZFJlbmRlcjNgXG4gKiBhY2NvcmRpbmcgdG8gdGhlIGNvbXBpbGVyIHVzZWQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgVGVzdEJlZDogVGVzdEJlZFN0YXRpYyA9IFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIFJldHVybnMgYSBzaW5nbGV0b24gb2YgdGhlIGFwcGxpY2FibGUgYFRlc3RCZWRgLlxuICpcbiAqIEl0IHdpbGwgYmUgZWl0aGVyIGFuIGluc3RhbmNlIG9mIGBUZXN0QmVkVmlld0VuZ2luZWAgb3IgYFRlc3RCZWRSZW5kZXIzYC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUZXN0QmVkOiAoKSA9PiBUZXN0QmVkID0gX2dldFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIEFsbG93cyBpbmplY3RpbmcgZGVwZW5kZW5jaWVzIGluIGBiZWZvcmVFYWNoKClgIGFuZCBgaXQoKWAuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBcbiAqIGJlZm9yZUVhY2goaW5qZWN0KFtEZXBlbmRlbmN5LCBBQ2xhc3NdLCAoZGVwLCBvYmplY3QpID0+IHtcbiAqICAgLy8gc29tZSBjb2RlIHRoYXQgdXNlcyBgZGVwYCBhbmQgYG9iamVjdGBcbiAqICAgLy8gLi4uXG4gKiB9KSk7XG4gKlxuICogaXQoJy4uLicsIGluamVjdChbQUNsYXNzXSwgKG9iamVjdCkgPT4ge1xuICogICBvYmplY3QuZG9Tb21ldGhpbmcoKTtcbiAqICAgZXhwZWN0KC4uLik7XG4gKiB9KVxuICogYGBgXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0KHRva2VuczogYW55W10sIGZuOiBGdW5jdGlvbik6ICgpID0+IGFueSB7XG4gIGNvbnN0IHRlc3RCZWQgPSBnZXRUZXN0QmVkKCk7XG4gIC8vIE5vdCB1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB0byBwcmVzZXJ2ZSBjb250ZXh0IHBhc3NlZCBmcm9tIGNhbGwgc2l0ZVxuICByZXR1cm4gZnVuY3Rpb24odGhpczogdW5rbm93bikge1xuICAgIHJldHVybiB0ZXN0QmVkLmV4ZWN1dGUodG9rZW5zLCBmbiwgdGhpcyk7XG4gIH07XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0U2V0dXBXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbW9kdWxlRGVmOiAoKSA9PiBUZXN0TW9kdWxlTWV0YWRhdGEpIHt9XG5cbiAgcHJpdmF0ZSBfYWRkTW9kdWxlKCkge1xuICAgIGNvbnN0IG1vZHVsZURlZiA9IHRoaXMuX21vZHVsZURlZigpO1xuICAgIGlmIChtb2R1bGVEZWYpIHtcbiAgICAgIGdldFRlc3RCZWQoKS5jb25maWd1cmVUZXN0aW5nTW9kdWxlKG1vZHVsZURlZik7XG4gICAgfVxuICB9XG5cbiAgaW5qZWN0KHRva2VuczogYW55W10sIGZuOiBGdW5jdGlvbik6ICgpID0+IGFueSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgLy8gTm90IHVzaW5nIGFuIGFycm93IGZ1bmN0aW9uIHRvIHByZXNlcnZlIGNvbnRleHQgcGFzc2VkIGZyb20gY2FsbCBzaXRlXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IHVua25vd24pIHtcbiAgICAgIHNlbGYuX2FkZE1vZHVsZSgpO1xuICAgICAgcmV0dXJuIGluamVjdCh0b2tlbnMsIGZuKS5jYWxsKHRoaXMpO1xuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhKTogSW5qZWN0U2V0dXBXcmFwcGVyO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNb2R1bGUobW9kdWxlRGVmOiBUZXN0TW9kdWxlTWV0YWRhdGEsIGZuOiBGdW5jdGlvbik6ICgpID0+IGFueTtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhLCBmbj86IEZ1bmN0aW9ufG51bGwpOiAoKCkgPT4gYW55KXxcbiAgICBJbmplY3RTZXR1cFdyYXBwZXIge1xuICBpZiAoZm4pIHtcbiAgICAvLyBOb3QgdXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gdG8gcHJlc2VydmUgY29udGV4dCBwYXNzZWQgZnJvbSBjYWxsIHNpdGVcbiAgICByZXR1cm4gZnVuY3Rpb24odGhpczogdW5rbm93bikge1xuICAgICAgY29uc3QgdGVzdEJlZCA9IGdldFRlc3RCZWQoKTtcbiAgICAgIGlmIChtb2R1bGVEZWYpIHtcbiAgICAgICAgdGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKG1vZHVsZURlZik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm4uYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbmV3IEluamVjdFNldHVwV3JhcHBlcigoKSA9PiBtb2R1bGVEZWYpO1xufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9iZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3Rlc3Rpbmcvc3JjL3Rlc3RfYmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUF5RWpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFrQixjQUFjLENBQUM7QUFFckQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFrQixrQkFBa0IsQ0FBQztBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFhLEVBQUUsRUFBWTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM3Qix3RUFBd0U7SUFDeEUsT0FBTztRQUNMLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsVUFBb0M7UUFBcEMsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7SUFBRyxDQUFDO0lBRXBELFVBQVU7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLElBQUksU0FBUyxFQUFFO1lBQ2IsVUFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWEsRUFBRSxFQUFZO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQix3RUFBd0U7UUFDeEUsT0FBTztZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU9ELE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBNkIsRUFBRSxFQUFrQjtJQUUxRSxJQUFJLEVBQUUsRUFBRTtRQUNOLHdFQUF3RTtRQUN4RSxPQUFPO1lBQ0wsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztLQUNIO0lBQ0QsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0RmxhZ3MsIE5nTW9kdWxlLCBQaXBlLCBQbGF0Zm9ybVJlZiwgUHJvdmlkZXJUb2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tcG9uZW50Rml4dHVyZX0gZnJvbSAnLi9jb21wb25lbnRfZml4dHVyZSc7XG5pbXBvcnQge01ldGFkYXRhT3ZlcnJpZGV9IGZyb20gJy4vbWV0YWRhdGFfb3ZlcnJpZGUnO1xuaW1wb3J0IHtfZ2V0VGVzdEJlZFJlbmRlcjMsIFRlc3RCZWRSZW5kZXIzfSBmcm9tICcuL3IzX3Rlc3RfYmVkJztcbmltcG9ydCB7VGVzdEJlZFN0YXRpYywgVGVzdEVudmlyb25tZW50T3B0aW9ucywgVGVzdE1vZHVsZU1ldGFkYXRhfSBmcm9tICcuL3Rlc3RfYmVkX2NvbW1vbic7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RCZWQge1xuICBwbGF0Zm9ybTogUGxhdGZvcm1SZWY7XG5cbiAgbmdNb2R1bGU6IFR5cGU8YW55PnxUeXBlPGFueT5bXTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgZm9yIHRlc3Rpbmcgd2l0aCBhIGNvbXBpbGVyIGZhY3RvcnksIGEgUGxhdGZvcm1SZWYsIGFuZCBhblxuICAgKiBhbmd1bGFyIG1vZHVsZS4gVGhlc2UgYXJlIGNvbW1vbiB0byBldmVyeSB0ZXN0IGluIHRoZSBzdWl0ZS5cbiAgICpcbiAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgb25jZSwgdG8gc2V0IHVwIHRoZSBjb21tb24gcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCB0ZXN0XG4gICAqIHN1aXRlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiBJZiB5b3UgYWJzb2x1dGVseSBuZWVkIHRvIGNoYW5nZSB0aGUgcHJvdmlkZXJzLFxuICAgKiBmaXJzdCB1c2UgYHJlc2V0VGVzdEVudmlyb25tZW50YC5cbiAgICpcbiAgICogVGVzdCBtb2R1bGVzIGFuZCBwbGF0Zm9ybXMgZm9yIGluZGl2aWR1YWwgcGxhdGZvcm1zIGFyZSBhdmFpbGFibGUgZnJvbVxuICAgKiAnQGFuZ3VsYXIvPHBsYXRmb3JtX25hbWU+L3Rlc3RpbmcnLlxuICAgKi9cbiAgaW5pdFRlc3RFbnZpcm9ubWVudChcbiAgICAgIG5nTW9kdWxlOiBUeXBlPGFueT58VHlwZTxhbnk+W10sIHBsYXRmb3JtOiBQbGF0Zm9ybVJlZixcbiAgICAgIG9wdGlvbnM/OiBUZXN0RW52aXJvbm1lbnRPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIHByb3ZpZGVycyBmb3IgdGhlIHRlc3QgaW5qZWN0b3IuXG4gICAqL1xuICByZXNldFRlc3RFbnZpcm9ubWVudCgpOiB2b2lkO1xuXG4gIHJlc2V0VGVzdGluZ01vZHVsZSgpOiB2b2lkO1xuXG4gIGNvbmZpZ3VyZUNvbXBpbGVyKGNvbmZpZzoge3Byb3ZpZGVycz86IGFueVtdLCB1c2VKaXQ/OiBib29sZWFufSk6IHZvaWQ7XG5cbiAgY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSk6IHZvaWQ7XG5cbiAgY29tcGlsZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIGluamVjdDxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xuICBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU6IG51bGwsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUfG51bGw7XG5cbiAgLyoqIEBkZXByZWNhdGVkIGZyb20gdjkuMC4wIHVzZSBUZXN0QmVkLmluamVjdCAqL1xuICBnZXQ8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogYW55O1xuICAvKiogQGRlcHJlY2F0ZWQgZnJvbSB2OS4wLjAgdXNlIFRlc3RCZWQuaW5qZWN0ICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xuXG4gIGV4ZWN1dGUodG9rZW5zOiBhbnlbXSwgZm46IEZ1bmN0aW9uLCBjb250ZXh0PzogYW55KTogYW55O1xuXG4gIG92ZXJyaWRlTW9kdWxlKG5nTW9kdWxlOiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPE5nTW9kdWxlPik6IHZvaWQ7XG5cbiAgb3ZlcnJpZGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPENvbXBvbmVudD4pOiB2b2lkO1xuXG4gIG92ZXJyaWRlRGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxEaXJlY3RpdmU+KTogdm9pZDtcblxuICBvdmVycmlkZVBpcGUocGlwZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxQaXBlPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0ZXMgYWxsIHByb3ZpZGVycyBmb3IgdGhlIGdpdmVuIHRva2VuIHdpdGggdGhlIGdpdmVuIHByb3ZpZGVyIGRlZmluaXRpb24uXG4gICAqL1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7XG4gICAgdXNlRmFjdG9yeTogRnVuY3Rpb24sXG4gICAgZGVwczogYW55W10sXG4gIH0pOiB2b2lkO1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7dXNlVmFsdWU6IGFueTt9KTogdm9pZDtcbiAgb3ZlcnJpZGVQcm92aWRlcih0b2tlbjogYW55LCBwcm92aWRlcjoge3VzZUZhY3Rvcnk/OiBGdW5jdGlvbiwgdXNlVmFsdWU/OiBhbnksIGRlcHM/OiBhbnlbXX0pOlxuICAgICAgdm9pZDtcblxuICBvdmVycmlkZVRlbXBsYXRlVXNpbmdUZXN0aW5nTW9kdWxlKGNvbXBvbmVudDogVHlwZTxhbnk+LCB0ZW1wbGF0ZTogc3RyaW5nKTogdm9pZDtcblxuICBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBUeXBlPFQ+KTogQ29tcG9uZW50Rml4dHVyZTxUPjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbmZpZ3VyZXMgYW5kIGluaXRpYWxpemVzIGVudmlyb25tZW50IGZvciB1bml0IHRlc3RpbmcgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBjcmVhdGluZyBjb21wb25lbnRzIGFuZCBzZXJ2aWNlcyBpbiB1bml0IHRlc3RzLlxuICpcbiAqIGBUZXN0QmVkYCBpcyB0aGUgcHJpbWFyeSBhcGkgZm9yIHdyaXRpbmcgdW5pdCB0ZXN0cyBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy5cbiAqXG4gKiBOb3RlOiBVc2UgYFRlc3RCZWRgIGluIHRlc3RzLiBJdCB3aWxsIGJlIHNldCB0byBlaXRoZXIgYFRlc3RCZWRWaWV3RW5naW5lYCBvciBgVGVzdEJlZFJlbmRlcjNgXG4gKiBhY2NvcmRpbmcgdG8gdGhlIGNvbXBpbGVyIHVzZWQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgVGVzdEJlZDogVGVzdEJlZFN0YXRpYyA9IFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIFJldHVybnMgYSBzaW5nbGV0b24gb2YgdGhlIGFwcGxpY2FibGUgYFRlc3RCZWRgLlxuICpcbiAqIEl0IHdpbGwgYmUgZWl0aGVyIGFuIGluc3RhbmNlIG9mIGBUZXN0QmVkVmlld0VuZ2luZWAgb3IgYFRlc3RCZWRSZW5kZXIzYC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUZXN0QmVkOiAoKSA9PiBUZXN0QmVkID0gX2dldFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIEFsbG93cyBpbmplY3RpbmcgZGVwZW5kZW5jaWVzIGluIGBiZWZvcmVFYWNoKClgIGFuZCBgaXQoKWAuIE5vdGU6IHRoaXMgZnVuY3Rpb25cbiAqIChpbXBvcnRlZCBmcm9tIHRoZSBgQGFuZ3VsYXIvY29yZS90ZXN0aW5nYCBwYWNrYWdlKSBjYW4gKipvbmx5KiogYmUgdXNlZCB0byBpbmplY3QgZGVwZW5kZW5jaWVzXG4gKiBpbiB0ZXN0cy4gVG8gaW5qZWN0IGRlcGVuZGVuY2llcyBpbiB5b3VyIGFwcGxpY2F0aW9uIGNvZGUsIHVzZSB0aGUgW2BpbmplY3RgXShhcGkvY29yZS9pbmplY3QpXG4gKiBmdW5jdGlvbiBmcm9tIHRoZSBgQGFuZ3VsYXIvY29yZWAgcGFja2FnZSBpbnN0ZWFkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBiZWZvcmVFYWNoKGluamVjdChbRGVwZW5kZW5jeSwgQUNsYXNzXSwgKGRlcCwgb2JqZWN0KSA9PiB7XG4gKiAgIC8vIHNvbWUgY29kZSB0aGF0IHVzZXMgYGRlcGAgYW5kIGBvYmplY3RgXG4gKiAgIC8vIC4uLlxuICogfSkpO1xuICpcbiAqIGl0KCcuLi4nLCBpbmplY3QoW0FDbGFzc10sIChvYmplY3QpID0+IHtcbiAqICAgb2JqZWN0LmRvU29tZXRoaW5nKCk7XG4gKiAgIGV4cGVjdCguLi4pO1xuICogfSlcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdCh0b2tlbnM6IGFueVtdLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnkge1xuICBjb25zdCB0ZXN0QmVkID0gZ2V0VGVzdEJlZCgpO1xuICAvLyBOb3QgdXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gdG8gcHJlc2VydmUgY29udGV4dCBwYXNzZWQgZnJvbSBjYWxsIHNpdGVcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IHVua25vd24pIHtcbiAgICByZXR1cm4gdGVzdEJlZC5leGVjdXRlKHRva2VucywgZm4sIHRoaXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdFNldHVwV3JhcHBlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZHVsZURlZjogKCkgPT4gVGVzdE1vZHVsZU1ldGFkYXRhKSB7fVxuXG4gIHByaXZhdGUgX2FkZE1vZHVsZSgpIHtcbiAgICBjb25zdCBtb2R1bGVEZWYgPSB0aGlzLl9tb2R1bGVEZWYoKTtcbiAgICBpZiAobW9kdWxlRGVmKSB7XG4gICAgICBnZXRUZXN0QmVkKCkuY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWYpO1xuICAgIH1cbiAgfVxuXG4gIGluamVjdCh0b2tlbnM6IGFueVtdLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIC8vIE5vdCB1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB0byBwcmVzZXJ2ZSBjb250ZXh0IHBhc3NlZCBmcm9tIGNhbGwgc2l0ZVxuICAgIHJldHVybiBmdW5jdGlvbih0aGlzOiB1bmtub3duKSB7XG4gICAgICBzZWxmLl9hZGRNb2R1bGUoKTtcbiAgICAgIHJldHVybiBpbmplY3QodG9rZW5zLCBmbikuY2FsbCh0aGlzKTtcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aE1vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSk6IEluamVjdFNldHVwV3JhcHBlcjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnk7XG5leHBvcnQgZnVuY3Rpb24gd2l0aE1vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSwgZm4/OiBGdW5jdGlvbnxudWxsKTogKCgpID0+IGFueSl8XG4gICAgSW5qZWN0U2V0dXBXcmFwcGVyIHtcbiAgaWYgKGZuKSB7XG4gICAgLy8gTm90IHVzaW5nIGFuIGFycm93IGZ1bmN0aW9uIHRvIHByZXNlcnZlIGNvbnRleHQgcGFzc2VkIGZyb20gY2FsbCBzaXRlXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHRlc3RCZWQgPSBnZXRUZXN0QmVkKCk7XG4gICAgICBpZiAobW9kdWxlRGVmKSB7XG4gICAgICAgIHRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWYpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIG5ldyBJbmplY3RTZXR1cFdyYXBwZXIoKCkgPT4gbW9kdWxlRGVmKTtcbn1cbiJdfQ==
package/fesm2015/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.0.0-rc.1
2
+ * @license Angular v14.0.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -954,8 +954,8 @@ function ɵɵdefineComponent(componentDefinition) {
954
954
  */
955
955
  function ɵɵsetComponentScope(type, directives, pipes) {
956
956
  const def = type.ɵcmp;
957
- def.directiveDefs = () => directives.map(extractDirectiveDef);
958
- def.pipeDefs = () => pipes.map(getPipeDef$1);
957
+ def.directiveDefs = () => (typeof directives === 'function' ? directives() : directives).map(extractDirectiveDef);
958
+ def.pipeDefs = () => (typeof pipes === 'function' ? pipes() : pipes).map(getPipeDef$1);
959
959
  }
960
960
  function extractDirectiveDef(type) {
961
961
  return getComponentDef(type) || getDirectiveDef(type);
@@ -4837,9 +4837,9 @@ function setCurrentInjector(injector) {
4837
4837
  function injectInjectorOnly(token, flags = InjectFlags.Default) {
4838
4838
  if (_currentInjector === undefined) {
4839
4839
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
4840
- `inject() must be called from an injection context` :
4840
+ `inject() must be called from an injection context (a constructor, a factory function or a field initializer)` :
4841
4841
  '';
4842
- throw new RuntimeError(203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
4842
+ throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
4843
4843
  }
4844
4844
  else if (_currentInjector === null) {
4845
4845
  return injectRootLimpMode(token, undefined, flags);
@@ -4874,29 +4874,71 @@ Please check that 1) the type for the parameter at index ${index} is correct and
4874
4874
  }
4875
4875
  /**
4876
4876
  * Injects a token from the currently active injector.
4877
- *
4878
- * Must be used in the context of a factory function such as one defined for an
4879
- * `InjectionToken`. Throws an error if not called from such a context.
4880
- *
4881
- * Within such a factory function, using this function to request injection of a dependency
4882
- * is faster and more type-safe than providing an additional array of dependencies
4883
- * (as has been common with `useFactory` providers).
4884
- *
4885
- * @param token The injection token for the dependency to be injected.
4877
+ * `inject` is only supported during instantiation of a dependency by the DI system. It can be used
4878
+ * during:
4879
+ * - Construction (via the `constructor`) of a class being instantiated by the DI system, such
4880
+ * as an `@Injectable` or `@Component`.
4881
+ * - In the initializer for fields of such classes.
4882
+ * - In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`.
4883
+ * - In the `factory` function specified for an `InjectionToken`.
4884
+ *
4885
+ * @param token A token that represents a dependency that should be injected.
4886
4886
  * @param flags Optional flags that control how injection is executed.
4887
4887
  * The flags correspond to injection strategies that can be specified with
4888
4888
  * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
4889
- * @returns the injected value if injection is successful, `null` otherwise.
4889
+ * @returns the injected value if operation is successful, `null` otherwise.
4890
+ * @throws if called outside of a supported context.
4890
4891
  *
4891
4892
  * @usageNotes
4893
+ * In practice the `inject()` calls are allowed in a constructor, a constructor parameter and a
4894
+ * field initializer:
4892
4895
  *
4893
- * ### Example
4896
+ * ```typescript
4897
+ * @Injectable({providedIn: 'root'})
4898
+ * export class Car {
4899
+ * radio: Radio|undefined;
4900
+ * // OK: field initializer
4901
+ * spareTyre = inject(Tyre);
4894
4902
  *
4895
- * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4903
+ * constructor() {
4904
+ * // OK: constructor body
4905
+ * this.radio = inject(Radio);
4906
+ * }
4907
+ * }
4908
+ * ```
4909
+ *
4910
+ * It is also legal to call `inject` from a provider's factory:
4911
+ *
4912
+ * ```typescript
4913
+ * providers: [
4914
+ * {provide: Car, useFactory: () => {
4915
+ * // OK: a class factory
4916
+ * const engine = inject(Engine);
4917
+ * return new Car(engine);
4918
+ * }}
4919
+ * ]
4920
+ * ```
4921
+ *
4922
+ * Calls to the `inject()` function outside of the class creation context will result in error. Most
4923
+ * notably, calls to `inject()` are disallowed after a class instance was created, in methods
4924
+ * (including lifecycle hooks):
4925
+ *
4926
+ * ```typescript
4927
+ * @Component({ ... })
4928
+ * export class CarComponent {
4929
+ * ngOnInit() {
4930
+ * // ERROR: too late, the component instance was already created
4931
+ * const engine = inject(Engine);
4932
+ * engine.start();
4933
+ * }
4934
+ * }
4935
+ * ```
4896
4936
  *
4897
4937
  * @publicApi
4898
4938
  */
4899
- const inject = ɵɵinject;
4939
+ function inject(token, flags = InjectFlags.Default) {
4940
+ return ɵɵinject(token, flags);
4941
+ }
4900
4942
  function injectArgs(types) {
4901
4943
  const args = [];
4902
4944
  for (let i = 0; i < types.length; i++) {
@@ -8816,8 +8858,38 @@ const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
8816
8858
  * another environment injector (such as a route injector). They should not be used in component
8817
8859
  * providers.
8818
8860
  *
8819
- * @returns The collected providers from the specified list of types.
8861
+ * More information about standalone components can be found in [this
8862
+ * guide](guide/standalone-components).
8863
+ *
8864
+ * @usageNotes
8865
+ * The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:
8866
+ *
8867
+ * ```typescript
8868
+ * await bootstrapApplication(RootComponent, {
8869
+ * providers: [
8870
+ * importProvidersFrom(NgModuleOne, NgModuleTwo)
8871
+ * ]
8872
+ * });
8873
+ * ```
8874
+ *
8875
+ * You can also use the `importProvidersFrom` results in the `providers` field of a route, when a
8876
+ * standalone component is used:
8877
+ *
8878
+ * ```typescript
8879
+ * export const ROUTES: Route[] = [
8880
+ * {
8881
+ * path: 'foo',
8882
+ * providers: [
8883
+ * importProvidersFrom(NgModuleOne, NgModuleTwo)
8884
+ * ],
8885
+ * component: YourStandaloneComponent
8886
+ * }
8887
+ * ];
8888
+ * ```
8889
+ *
8890
+ * @returns Collected providers from the specified list of types.
8820
8891
  * @publicApi
8892
+ * @developerPreview
8821
8893
  */
8822
8894
  function importProvidersFrom(...sources) {
8823
8895
  return { ɵproviders: internalImportProvidersFrom(true, sources) };
@@ -9095,6 +9167,8 @@ function getNullInjector() {
9095
9167
  /**
9096
9168
  * An `Injector` that's part of the environment injector hierarchy, which exists outside of the
9097
9169
  * component tree.
9170
+ *
9171
+ * @developerPreview
9098
9172
  */
9099
9173
  class EnvironmentInjector {
9100
9174
  }
@@ -11354,6 +11428,56 @@ function createTNodeAtIndex(tView, index, type, name, attrs) {
11354
11428
  }
11355
11429
  return tNode;
11356
11430
  }
11431
+ /**
11432
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11433
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11434
+ * be too slow for production mode and also it relies on the constructor function being available.
11435
+ *
11436
+ * Gets a reference to the host component def (where a current component is declared).
11437
+ *
11438
+ * @param lView An `LView` that represents a current component that is being rendered.
11439
+ */
11440
+ function getDeclarationComponentDef(lView) {
11441
+ !ngDevMode && throwError('Must never be called in production mode');
11442
+ const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
11443
+ const context = declarationLView[CONTEXT];
11444
+ // Unable to obtain a context.
11445
+ if (!context)
11446
+ return null;
11447
+ return context.constructor ? getComponentDef(context.constructor) : null;
11448
+ }
11449
+ /**
11450
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11451
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11452
+ * be too slow for production mode.
11453
+ *
11454
+ * Checks if the current component is declared inside of a standalone component template.
11455
+ *
11456
+ * @param lView An `LView` that represents a current component that is being rendered.
11457
+ */
11458
+ function isHostComponentStandalone(lView) {
11459
+ !ngDevMode && throwError('Must never be called in production mode');
11460
+ const componentDef = getDeclarationComponentDef(lView);
11461
+ // Treat host component as non-standalone if we can't obtain the def.
11462
+ return !!(componentDef === null || componentDef === void 0 ? void 0 : componentDef.standalone);
11463
+ }
11464
+ /**
11465
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11466
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11467
+ * be too slow for production mode.
11468
+ *
11469
+ * Constructs a string describing the location of the host component template. The function is used
11470
+ * in dev mode to produce error messages.
11471
+ *
11472
+ * @param lView An `LView` that represents a current component that is being rendered.
11473
+ */
11474
+ function getTemplateLocationDetails(lView) {
11475
+ var _a;
11476
+ !ngDevMode && throwError('Must never be called in production mode');
11477
+ const hostComponentDef = getDeclarationComponentDef(lView);
11478
+ const componentClassName = (_a = hostComponentDef === null || hostComponentDef === void 0 ? void 0 : hostComponentDef.type) === null || _a === void 0 ? void 0 : _a.name;
11479
+ return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
11480
+ }
11357
11481
  /**
11358
11482
  * When elements are created dynamically after a view blueprint is created (e.g. through
11359
11483
  * i18nApply()), we need to adjust the blueprint for future
@@ -12022,7 +12146,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
12022
12146
  validateAgainstEventProperties(propName);
12023
12147
  if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
12024
12148
  // Return here since we only log warnings for unknown properties.
12025
- handleUnknownPropertyError(propName, tNode.value);
12149
+ handleUnknownPropertyError(propName, tNode, lView);
12026
12150
  return;
12027
12151
  }
12028
12152
  ngDevMode.rendererSetProperty++;
@@ -12042,7 +12166,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
12042
12166
  // If the node is a container and the property didn't
12043
12167
  // match any of the inputs or schemas we should throw.
12044
12168
  if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
12045
- handleUnknownPropertyError(propName, tNode.value);
12169
+ handleUnknownPropertyError(propName, tNode, lView);
12046
12170
  }
12047
12171
  }
12048
12172
  }
@@ -12143,13 +12267,60 @@ function matchingSchemas(schemas, tagName) {
12143
12267
  }
12144
12268
  return false;
12145
12269
  }
12270
+ /**
12271
+ * The set of known control flow directives.
12272
+ * We use this set to produce a more precises error message with a note
12273
+ * that the `CommonModule` should also be included.
12274
+ */
12275
+ const KNOWN_CONTROL_FLOW_DIRECTIVES = new Set(['ngIf', 'ngFor', 'ngSwitch', 'ngSwitchCase', 'ngSwitchDefault']);
12146
12276
  /**
12147
12277
  * Logs or throws an error that a property is not supported on an element.
12278
+ *
12148
12279
  * @param propName Name of the invalid property.
12149
- * @param tagName Name of the node on which we encountered the property.
12150
- */
12151
- function handleUnknownPropertyError(propName, tagName) {
12152
- const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
12280
+ * @param tNode A `TNode` that represents a current component that is being rendered.
12281
+ * @param lView An `LView` that represents a current component that is being rendered.
12282
+ */
12283
+ function handleUnknownPropertyError(propName, tNode, lView) {
12284
+ let tagName = tNode.value;
12285
+ // Special-case a situation when a structural directive is applied to
12286
+ // an `<ng-template>` element, for example: `<ng-template *ngIf="true">`.
12287
+ // In this case the compiler generates the `ɵɵtemplate` instruction with
12288
+ // the `null` as the tagName. The directive matching logic at runtime relies
12289
+ // on this effect (see `isInlineTemplate`), thus using the 'ng-template' as
12290
+ // a default value of the `tNode.value` is not feasible at this moment.
12291
+ if (!tagName && tNode.type === 4 /* TNodeType.Container */) {
12292
+ tagName = 'ng-template';
12293
+ }
12294
+ const isHostStandalone = isHostComponentStandalone(lView);
12295
+ const templateLocation = getTemplateLocationDetails(lView);
12296
+ let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
12297
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
12298
+ const importLocation = isHostStandalone ?
12299
+ 'included in the \'@Component.imports\' of this component' :
12300
+ 'a part of an @NgModule where this component is declared';
12301
+ if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
12302
+ // Most likely this is a control flow directive (such as `*ngIf`) used in
12303
+ // a template, but the `CommonModule` is not imported.
12304
+ message += `\nIf the '${propName}' is an Angular control flow directive, ` +
12305
+ `please make sure that the 'CommonModule' is ${importLocation}.`;
12306
+ }
12307
+ else {
12308
+ // May be an Angular component, which is not imported/declared?
12309
+ message += `\n1. If '${tagName}' is an Angular component and it has the ` +
12310
+ `'${propName}' input, then verify that it is ${importLocation}.`;
12311
+ // May be a Web Component?
12312
+ if (tagName && tagName.indexOf('-') > -1) {
12313
+ message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` +
12314
+ `to the ${schemas} of this component to suppress this message.`;
12315
+ message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
12316
+ `the ${schemas} of this component.`;
12317
+ }
12318
+ else {
12319
+ // If it's expected, the error can be suppressed by the `NO_ERRORS_SCHEMA` schema.
12320
+ message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
12321
+ `the ${schemas} of this component.`;
12322
+ }
12323
+ }
12153
12324
  if (shouldThrowErrorOnUnknownProperty) {
12154
12325
  throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
12155
12326
  }
@@ -14934,7 +15105,9 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
14934
15105
  const attrs = getConstant(tViewConsts, attrsIndex);
14935
15106
  const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, name, attrs);
14936
15107
  const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
14937
- ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
15108
+ if (ngDevMode) {
15109
+ validateElementIsKnown(native, lView, tNode.value, tView.schemas, hasDirectives);
15110
+ }
14938
15111
  if (tNode.attrs !== null) {
14939
15112
  computeStaticStyling(tNode, tNode.attrs, false);
14940
15113
  }
@@ -15071,11 +15244,12 @@ function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
15071
15244
  * - the element is allowed by one of the schemas
15072
15245
  *
15073
15246
  * @param element Element to validate
15247
+ * @param lView An `LView` that represents a current component that is being rendered.
15074
15248
  * @param tagName Name of the tag to check
15075
15249
  * @param schemas Array of schemas
15076
15250
  * @param hasDirectives Boolean indicating that the element matches any directive
15077
15251
  */
15078
- function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
15252
+ function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) {
15079
15253
  // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
15080
15254
  // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
15081
15255
  // defined as an array (as an empty array in case `schemas` field is not defined) and we should
@@ -15095,14 +15269,19 @@ function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
15095
15269
  (typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
15096
15270
  !customElements.get(tagName));
15097
15271
  if (isUnknown && !matchingSchemas(schemas, tagName)) {
15098
- let message = `'${tagName}' is not a known element:\n`;
15099
- message += `1. If '${tagName}' is an Angular component, then verify that it is part of this module.\n`;
15272
+ const isHostStandalone = isHostComponentStandalone(lView);
15273
+ const templateLocation = getTemplateLocationDetails(lView);
15274
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
15275
+ let message = `'${tagName}' is not a known element${templateLocation}:\n`;
15276
+ message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? 'included in the \'@Component.imports\' of this component' :
15277
+ 'a part of an @NgModule where this component is declared'}.\n`;
15100
15278
  if (tagName && tagName.indexOf('-') > -1) {
15101
- message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.`;
15279
+ message +=
15280
+ `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
15102
15281
  }
15103
15282
  else {
15104
15283
  message +=
15105
- `2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;
15284
+ `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
15106
15285
  }
15107
15286
  if (shouldThrowErrorOnUnknownElement) {
15108
15287
  throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);
@@ -21595,7 +21774,7 @@ class Version {
21595
21774
  /**
21596
21775
  * @publicApi
21597
21776
  */
21598
- const VERSION = new Version('14.0.0-rc.1');
21777
+ const VERSION = new Version('14.0.0');
21599
21778
 
21600
21779
  /**
21601
21780
  * @license
@@ -22267,6 +22446,7 @@ class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
22267
22446
  * Create a new environment injector.
22268
22447
  *
22269
22448
  * @publicApi
22449
+ * @developerPreview
22270
22450
  */
22271
22451
  function createEnvironmentInjector(providers, parent = null, debugName = null) {
22272
22452
  const adapter = new EnvironmentNgModuleRefAdapter(providers, parent, debugName);
@@ -22323,7 +22503,7 @@ StandaloneService.ɵprov = ɵɵdefineInjectable({
22323
22503
  factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
22324
22504
  });
22325
22505
  /**
22326
- * A feature that acts as a setup code for the {@see StandaloneService}.
22506
+ * A feature that acts as a setup code for the {@link StandaloneService}.
22327
22507
  *
22328
22508
  * The most important responsaibility of this feature is to expose the "getStandaloneInjector"
22329
22509
  * function (an entry points to a standalone injector creation) on a component definition object. We
@@ -24396,6 +24576,12 @@ function isStandalone(type) {
24396
24576
  const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
24397
24577
  return def !== null ? def.standalone : false;
24398
24578
  }
24579
+ function generateStandaloneInDeclarationsError(type, location) {
24580
+ const prefix = `Unexpected "${stringifyForError(type)}" found in the "declarations" array of the`;
24581
+ const suffix = `"${stringifyForError(type)}" is marked as standalone and can't be declared ` +
24582
+ 'in any NgModule - did you intend to import it instead (by adding it to the "imports" array)?';
24583
+ return `${prefix} ${location}, ${suffix}`;
24584
+ }
24399
24585
  function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
24400
24586
  if (verifiedNgModule.get(moduleType))
24401
24587
  return;
@@ -24467,7 +24653,8 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24467
24653
  type = resolveForwardRef(type);
24468
24654
  const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
24469
24655
  if (def === null || def === void 0 ? void 0 : def.standalone) {
24470
- errors.push(`Unexpected "${stringifyForError(type)}" declaration in "${stringifyForError(moduleType)}" NgModule. "${stringifyForError(type)}" is marked as standalone and can't be declared in any NgModule - did you intend to import it?`);
24656
+ const location = `"${stringifyForError(moduleType)}" NgModule`;
24657
+ errors.push(generateStandaloneInDeclarationsError(type, location));
24471
24658
  }
24472
24659
  }
24473
24660
  function verifyExportsAreDeclaredOrReExported(type) {