-
Notifications
You must be signed in to change notification settings - Fork 25k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(compiler-cli): Use typescript to resolve modules for metadata generation #22856
Conversation
93639be
to
f9ad283
Compare
Seems like a test failure in Travis was due to running out of space - I don't think that has anything to do with this PR, as nothing here writes to disk. |
Hi @jeffora! This PR has merge conflicts due to recent upstream merges. |
f9ad283
to
15b5de9
Compare
It would be great if someone could get some eyes on this, even if just to say it's an unwanted change cc @matsko |
Hi @jeffora! This PR has merge conflicts due to recent upstream merges. |
15b5de9
to
38e2266
Compare
Updated this again, would be really great to get someone from the team to comment on this cc @matsko |
@alxhub Would be really nice if you could review this pull request. It's a rather serious issue. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM other than my one request. Thank you for doing this work!
getMetadataFor(fileName: string, containingFile: string): ModuleMetadata|undefined { | ||
const {resolvedModule} = | ||
ts.resolveModuleName(fileName, containingFile, this.options, this.host); | ||
if (!resolvedModule) return undefined; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think for safety, we should fall back on the old logic if resolveModuleName
returns undefined
. That is, we should append .ts
to the file name in that case. That way we won't break existing apps if they somehow depend on our old broken behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated this to fallback to old behavior if the module is not resolved.
38e2266
to
512b7b8
Compare
@jeffora It currently fails CI. Can you have a look. |
Some weird error? Is there some imposed way to import here?
|
The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file
512b7b8
to
1632c53
Compare
@mhevery I've tried to recreate this locally, but I'm getting a bunch of different |
…2856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close #22856
Sorry if this is a dumb question, need a little help. Do I need to pull this repo and build it manually or can I update my npm package somehow to obtain these changes? |
You should wait for the next Angular release which will include this change, and update your package.json version to point to the lastest once’s. |
Wonderful, do we have any idea when the next release will be cut? Is there a schedule? |
@jakeclarklucentmobile It should be cut some time tomorrow morning. We generally cut a release once a week on Wednesdays. |
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (#19127) PR Close #19127 docs(router): add `paramsInheritanceStrategy` documentation (#22590) PR Close #22590 docs: add app.module to changed documents (#23876) PR Close #23876 docs: clarify faqs about services (#24079) PR Close #24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (#24228) PR Close #24228 docs: describe rounding behaviour of 'DecimalPipe' (#24303) PR Close #24303 docs(common): fix in the documentation of PUT (#24528) PR Close #24528 docs: add workspace and related cli terms (#24633) PR Close #24633 docs(changelog): correct inaccuracies (#24713) PR Close #24713 test: integration test for TS 2.9.x (#24749) PR Close #24749 fix(ivy): pipes are pure by default (#24750) PR Close #24750 build(bazel): update to rule_nodejs 0.10.0 (#24759) PR Close #24759 build: upgrade jasmine (and related typings) to latest version (#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes #23952 Closes #24733 PR Close #19904 test: make `NgMatchers` type-aware (#19904) PR Close #19904 refactor: infer type for `it()` assertion functions (#19904) PR Close #19904 build: upgrade jasmine to 2.99.x and fix tests (#19904) PR Close #19904 refactor: re-organize and "modernize" cjs-jasmine scripts (#19904) PR Close #19904 test: run unit tests in random order (#19904) PR Close #19904 build: upgrade jasmine to 3.1.0 (#19904) PR Close #19904 build: upgrade karma and related dependencies (#19904) PR Close #19904 docs: refactored ng-container code (#22742) PR Close #22742 docs: update Angular Boot Camp description (#23653) PR Close #23653 feat(service-worker): add support for `?` in SW config globbing (#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close #24105 refactor(service-worker): avoid unnecessary operations and remove unused code (#24127) PR Close #24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (#24127) PR Close #24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (#24602) PR Close #24602 fix(language-service): do not overwrite native `Reflect` (#24299) Fixes #21420 PR Close #24299 fix(common): use correct currency format for locale de-AT (#24658) Fixes #24609 PR Close #24658 fix(ivy): correctly resolve Array property access (#24664) PR Close #24664 build: make `internal-angular` karma reporter compatible with latest karma (#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close #24803 build: remove unnecessary `internal-angular` karma reporter (#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close #24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close #24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close #24815 docs(aio): unified console.log single string style (#22737) PR Close #22737 docs: unified console.log single string style (#22737) PR Close #22737 fix(compiler-cli): Use typescript to resolve modules for metadata (#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close #22856 docs: clarify wording in architecture overview (#24481) Closes #23463 Closes #22158 PR Close #24481 docs: add tree-shakable providers (#24481) PR Close #24481 fix(ivy): support projecting into dynamic views (#24752) PR Close #24752 refactor(ivy): replace pNextOrParent with TNode props (#24752) PR Close #24752 docs: fix typo in Universal guide (#24812) PR Close #24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (#24830) docs: correct project definition (#24807) PR Close #24807 build: update to latest nodejs bazel rules (#24817) PR Close #24817 fix(common): do not round factional seconds (#24831) fixes #24384 PR Close #24831 docs: fix typos referencing inline component styles (#22557) PR Close #22557 fix(router): add ability to recover from malformed url (#23283) Fixes #21468 PR Close #23283 docs: fix incorrect forms selector references (#22631) PR Close #22631 docs(aio): unified string chaining (#22735) PR Close #22735 docs: unified string chaining (#22735) PR Close #22735 docs(forms): added missing backtick (#24451) Fixed trivial markdown problem with a missing backtick. PR Close #24451 docs(forms): update API reference for form validators (#24734) PR Close #24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient PR Close #22741
docs: fix typos in 'Httpclient' docs (#19127) PR Close #19127 docs(router): add `paramsInheritanceStrategy` documentation (#22590) PR Close #22590 docs: add app.module to changed documents (#23876) PR Close #23876 docs: clarify faqs about services (#24079) PR Close #24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (#24228) PR Close #24228 docs: describe rounding behaviour of 'DecimalPipe' (#24303) PR Close #24303 docs(common): fix in the documentation of PUT (#24528) PR Close #24528 docs: add workspace and related cli terms (#24633) PR Close #24633 docs(changelog): correct inaccuracies (#24713) PR Close #24713 test: integration test for TS 2.9.x (#24749) PR Close #24749 fix(ivy): pipes are pure by default (#24750) PR Close #24750 build(bazel): update to rule_nodejs 0.10.0 (#24759) PR Close #24759 build: upgrade jasmine (and related typings) to latest version (#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes #23952 Closes #24733 PR Close #19904 test: make `NgMatchers` type-aware (#19904) PR Close #19904 refactor: infer type for `it()` assertion functions (#19904) PR Close #19904 build: upgrade jasmine to 2.99.x and fix tests (#19904) PR Close #19904 refactor: re-organize and "modernize" cjs-jasmine scripts (#19904) PR Close #19904 test: run unit tests in random order (#19904) PR Close #19904 build: upgrade jasmine to 3.1.0 (#19904) PR Close #19904 build: upgrade karma and related dependencies (#19904) PR Close #19904 docs: refactored ng-container code (#22742) PR Close #22742 docs: update Angular Boot Camp description (#23653) PR Close #23653 feat(service-worker): add support for `?` in SW config globbing (#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close #24105 refactor(service-worker): avoid unnecessary operations and remove unused code (#24127) PR Close #24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (#24127) PR Close #24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (#24602) PR Close #24602 fix(language-service): do not overwrite native `Reflect` (#24299) Fixes #21420 PR Close #24299 fix(common): use correct currency format for locale de-AT (#24658) Fixes #24609 PR Close #24658 fix(ivy): correctly resolve Array property access (#24664) PR Close #24664 build: make `internal-angular` karma reporter compatible with latest karma (#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close #24803 build: remove unnecessary `internal-angular` karma reporter (#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close #24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close #24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close #24815 docs(aio): unified console.log single string style (#22737) PR Close #22737 docs: unified console.log single string style (#22737) PR Close #22737 fix(compiler-cli): Use typescript to resolve modules for metadata (#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close #22856 docs: clarify wording in architecture overview (#24481) Closes #23463 Closes #22158 PR Close #24481 docs: add tree-shakable providers (#24481) PR Close #24481 fix(ivy): support projecting into dynamic views (#24752) PR Close #24752 refactor(ivy): replace pNextOrParent with TNode props (#24752) PR Close #24752 docs: fix typo in Universal guide (#24812) PR Close #24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (#24830) docs: correct project definition (#24807) PR Close #24807 build: update to latest nodejs bazel rules (#24817) PR Close #24817 fix(common): do not round factional seconds (#24831) fixes #24384 PR Close #24831 docs: fix typos referencing inline component styles (#22557) PR Close #22557 fix(router): add ability to recover from malformed url (#23283) Fixes #21468 PR Close #23283 docs: fix incorrect forms selector references (#22631) PR Close #22631 docs(aio): unified string chaining (#22735) PR Close #22735 docs: unified string chaining (#22735) PR Close #22735 docs(forms): added missing backtick (#24451) Fixed trivial markdown problem with a missing backtick. PR Close #24451 docs(forms): update API reference for form validators (#24734) PR Close #24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient PR Close #22741
🆖 🚤 |
@jeffora / @mhevery , I'm still having problems with barrel files. I'm not 100% sure, but I think that this patch solves first level of barrel files, but the folder nesting is somehow lost, and when searching for nested imports in the resolved barrel, it treats the Lets say: Gets correctly resolved, but the relative imports from inside |
Is this issue resolved? |
I'm still facing this issue with angular 7 |
I am experiencing exactly same issue. |
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
The current module resolution for the metadata collector simply attaches
.ts
to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a.js
or.d.ts
filePR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
The metadata collector does not generate correct metadata when a file uses an implied "index" in an import or export path. In the following example, the
import
refers to a path../tools
that will be resolved by typescript as../tools/index.ts
. The metadata collector, however, simply appends.ts
directly to the path string before attempting to find it to generate metadata, thus looking for../tools.ts
, which doesn't exist. This results in the metadata having no information for named entryɵb
, despite having it listed in imports and origins.Issue Number: N/A
What is the new behavior?
This PR introduces a change to use the typescript module resolver to find files for metadata instead of just appending
.ts
to the input path name. This has the benefit that it will follow the same conventions that the runtime module resolution will use, and supports correctly finding files in all existing situations, as well as all situations where the path actually points to an index file (i.e.../tools
will find../tools.ts
or../tools/index.ts
depending on how the project is structured).With this change, correct metadata is generated for the same project as defined above - as seen below,
ɵb
now has metadata properly generated:Does this PR introduce a breaking change?
Other information
I don't believe this closes any open issue with this repo currently, although it is possibly a start for #21082. However, I believe this is part of the root cause behind a range of issues in other libraries, including ng-packagr: