https://github.com/angular/angular
- HEAD
- refs/heads/10.0.x
- refs/heads/10.1.x
- refs/heads/10.2.x
- refs/heads/11.0.x
- refs/heads/11.1.x
- refs/heads/11.2.x
- refs/heads/12.0.x
- refs/heads/12.1.x
- refs/heads/12.2.x
- refs/heads/12.3.x
- refs/heads/13.0.x
- refs/heads/13.1.x
- refs/heads/13.2.x
- refs/heads/13.3.x
- refs/heads/13.4.x
- refs/heads/14.0.x
- refs/heads/14.1.x
- refs/heads/14.2.x
- refs/heads/14.3.x
- refs/heads/15.0.x
- refs/heads/15.1.x
- refs/heads/15.2.x
- refs/heads/16.0.x
- refs/heads/16.1.x
- refs/heads/16.2.x
- refs/heads/17.0.x
- refs/heads/17.1.x
- refs/heads/17.2.x
- refs/heads/17.3.x
- refs/heads/18.0.x
- refs/heads/18.1.x
- refs/heads/2.0.x
- refs/heads/2.1.x
- refs/heads/2.2.x
- refs/heads/2.3.x
- refs/heads/2.4.x
- refs/heads/4.0.x
- refs/heads/4.1.x
- refs/heads/4.2.x
- refs/heads/4.3.x
- refs/heads/4.4.x
- refs/heads/5.0.x
- refs/heads/5.1.x
- refs/heads/5.2.x
- refs/heads/5.2x
- refs/heads/52695-improve-clarity-of-tutorial-intro
- refs/heads/53015-add-h1-for-skip-to-main-content
- refs/heads/55510/fix-security-guide-links
- refs/heads/55725-fix-visible-snippets
- refs/heads/6.0.x
- refs/heads/6.1.x
- refs/heads/7.0.x
- refs/heads/7.1.x
- refs/heads/7.2.x
- refs/heads/8.0.x
- refs/heads/8.1.x
- refs/heads/8.2.x
- refs/heads/9.0.x
- refs/heads/9.1.x
- refs/heads/JeanMeche-patch-1
- refs/heads/add-adev-docs
- refs/heads/add-ben-to-reviewers
- refs/heads/add-docs-script-command
- refs/heads/add-missing-border-on-editor
- refs/heads/backup-7.2.x
- refs/heads/bazel
- refs/heads/browser-update-test
- refs/heads/docs-developer-preview-fix
- refs/heads/docs/update-security-guide-reference
- refs/heads/dylhunn-patch-1
- refs/heads/dylhunn-zonejs-instructions
- refs/heads/fix-extra-padding-on-tutorial-editor
- refs/heads/fix-missing-security-guide
- refs/heads/fix-playground-spacing-issue
- refs/heads/g3
- refs/heads/image-directive-13.3.x
- refs/heads/in-depth-guides-refactor
- refs/heads/jperrott-test
- refs/heads/main
- refs/heads/publish-snapshots
- refs/heads/redirects-aio
- refs/heads/remove-aio-stuff
- refs/heads/remove-embedded-editor-from-first-app
- refs/heads/robots-aio
- refs/heads/saucelabs-bazel
- refs/heads/signals
- refs/heads/sonukapoor-patch-1
- refs/heads/styling-experiments
- refs/heads/twerske-patch-1
- refs/heads/twerske-patch-2
- refs/heads/twerske-v18-changelog
- refs/heads/update-dropdown-for-v18
- refs/heads/watch-burn-rates
- refs/heads/windows-executor-no-cache
- refs/remotes/presubmit-pr-2853
- refs/renovate/branches/renovate/core-js-3.x
- refs/renovate/branches/renovate/cross-repo-angular-dependencies
- refs/renovate/branches/renovate/firebase-tools-11.x
- refs/reviewable/pr1707/r1
- refs/reviewable/pr1855/r1
- refs/reviewable/pr1977/r1
- refs/reviewable/pr1995/r1
- refs/reviewable/pr2164/r1
- refs/reviewable/pr2218/r1
- refs/reviewable/pr2255/r1
- refs/reviewable/pr2257/r1
- refs/reviewable/pr2317/r1
- refs/reviewable/pr2337/r1
- refs/reviewable/pr2347/r1
- refs/reviewable/pr2407/r1
- refs/reviewable/pr2419/r1
- refs/reviewable/pr2419/r2
- refs/reviewable/pr2419/r3
- refs/reviewable/pr2463/r1
- refs/reviewable/pr2464/r1
- refs/reviewable/pr2464/r2
- refs/reviewable/pr2568/r1
- refs/reviewable/pr2573/r1
- refs/reviewable/pr2573/r2
- refs/reviewable/pr2587/r1
- refs/reviewable/pr2588/r1
- refs/reviewable/pr2593/r1
- refs/reviewable/pr2610/r1
- refs/reviewable/pr2634/r1
- refs/reviewable/pr2641/r1
- refs/reviewable/pr2658/r1
- refs/reviewable/pr2658/r2
- refs/reviewable/pr2665/r1
- refs/reviewable/pr2666/r1
- refs/reviewable/pr2666/r2
- refs/reviewable/pr2667/r1
- refs/reviewable/pr2668/r1
- refs/reviewable/pr2676/r1
- refs/reviewable/pr2679/r1
- refs/reviewable/pr2679/r2
- refs/reviewable/pr2690/r1
- refs/reviewable/pr2695/r1
- refs/reviewable/pr2695/r2
- refs/reviewable/pr2695/r3
- refs/reviewable/pr2699/r1
- refs/reviewable/pr2699/r2
- refs/reviewable/pr2699/r3
- refs/reviewable/pr2699/r4
- refs/reviewable/pr2699/r5
- refs/reviewable/pr2699/r6
- refs/reviewable/pr2703/r1
- refs/reviewable/pr2709/r1
- refs/reviewable/pr2709/r2
- refs/reviewable/pr2711/r1
- refs/reviewable/pr2711/r2
- refs/reviewable/pr2713/r1
- refs/reviewable/pr2713/r2
- refs/reviewable/pr2713/r3
- refs/reviewable/pr2714/r1
- refs/reviewable/pr2714/r2
- refs/reviewable/pr2714/r3
- refs/reviewable/pr2715/r1
- refs/reviewable/pr2715/r2
- refs/reviewable/pr2717/r1
- refs/reviewable/pr2717/r2
- refs/reviewable/pr2719/r1
- refs/reviewable/pr2729/r1
- refs/reviewable/pr2729/r2
- refs/reviewable/pr2731/r1
- refs/reviewable/pr2731/r2
- refs/reviewable/pr2734/r1
- refs/reviewable/pr2735/r1
- refs/reviewable/pr2735/r2
- refs/reviewable/pr2736/r1
- refs/reviewable/pr2737/r1
- refs/reviewable/pr2737/r2
- refs/reviewable/pr2737/r3
- refs/reviewable/pr2737/r4
- refs/reviewable/pr2738/r1
- refs/reviewable/pr2738/r2
- refs/reviewable/pr2742/r1
- refs/reviewable/pr2743/r1
- refs/reviewable/pr2744/r1
- refs/reviewable/pr2744/r2
- refs/reviewable/pr2746/r1
- refs/reviewable/pr2746/r2
- refs/reviewable/pr2749/r1
- refs/reviewable/pr2750/r1
- refs/reviewable/pr2752/r1
- refs/reviewable/pr2757/r1
- refs/reviewable/pr2758/r1
- refs/reviewable/pr2759/r1
- refs/reviewable/pr2760/r1
- refs/reviewable/pr2762/r1
- refs/reviewable/pr2764/r1
- refs/reviewable/pr2767/r1
- refs/reviewable/pr2769/r1
- refs/reviewable/pr2772/r1
- refs/reviewable/pr2772/r2
- refs/reviewable/pr2772/r3
- refs/reviewable/pr2772/r4
- refs/reviewable/pr2773/r1
- refs/reviewable/pr2778/r1
- refs/reviewable/pr2778/r2
- refs/reviewable/pr2780/r1
- refs/reviewable/pr2781/r1
- refs/reviewable/pr2784/r1
- refs/reviewable/pr2789/r1
- refs/reviewable/pr2791/r1
- refs/reviewable/pr2792/r1
- refs/reviewable/pr2792/r2
- refs/reviewable/pr2797/r1
- refs/reviewable/pr2801/r1
- refs/reviewable/pr2802/r1
- refs/reviewable/pr2804/r1
- refs/reviewable/pr2805/r1
- refs/reviewable/pr2854/r1
- refs/reviewable/pr3118/r1
- refs/reviewable/pr3126/r1
- refs/reviewable/pr3132/r1
- refs/reviewable/pr3135/r1
- refs/reviewable/pr3135/r2
- refs/reviewable/pr3135/r3
- refs/reviewable/pr3158/r1
- refs/reviewable/pr3564/r1
- refs/reviewable/pr3592/r1
- refs/reviewable/pr4656/r1
- refs/reviewable/pr4657/r1
- refs/reviewable/pr4702/r1
- refs/reviewable/pr4745/r1
- refs/reviewable/pr864/r1
- refs/tags/10.0.0
- refs/tags/10.0.0-next.0
- refs/tags/10.0.0-next.1
- refs/tags/10.0.0-next.2
- refs/tags/10.0.0-next.3
- refs/tags/10.0.0-next.4
- refs/tags/10.0.0-next.5
- refs/tags/10.0.0-next.6
- refs/tags/10.0.0-next.7
- refs/tags/10.0.0-next.8
- refs/tags/10.0.0-next.9
- refs/tags/10.0.0-rc.0
- refs/tags/10.0.0-rc.2
- refs/tags/10.0.0-rc.3
- refs/tags/10.0.0-rc.4
- refs/tags/10.0.0-rc.5
- refs/tags/10.0.0-rc.6
- refs/tags/10.0.1
- refs/tags/10.0.10
- refs/tags/10.0.11
- refs/tags/10.0.12
- refs/tags/10.0.13
- refs/tags/10.0.14
- refs/tags/10.0.2
- refs/tags/10.0.3
- refs/tags/10.0.4
- refs/tags/10.0.5
- refs/tags/10.0.6
- refs/tags/10.0.7
- refs/tags/10.0.8
- refs/tags/10.0.9
- refs/tags/10.1.0
- refs/tags/10.1.0-next.0
- refs/tags/10.1.0-next.1
- refs/tags/10.1.0-next.2
- refs/tags/10.1.0-next.3
- refs/tags/10.1.0-next.4
- refs/tags/10.1.0-next.5
- refs/tags/10.1.0-next.6
- refs/tags/10.1.0-next.7
- refs/tags/10.1.0-next.8
- refs/tags/10.1.0-rc.0
- refs/tags/10.1.1
- refs/tags/10.1.2
- refs/tags/10.1.3
- refs/tags/10.1.4
- refs/tags/10.1.5
- refs/tags/10.1.6
- refs/tags/10.2.0
- refs/tags/10.2.1
- refs/tags/10.2.2
- refs/tags/10.2.3
- refs/tags/10.2.4
- refs/tags/10.2.5
- refs/tags/11.0.0
- refs/tags/11.0.0-next.0
- refs/tags/11.0.0-next.1
- refs/tags/11.0.0-next.2
- refs/tags/11.0.0-next.3
- refs/tags/11.0.0-next.4
- refs/tags/11.0.0-next.5
- refs/tags/11.0.0-next.6
- refs/tags/11.0.0-rc.0
- refs/tags/11.0.0-rc.1
- refs/tags/11.0.0-rc.2
- refs/tags/11.0.0-rc.3
- refs/tags/11.0.1
- refs/tags/11.0.2
- refs/tags/11.0.3
- refs/tags/11.0.4
- refs/tags/11.0.5
- refs/tags/11.0.6
- refs/tags/11.0.7
- refs/tags/11.0.8
- refs/tags/11.0.9
- refs/tags/11.1.0
- refs/tags/11.1.0-next.0
- refs/tags/11.1.0-next.1
- refs/tags/11.1.0-next.2
- refs/tags/11.1.0-next.3
- refs/tags/11.1.0-next.4
- refs/tags/11.1.0-next.5
- refs/tags/11.1.0-rc.0
- refs/tags/11.1.1
- refs/tags/11.1.2
- refs/tags/11.2.0
- refs/tags/11.2.0-next.0
- refs/tags/11.2.0-next.1
- refs/tags/11.2.0-rc.0
- refs/tags/11.2.1
- refs/tags/11.2.10
- refs/tags/11.2.11
- refs/tags/11.2.12
- refs/tags/11.2.13
- refs/tags/11.2.14
- refs/tags/11.2.2
- refs/tags/11.2.3
- refs/tags/11.2.4
- refs/tags/11.2.5
- refs/tags/11.2.6
- refs/tags/11.2.7
- refs/tags/11.2.8
- refs/tags/11.2.9
- refs/tags/12.0.0-next.0
- refs/tags/12.0.0-next.1
- refs/tags/12.0.0-next.2
- refs/tags/12.0.0-next.3
- refs/tags/12.0.0-next.4
- refs/tags/12.0.0-next.5
- refs/tags/12.0.0-next.6
- refs/tags/12.0.0-next.7
- refs/tags/12.0.0-next.8
- refs/tags/12.0.0-next.9
- refs/tags/12.0.0-rc.0
- refs/tags/12.0.0-rc.1
- refs/tags/12.0.0-rc.2
- refs/tags/12.0.0-rc.3
- refs/tags/12.0.1
- refs/tags/12.0.2
- refs/tags/12.0.3
- refs/tags/12.0.4
- refs/tags/12.0.5
- refs/tags/12.1.0
- refs/tags/12.1.0-next.2
- refs/tags/12.1.0-next.3
- refs/tags/12.1.0-next.4
- refs/tags/12.1.0-next.5
- refs/tags/12.1.0-next.6
- refs/tags/12.1.1
- refs/tags/12.1.2
- refs/tags/12.1.3
- refs/tags/12.1.4
- refs/tags/12.1.5
- refs/tags/12.2.0
- refs/tags/12.2.0-next.0
- refs/tags/12.2.0-next.1
- refs/tags/12.2.0-next.2
- refs/tags/12.2.0-next.3
- refs/tags/12.2.0-rc.0
- refs/tags/12.2.1
- refs/tags/12.2.10
- refs/tags/12.2.11
- refs/tags/12.2.12
- refs/tags/12.2.13
- refs/tags/12.2.14
- refs/tags/12.2.15
- refs/tags/12.2.16
- refs/tags/12.2.17
- refs/tags/12.2.2
- refs/tags/12.2.3
- refs/tags/12.2.4
- refs/tags/12.2.5
- refs/tags/12.2.6
- refs/tags/12.2.7
- refs/tags/12.2.8
- refs/tags/12.2.9
- refs/tags/13.0.0
- refs/tags/13.0.0-next.0
- refs/tags/13.0.0-next.1
- refs/tags/13.0.0-next.10
- refs/tags/13.0.0-next.11
- refs/tags/13.0.0-next.12
- refs/tags/13.0.0-next.13
- refs/tags/13.0.0-next.14
- refs/tags/13.0.0-next.15
- refs/tags/13.0.0-next.2
- refs/tags/13.0.0-next.3
- refs/tags/13.0.0-next.4
- refs/tags/13.0.0-next.5
- refs/tags/13.0.0-next.6
- refs/tags/13.0.0-next.7
- refs/tags/13.0.0-next.8
- refs/tags/13.0.0-next.9
- refs/tags/13.0.0-rc.0
- refs/tags/13.0.0-rc.1
- refs/tags/13.0.0-rc.2
- refs/tags/13.0.0-rc.3
- refs/tags/13.0.1
- refs/tags/13.0.2
- refs/tags/13.0.3
- refs/tags/13.1.0
- refs/tags/13.1.0-next.0
- refs/tags/13.1.0-next.1
- refs/tags/13.1.0-next.2
- refs/tags/13.1.0-next.3
- refs/tags/13.1.1
- refs/tags/13.1.2
- refs/tags/13.1.3
- refs/tags/13.2.0
- refs/tags/13.2.0-next.0
- refs/tags/13.2.0-next.1
- refs/tags/13.2.0-next.2
- refs/tags/13.2.0-rc.0
- refs/tags/13.2.0-rc.1
- refs/tags/13.2.1
- refs/tags/13.2.2
- refs/tags/13.2.3
- refs/tags/13.2.4
- refs/tags/13.2.5
- refs/tags/13.2.6
- refs/tags/13.2.7
- refs/tags/13.3.0
- refs/tags/13.3.0-next.0
- refs/tags/13.3.0-rc.0
- refs/tags/13.3.1
- refs/tags/13.3.10
- refs/tags/13.3.11
- refs/tags/13.3.12
- refs/tags/13.3.2
- refs/tags/13.3.3
- refs/tags/13.3.4
- refs/tags/13.3.5
- refs/tags/13.3.6
- refs/tags/13.3.7
- refs/tags/13.3.8
- refs/tags/13.3.9
- refs/tags/13.4.0
- refs/tags/14.0.0
- refs/tags/14.0.0-next.0
- refs/tags/14.0.0-next.1
- refs/tags/14.0.0-next.10
- refs/tags/14.0.0-next.11
- refs/tags/14.0.0-next.12
- refs/tags/14.0.0-next.13
- refs/tags/14.0.0-next.14
- refs/tags/14.0.0-next.15
- refs/tags/14.0.0-next.16
- refs/tags/14.0.0-next.2
- refs/tags/14.0.0-next.3
- refs/tags/14.0.0-next.4
- refs/tags/14.0.0-next.5
- refs/tags/14.0.0-next.6
- refs/tags/14.0.0-next.7
- refs/tags/14.0.0-next.8
- refs/tags/14.0.0-next.9
- refs/tags/14.0.0-rc.0
- refs/tags/14.0.0-rc.1
- refs/tags/14.0.0-rc.2
- refs/tags/14.0.0-rc.3
- refs/tags/14.0.1
- refs/tags/14.0.2
- refs/tags/14.0.3
- refs/tags/14.0.4
- refs/tags/14.0.5
- refs/tags/14.0.6
- refs/tags/14.0.7
- refs/tags/14.1.0
- refs/tags/14.1.0-next.0
- refs/tags/14.1.0-next.1
- refs/tags/14.1.0-next.2
- refs/tags/14.1.0-next.3
- refs/tags/14.1.0-next.4
- refs/tags/14.1.0-rc.0
- refs/tags/14.1.1
- refs/tags/14.1.2
- refs/tags/14.1.3
- refs/tags/14.2.0
- refs/tags/14.2.0-next.0
- refs/tags/14.2.0-next.1
- refs/tags/14.2.0-rc.0
- refs/tags/14.2.1
- refs/tags/14.2.10
- refs/tags/14.2.11
- refs/tags/14.2.12
- refs/tags/14.2.2
- refs/tags/14.2.3
- refs/tags/14.2.4
- refs/tags/14.2.5
- refs/tags/14.2.6
- refs/tags/14.2.7
- refs/tags/14.2.8
- refs/tags/14.2.9
- refs/tags/14.3.0
- refs/tags/15.0.0
- refs/tags/15.0.0-next.0
- refs/tags/15.0.0-next.1
- refs/tags/15.0.0-next.2
- refs/tags/15.0.0-next.3
- refs/tags/15.0.0-next.4
- refs/tags/15.0.0-next.5
- refs/tags/15.0.0-next.6
- refs/tags/15.0.0-rc.0
- refs/tags/15.0.0-rc.1
- refs/tags/15.0.0-rc.2
- refs/tags/15.0.0-rc.3
- refs/tags/15.0.0-rc.4
- refs/tags/15.0.1
- refs/tags/15.0.2
- refs/tags/15.0.3
- refs/tags/15.0.4
- refs/tags/15.1.0
- refs/tags/15.1.0-next.0
- refs/tags/15.1.0-next.1
- refs/tags/15.1.0-next.2
- refs/tags/15.1.0-next.3
- refs/tags/15.1.0-rc.0
- refs/tags/15.1.1
- refs/tags/15.1.2
- refs/tags/15.1.3
- refs/tags/15.1.4
- refs/tags/15.1.5
- refs/tags/15.2.0
- refs/tags/15.2.0-next.0
- refs/tags/15.2.0-next.1
- refs/tags/15.2.0-next.2
- refs/tags/15.2.0-next.3
- refs/tags/15.2.0-next.4
- refs/tags/15.2.0-rc.0
- refs/tags/15.2.1
- refs/tags/15.2.10
- refs/tags/15.2.2
- refs/tags/15.2.3
- refs/tags/15.2.4
- refs/tags/15.2.5
- refs/tags/15.2.6
- refs/tags/15.2.7
- refs/tags/15.2.8
- refs/tags/15.2.9
- refs/tags/16.0.0
- refs/tags/16.0.0-next.0
- refs/tags/16.0.0-next.1
- refs/tags/16.0.0-next.2
- refs/tags/16.0.0-next.3
- refs/tags/16.0.0-next.4
- refs/tags/16.0.0-next.5
- refs/tags/16.0.0-next.6
- refs/tags/16.0.0-next.7
- refs/tags/16.0.0-rc.0
- refs/tags/16.0.0-rc.1
- refs/tags/16.0.0-rc.2
- refs/tags/16.0.0-rc.3
- refs/tags/16.0.0-rc.4
- refs/tags/16.0.1
- refs/tags/16.0.2
- refs/tags/16.0.3
- refs/tags/16.0.4
- refs/tags/16.0.5
- refs/tags/16.0.6
- refs/tags/16.1.0
- refs/tags/16.1.0-next.0
- refs/tags/16.1.0-next.1
- refs/tags/16.1.0-next.2
- refs/tags/16.1.0-next.3
- refs/tags/16.1.0-rc.0
- refs/tags/16.1.1
- refs/tags/16.1.2
- refs/tags/16.1.3
- refs/tags/16.1.4
- refs/tags/16.1.5
- refs/tags/16.1.6
- refs/tags/16.1.7
- refs/tags/16.1.8
- refs/tags/16.1.9
- refs/tags/16.2.0
- refs/tags/16.2.0-next.0
- refs/tags/16.2.0-next.1
- refs/tags/16.2.0-next.2
- refs/tags/16.2.0-next.3
- refs/tags/16.2.0-next.4
- refs/tags/16.2.0-rc.0
- refs/tags/16.2.1
- refs/tags/16.2.10
- refs/tags/16.2.11
- refs/tags/16.2.12
- refs/tags/16.2.2
- refs/tags/16.2.3
- refs/tags/16.2.4
- refs/tags/16.2.5
- refs/tags/16.2.6
- refs/tags/16.2.7
- refs/tags/16.2.8
- refs/tags/16.2.9
- refs/tags/17.0.0
- refs/tags/17.0.0-next.0
- refs/tags/17.0.0-next.1
- refs/tags/17.0.0-next.2
- refs/tags/17.0.0-next.3
- refs/tags/17.0.0-next.4
- refs/tags/17.0.0-next.5
- refs/tags/17.0.0-next.6
- refs/tags/17.0.0-next.7
- refs/tags/17.0.0-next.8
- refs/tags/17.0.0-rc.0
- refs/tags/17.0.0-rc.1
- refs/tags/17.0.0-rc.2
- refs/tags/17.0.0-rc.3
- refs/tags/17.0.1
- refs/tags/17.0.2
- refs/tags/17.0.3
- refs/tags/17.0.4
- refs/tags/17.0.5
- refs/tags/17.0.6
- refs/tags/17.0.7
- refs/tags/17.0.8
- refs/tags/17.0.9
- refs/tags/17.1.0
- refs/tags/17.1.0-next.0
- refs/tags/17.1.0-next.1
- refs/tags/17.1.0-next.2
- refs/tags/17.1.0-next.3
- refs/tags/17.1.0-next.4
- refs/tags/17.1.0-next.5
- refs/tags/17.1.0-rc.0
- refs/tags/17.1.1
- refs/tags/17.1.2
- refs/tags/17.1.3
- refs/tags/17.2.0
- refs/tags/17.2.0-next.0
- refs/tags/17.2.0-next.1
- refs/tags/17.2.0-rc.0
- refs/tags/17.2.0-rc.1
- refs/tags/17.2.1
- refs/tags/17.2.2
- refs/tags/17.2.3
- refs/tags/17.2.4
- refs/tags/17.3.0
- refs/tags/17.3.0-next.0
- refs/tags/17.3.0-next.1
- refs/tags/17.3.0-rc.0
- refs/tags/17.3.1
- refs/tags/17.3.10
- refs/tags/17.3.11
- refs/tags/17.3.12
- refs/tags/17.3.2
- refs/tags/17.3.3
- refs/tags/17.3.4
- refs/tags/17.3.5
- refs/tags/17.3.6
- refs/tags/17.3.7
- refs/tags/17.3.8
- refs/tags/17.3.9
- refs/tags/18.0.0
- refs/tags/18.0.0-next.0
- refs/tags/18.0.0-next.1
- refs/tags/18.0.0-next.2
- refs/tags/18.0.0-next.3
- refs/tags/18.0.0-next.4
- refs/tags/18.0.0-next.5
- refs/tags/18.0.0-next.6
- refs/tags/18.0.0-rc.0
- refs/tags/18.0.0-rc.1
- refs/tags/18.0.0-rc.2
- refs/tags/18.0.0-rc.3
- refs/tags/18.0.1
- refs/tags/18.0.2
- refs/tags/18.0.3
- refs/tags/18.0.4
- refs/tags/18.0.5
- refs/tags/18.0.6
- refs/tags/18.0.7
- refs/tags/18.1.0
- refs/tags/18.1.0-next.0
- refs/tags/18.1.0-next.1
- refs/tags/18.1.0-next.2
- refs/tags/18.1.0-next.3
- refs/tags/18.1.0-next.4
- refs/tags/18.1.0-rc.0
- refs/tags/18.1.1
- refs/tags/18.1.2
- refs/tags/18.1.3
- refs/tags/18.2.0-next.0
- refs/tags/18.2.0-next.1
- refs/tags/18.2.0-next.2
- refs/tags/18.2.0-next.3
- refs/tags/18.2.0-next.4
- refs/tags/2.0.0
- refs/tags/2.0.0-alpha.13
- refs/tags/2.0.0-alpha.14
- refs/tags/2.0.0-alpha.15
- refs/tags/2.0.0-alpha.16
- refs/tags/2.0.0-alpha.17
- refs/tags/2.0.0-alpha.18
- refs/tags/2.0.0-alpha.19
- refs/tags/2.0.0-alpha.20
- refs/tags/2.0.0-alpha.21
- refs/tags/2.0.0-alpha.22
- refs/tags/2.0.0-alpha.23
- refs/tags/2.0.0-alpha.24
- refs/tags/2.0.0-alpha.25
- refs/tags/2.0.0-alpha.26
- refs/tags/2.0.0-alpha.27
- refs/tags/2.0.0-alpha.28
- refs/tags/2.0.0-alpha.29
- refs/tags/2.0.0-alpha.30
- refs/tags/2.0.0-alpha.31
- refs/tags/2.0.0-alpha.32
- refs/tags/2.0.0-alpha.33
- refs/tags/2.0.0-alpha.34
- refs/tags/2.0.0-alpha.35
- refs/tags/2.0.0-alpha.36
- refs/tags/2.0.0-alpha.37
- refs/tags/2.0.0-alpha.38
- refs/tags/2.0.0-alpha.39
- refs/tags/2.0.0-alpha.40
- refs/tags/2.0.0-alpha.41
- refs/tags/2.0.0-alpha.42
- refs/tags/2.0.0-alpha.44
- refs/tags/2.0.0-alpha.45
- refs/tags/2.0.0-alpha.46
- refs/tags/2.0.0-alpha.47
- refs/tags/2.0.0-alpha.48
- refs/tags/2.0.0-alpha.49
- refs/tags/2.0.0-alpha.50
- refs/tags/2.0.0-alpha.51
- refs/tags/2.0.0-alpha.52
- refs/tags/2.0.0-alpha.53
- refs/tags/2.0.0-alpha.54
- refs/tags/2.0.0-alpha.55
- refs/tags/2.0.0-beta.0
- refs/tags/2.0.0-beta.1
- refs/tags/2.0.0-beta.10
- refs/tags/2.0.0-beta.11
- refs/tags/2.0.0-beta.12
- refs/tags/2.0.0-beta.13
- refs/tags/2.0.0-beta.14
- refs/tags/2.0.0-beta.15
- refs/tags/2.0.0-beta.16
- refs/tags/2.0.0-beta.17
- refs/tags/2.0.0-beta.2
- refs/tags/2.0.0-beta.3
- refs/tags/2.0.0-beta.4
- refs/tags/2.0.0-beta.5
- refs/tags/2.0.0-beta.6
- refs/tags/2.0.0-beta.7
- refs/tags/2.0.0-beta.8
- refs/tags/2.0.0-beta.9
- refs/tags/2.0.0-build.006a96d.js
- refs/tags/2.0.0-build.00822c3.dart
- refs/tags/2.0.0-build.00822c3.js
- refs/tags/2.0.0-build.015faee.dart
- refs/tags/2.0.0-build.015faee.js
- refs/tags/2.0.0-build.016ab31.dart
- refs/tags/2.0.0-build.016ab31.js
- refs/tags/2.0.0-build.019cb41.dart
- refs/tags/2.0.0-build.019cb41.js
- refs/tags/2.0.0-build.01ba94b.dart
- refs/tags/2.0.0-build.01ba94b.js
- refs/tags/2.0.0-build.0206d72.dart
- refs/tags/2.0.0-build.0206d72.js
- refs/tags/2.0.0-build.020ce32.dart
- refs/tags/2.0.0-build.020ce32.js
- refs/tags/2.0.0-build.0290362.dart
- refs/tags/2.0.0-build.0290362.js
- refs/tags/2.0.0-build.03823d4.dart
- refs/tags/2.0.0-build.03823d4.js
- refs/tags/2.0.0-build.039ed3b.dart
- refs/tags/2.0.0-build.039ed3b.js
- refs/tags/2.0.0-build.03e3035.dart
- refs/tags/2.0.0-build.03e3035.js
- refs/tags/2.0.0-build.041c599.dart
- refs/tags/2.0.0-build.041c599.js
- refs/tags/2.0.0-build.046758c.dart
- refs/tags/2.0.0-build.046758c.js
- refs/tags/2.0.0-build.0544e07.dart
- refs/tags/2.0.0-build.0544e07.js
- refs/tags/2.0.0-build.059e09c.dart
- refs/tags/2.0.0-build.059e09c.js
- refs/tags/2.0.0-build.05fa1fd.dart
- refs/tags/2.0.0-build.05fa1fd.js
- refs/tags/2.0.0-build.05fb269.dart
- refs/tags/2.0.0-build.05fb269.js
- refs/tags/2.0.0-build.0614797.dart
- refs/tags/2.0.0-build.0614797.js
- refs/tags/2.0.0-build.065ac93.dart
- refs/tags/2.0.0-build.065ac93.js
- refs/tags/2.0.0-build.06b2aa1.dart
- refs/tags/2.0.0-build.06b2aa1.js
- refs/tags/2.0.0-build.06d076a.dart
- refs/tags/2.0.0-build.06d076a.js
- refs/tags/2.0.0-build.06e32eb.dart
- refs/tags/2.0.0-build.06e32eb.js
- refs/tags/2.0.0-build.070d818.dart
- refs/tags/2.0.0-build.070d818.js
- refs/tags/2.0.0-build.071165f.dart
- refs/tags/2.0.0-build.071165f.js
- refs/tags/2.0.0-build.074075d.dart
- refs/tags/2.0.0-build.074075d.js
- refs/tags/2.0.0-build.080469f.dart
- refs/tags/2.0.0-build.080469f.js
- refs/tags/2.0.0-build.0815a77.dart
- refs/tags/2.0.0-build.0815a77.js
- refs/tags/2.0.0-build.093b794.dart
- refs/tags/2.0.0-build.093b794.js
- refs/tags/2.0.0-build.0a3a17f.dart
- refs/tags/2.0.0-build.0a3a17f.js
- refs/tags/2.0.0-build.0a44fc6.dart
- refs/tags/2.0.0-build.0a44fc6.js
- refs/tags/2.0.0-build.0ae7775.dart
- refs/tags/2.0.0-build.0ae7775.js
- refs/tags/2.0.0-build.0b6e75a.dart
- refs/tags/2.0.0-build.0b6e75a.js
- refs/tags/2.0.0-build.0c9596a.dart
- refs/tags/2.0.0-build.0c9596a.js
- refs/tags/2.0.0-build.0cdf280.dart
- refs/tags/2.0.0-build.0cdf280.js
- refs/tags/2.0.0-build.0db0252.dart
- refs/tags/2.0.0-build.0db0252.js
- refs/tags/2.0.0-build.0df8bc4.dart
- refs/tags/2.0.0-build.0df8bc4.js
- refs/tags/2.0.0-build.0ec9ccf.dart
- refs/tags/2.0.0-build.0ec9ccf.js
- refs/tags/2.0.0-build.0ef6809.dart
- refs/tags/2.0.0-build.0ef6809.js
- refs/tags/2.0.0-build.0f85b36.dart
- refs/tags/2.0.0-build.0f85b36.js
- refs/tags/2.0.0-build.0f8e40b.dart
- refs/tags/2.0.0-build.0f8e40b.js
- refs/tags/2.0.0-build.116015b.dart
- refs/tags/2.0.0-build.116015b.js
- refs/tags/2.0.0-build.125fa38.dart
- refs/tags/2.0.0-build.125fa38.js
- refs/tags/2.0.0-build.132829e.dart
- refs/tags/2.0.0-build.132829e.js
- refs/tags/2.0.0-build.13e6354.dart
- refs/tags/2.0.0-build.13e6354.js
- refs/tags/2.0.0-build.140ce9f.dart
- refs/tags/2.0.0-build.140ce9f.js
- refs/tags/2.0.0-build.1417e12.dart
- refs/tags/2.0.0-build.1417e12.js
- refs/tags/2.0.0-build.15f5f27.dart
- refs/tags/2.0.0-build.15f5f27.js
- refs/tags/2.0.0-build.1607ef8.dart
- refs/tags/2.0.0-build.1607ef8.js
- refs/tags/2.0.0-build.16d9c60.dart
- refs/tags/2.0.0-build.16d9c60.js
- refs/tags/2.0.0-build.16e74cf.dart
- refs/tags/2.0.0-build.16e74cf.js
- refs/tags/2.0.0-rc.0
- refs/tags/2.0.0-rc.1
- refs/tags/2.0.0-rc.2
- refs/tags/2.0.0-rc.3
- refs/tags/2.0.0-rc.4
- refs/tags/2.0.0-rc.5
- refs/tags/2.0.0-rc.6
- refs/tags/2.0.0-rc.7
- refs/tags/2.0.1
- refs/tags/2.0.2
- refs/tags/2.1.0
- refs/tags/2.1.0-beta.0
- refs/tags/2.1.0-rc.0
- refs/tags/2.1.1
- refs/tags/2.1.2
- refs/tags/2.2.0
- refs/tags/2.2.0-beta.0
- refs/tags/2.2.0-beta.1
- refs/tags/2.2.0-rc.0
- refs/tags/2.2.1
- refs/tags/2.2.2
- refs/tags/2.2.3
- refs/tags/2.2.4
- refs/tags/2.3.0
- refs/tags/2.3.0-beta.0
- refs/tags/2.3.0-beta.1
- refs/tags/2.3.0-rc.0
- refs/tags/2.3.1
- refs/tags/2.4.0
- refs/tags/2.4.0-marker
- refs/tags/2.4.1
- refs/tags/2.4.10
- refs/tags/2.4.2
- refs/tags/2.4.3
- refs/tags/2.4.4
- refs/tags/2.4.5
- refs/tags/2.4.6
- refs/tags/2.4.7
- refs/tags/2.4.8
- refs/tags/2.4.9
- refs/tags/4.0.0
- refs/tags/4.0.0-beta.0
- refs/tags/4.0.0-beta.1
- refs/tags/4.0.0-beta.2
- refs/tags/4.0.0-beta.3
- refs/tags/4.0.0-beta.4
- refs/tags/4.0.0-beta.5
- refs/tags/4.0.0-beta.6
- refs/tags/4.0.0-beta.7
- refs/tags/4.0.0-beta.8
- refs/tags/4.0.0-rc.1
- refs/tags/4.0.0-rc.2
- refs/tags/4.0.0-rc.3
- refs/tags/4.0.0-rc.4
- refs/tags/4.0.0-rc.5
- refs/tags/4.0.0-rc.6
- refs/tags/4.0.1
- refs/tags/4.0.2
- refs/tags/4.0.3
- refs/tags/4.1.0
- refs/tags/4.1.0-beta.0
- refs/tags/4.1.0-beta.1
- refs/tags/4.1.0-rc.0
- refs/tags/4.1.1
- refs/tags/4.1.2
- refs/tags/4.1.3
- refs/tags/4.2.0
- refs/tags/4.2.0-beta.0
- refs/tags/4.2.0-beta.1
- refs/tags/4.2.0-rc.0
- refs/tags/4.2.0-rc.1
- refs/tags/4.2.0-rc.2
- refs/tags/4.2.1
- refs/tags/4.2.2
- refs/tags/4.2.3
- refs/tags/4.2.4
- refs/tags/4.2.5
- refs/tags/4.2.6
- refs/tags/4.3.0
- refs/tags/4.3.0-beta.0
- refs/tags/4.3.0-beta.1
- refs/tags/4.3.0-rc.0
- refs/tags/4.3.1
- refs/tags/4.3.2
- refs/tags/4.3.3
- refs/tags/4.3.4
- refs/tags/4.3.5
- refs/tags/4.3.6
- refs/tags/4.4.0
- refs/tags/4.4.0-RC.0
- refs/tags/4.4.1
- refs/tags/4.4.2
- refs/tags/4.4.3
- refs/tags/4.4.4
- refs/tags/4.4.5
- refs/tags/4.4.6
- refs/tags/4.4.7
- refs/tags/5.0.0
- refs/tags/5.0.0-beta.0
- refs/tags/5.0.0-beta.1
- refs/tags/5.0.0-beta.2
- refs/tags/5.0.0-beta.3
- refs/tags/5.0.0-beta.4
- refs/tags/5.0.0-beta.5
- refs/tags/5.0.0-beta.6
- refs/tags/5.0.0-beta.7
- refs/tags/5.0.0-rc.0
- refs/tags/5.0.0-rc.1
- refs/tags/5.0.0-rc.2
- refs/tags/5.0.0-rc.3
- refs/tags/5.0.0-rc.4
- refs/tags/5.0.0-rc.5
- refs/tags/5.0.0-rc.6
- refs/tags/5.0.0-rc.7
- refs/tags/5.0.0-rc.8
- refs/tags/5.0.0-rc.9
- refs/tags/5.0.1
- refs/tags/5.0.2
- refs/tags/5.0.3
- refs/tags/5.0.4
- refs/tags/5.0.5
- refs/tags/5.1.0
- refs/tags/5.1.0-beta.0
- refs/tags/5.1.0-beta.1
- refs/tags/5.1.0-beta.2
- refs/tags/5.1.0-rc.0
- refs/tags/5.1.0-rc.1
- refs/tags/5.1.1
- refs/tags/5.1.2
- refs/tags/5.1.3
- refs/tags/5.2.0
- refs/tags/5.2.0-beta.0
- refs/tags/5.2.0-beta.1
- refs/tags/5.2.0-rc.0
- refs/tags/5.2.1
- refs/tags/5.2.10
- refs/tags/5.2.11
- refs/tags/5.2.2
- refs/tags/5.2.3
- refs/tags/5.2.4
- refs/tags/5.2.5
- refs/tags/5.2.6
- refs/tags/5.2.7
- refs/tags/5.2.8
- refs/tags/5.2.9
- fce50637c5f483b301f221595f0491d847272173
- Branches list truncated to 1000 entries, 231 were omitted.
- 12.0.0
- Releases list truncated to 1 entries, 8 were omitted.
Take a new snapshot of a software origin
If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.
Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.Processing "take a new snapshot" request ...
Permalinks
To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
Revision | Author | Date | Message | Commit Date |
---|---|---|---|---|
fce5063 | Dylan Hunn | 28 April 2022, 20:18:48 UTC | docs(forms): Add documentation for typed forms. (#45841) Update the JSDoc on forms model classes with more specific information about the new types. PR Close #45841 | 02 May 2022, 22:03:40 UTC |
ad5ffff | Andrew Kushnir | 02 May 2022, 19:48:29 UTC | refactor(core): rename `INJECTOR_INITIALIZER` -> `ENVIRONMENT_INITIALIZER` (#45845) This commit renames the `INJECTOR_INITIALIZER` to `ENVIRONMENT_INITIALIZER` to better represent the intention of the token. PR Close #45845 | 02 May 2022, 22:02:06 UTC |
3ebf9e7 | JoostK | 30 April 2022, 10:42:21 UTC | refactor(compiler-cli): improve error message formatting (#45827) Changes the message from: ``` The component 'HelloComponent' appears in 'imports', but is not standalone and cannot be imported directly It must be imported via an NgModule. ``` to ``` The component 'HelloComponent' appears in 'imports', but is not standalone and cannot be imported directly. It must be imported via an NgModule. ``` PR Close #45827 | 02 May 2022, 21:59:01 UTC |
9cfea3d | JoostK | 30 April 2022, 10:40:10 UTC | fix(compiler-cli): report invalid imports in standalone components during resolve phase (#45827) The analysis phase of the compiler should operate on individual classes, independently of the analysis of other classes. The validation that `Component.imports` only contains standalone entities or NgModules however did happen during the analysis phase, introducing a dependency on other classes and causing inconsistencies due to ordering and/or asynchronous timing differences. This commit fixes the issue by moving the validation to the resolve phase, which occurs after all classes have been analyzed. Fixes #45819 PR Close #45827 | 02 May 2022, 21:59:01 UTC |
38f2906 | Pawel Kozlowski | 02 May 2022, 08:43:53 UTC | docs(core): add public API docs for the ApplicationRef (#45836) This commits add the missing documentation for the ApplicationRef destroy() method. PR Close #45836 | 02 May 2022, 21:58:27 UTC |
22c71be | Andrew Kushnir | 02 May 2022, 18:18:38 UTC | fix(platform-server): update `renderApplication` to move `appId` to options (#45844) This commit updates the `renderApplication` function to move the `appId` argument to the options object. The goal is to achieve a symmetry with the `bootstrapApplication` call (use to bootstrap apps for the browser environment). PR Close #45844 | 02 May 2022, 21:57:55 UTC |
752ddbc | Zack Elliott | 29 April 2022, 21:47:21 UTC | feat(compiler-cli): Support template binding to protected component members (#45823) This commit adds support for creating template bindings to protected members within the component class. PR Close #45823 | 02 May 2022, 21:40:11 UTC |
f0b5e83 | Ryan Day | 28 April 2022, 16:29:31 UTC | build(bazel): change ngc-wrapped to use new bazelOpts.devmode (#45804) bazelOpts.es5Mode is being removed and replaced with devmode. Adding a check for either will allow a smooth migration. PR Close #45804 | 02 May 2022, 20:10:06 UTC |
0eee114 | dario-piotrowicz | 02 May 2022, 16:51:23 UTC | docs: remove css keyframes scoping change from changelog (#45840) remove the css keyframes scpoing change present in the changelog since that commit has actually been reverted PR Close #45840 | 02 May 2022, 19:00:00 UTC |
fde4942 | Andrew Kushnir | 30 April 2022, 01:00:05 UTC | fix(core): throw if standalone components are present in `@NgModule.bootstrap` (#45825) This commit updates the logic to detect a situation when a standalone component is used in the NgModule-based bootstrap (`@NgModule.bootstrap`). Both AOT and JIT compilers are updated to handle this situation. PR Close #45825 | 02 May 2022, 18:43:17 UTC |
9a04ded | dario-piotrowicz | 30 April 2022, 13:09:01 UTC | docs(docs-infra): improve clarity of toh-pt2 click code snippet (#45829) make clearer that the click code snippet present in the tour of heroes part 2 guide is not complete but adding ellipsis at the end of the snippet and also by slightly tweaking the text introducing the snippet resolves #45758 PR Close #45829 | 02 May 2022, 18:42:12 UTC |
e702caf | Cédric Exbrayat | 30 March 2022, 17:21:48 UTC | feat(core): allow to throw on unknown elements in tests (#45479) Allows to provide a TestBed option to throw on unknown elements in templates: ```ts getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { errorOnUnknownElements: true } ); ``` The default value of `errorOnUnknownElements` is `false`, so this is not a breaking change. PR Close #45479 | 02 May 2022, 16:38:13 UTC |
6a3ca0e | Dylan Hunn | 02 May 2022, 16:35:19 UTC | Revert "feat(core): allow to throw on unknown elements in tests (#45479)" (#45839) This reverts commit 6662a97c61f133a14f2d117f71e4d2b8f4a83c32. PR Close #45839 | 02 May 2022, 16:36:28 UTC |
9c2f219 | Paul Gschwendtner | 01 May 2022, 07:43:09 UTC | build: update ng-dev with updated clang-format version to fix formatting (#45834) Updates ng-dev to the latest clang-format version which fixes the AMD x64 binaries. PR Close #45834 | 02 May 2022, 16:28:40 UTC |
6662a97 | Cédric Exbrayat | 30 March 2022, 17:21:48 UTC | feat(core): allow to throw on unknown elements in tests (#45479) Allows to provide a TestBed option to throw on unknown elements in templates: ```ts getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { errorOnUnknownElements: true } ); ``` The default value of `errorOnUnknownElements` is `false`, so this is not a breaking change. PR Close #45479 | 02 May 2022, 16:22:34 UTC |
8315974 | dario-piotrowicz | 29 April 2022, 20:32:06 UTC | fix(docs-infra): fix wrong heading structure in aio resources page (#45822) in the aio resources page there is a main h1 heading and then the next headings used are h3 and h4, thus h2 is being skipped, change such headings so that there is no heading skipping (which is a bad practice and can result to confusing experiences from screen reader users) PR Close #45822 | 02 May 2022, 16:20:36 UTC |
a88bf20 | JoostK | 27 April 2022, 18:31:50 UTC | refactor(compiler-cli): increase minimum version of partial declarations (#45782) In v14, the partial compilation output of components have changed in a way that prevents older versions of Angular to compile the partial declarations correctly. In particular, we used to emit used directives/components in separate arrays called `components` and `directives`, and used pipes in a property called `pipes`: ```js TestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TestComponent, selector: "ng-component", ngImport: i0, template: ``, isInline: true, directives: [{ type: i1.SomeDir, selector: "[some-dir]" }], components: [{ type: i1.SomeCmp, selector: "some-cmp" }], pipes: { 'async': i2.AsyncPipe }, }); ``` In the above example, the `version` property indicates which exact compiler version was used to compile the component, but the `minVersion` allows older versions of the compiler/Angular linker to "link" the partial declaration to its final AOT compilation output. In v14, the used directives, components and pipes are now emitted together into a single array under the `dependencies` property: ```js TestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TestComponent, selector: "ng-component", ngImport: i0, template: ``, isInline: true, dependencies: [ { kind: "directive", type: i1.SomeDir, selector: "[some-dir]" }, { kind: "component", type: i1.SomeCmp, selector: "some-cmp" }, { kind: "pipe", type: i2.AsyncPipe }, ], }); ``` This change has been made in support of standalone components, but it does mean that older compiler versions can no longer link these partial declarations as desirable as none of the components, directives and pipes would be included in the AOT-compiled code. By increasing the `minVersion` property, we hint to older compiler versions that they are not capable of processing the partial declaration. This allows reporting an error at compile time instead of resulting in runtime failures due to missing components, directives and pipes. PR Close #45782 | 29 April 2022, 21:19:16 UTC |
dff5586 | Andrew Kushnir | 27 April 2022, 02:34:19 UTC | feat(platform-server): implement `renderApplication` function (#45785) This commit adds the `renderApplication` function to bootstrap an Angular app using a root standalone component to support SSR scenarios. PR Close #45785 | 29 April 2022, 21:18:54 UTC |
e1454ae | George Kalpakas | 26 April 2022, 13:58:01 UTC | build(common): update CLDR to version 41 (#45714) Update CLDR, which is used to generate the locales files, to version 41. Also, make necessary code changes to account for changes in the CLDR data. Fixes #43301 PR Close #45714 | 29 April 2022, 16:20:08 UTC |
57a9c17 | George Kalpakas | 26 April 2022, 13:58:00 UTC | build(common): specify CLDR version to use by `cldr` (#45714) While generating locales, two sets of data (both derived from the [CLDR project][1]) are used: - JSON data with the [`cldrjs` package][2], which is used for most operations. - XML data with the [`cldr` package][3], which is used for generating plural-related data. The JSON data is brought in from the [unicode-org/cldr-json][4] repository. Since we control the version of the repository that we use, we can control the CLDR version that these correspond to. Previously, however, we used the XML data that were bundled with the [`cldr` package[3]. As a result, the two sets of data could correspond to different CLDR versions, resulting in incorrect/inconsistent locales files. This commit addresses the problem by utilizing the `load()` method of the [`cldr` package][3], which allows passing in a custom path to the CLDR XML data (instead of using the bundled data. This way, we can ensure that the data used for all operations correspond to the same CLDR version. Related discussion: #43301 [1]: https://github.com/unicode-org/cldr [2]: https://www.npmjs.com/package/cldrjs [3]: https://www.npmjs.com/package/cldr [4]: https://github.com/unicode-org/cldr-json PR Close #45714 | 29 April 2022, 16:20:08 UTC |
61b6b4f | George Kalpakas | 26 April 2022, 13:58:00 UTC | refactor(common): minor refactoring/simplification in `generate-locales-tool` (#45714) Make some minor changes in `generate-locales-tool` to make the code simpler and/or avoid unnecessary work. PR Close #45714 | 29 April 2022, 16:20:08 UTC |
521bfc1 | George Kalpakas | 26 April 2022, 13:58:00 UTC | refactor(common): improve `dayPeriods`-related types in `generate-locales-tool` (#45714) Update some TypeScript types in `generate-locales-tool/day-periods.ts` to more closely reflect the actual shapes of the returned objects. Examples of the related raw JSON data for the `en` locale can be seen here: - [dayPeriods][1] - [dayPeriodRules][2] [1]: https://github.com/unicode-org/cldr-json/blob/41.0.0/cldr-json/cldr-dates-full/main/en/ca-gregorian.json#L223-L300 [2]: https://github.com/unicode-org/cldr-json/blob/41.0.0/cldr-json/cldr-core/supplemental/dayPeriods.json#L404-L427 PR Close #45714 | 29 April 2022, 16:20:08 UTC |
0e5e4e2 | George Kalpakas | 26 April 2022, 13:58:00 UTC | refactor(common): consistently name tooling related to `closure-locale.ts` (#45714) Previously, some functions/targets related to the generation/verification of the `closure-locale.ts` file included `closure_locales` instead of `closure_locale` in their name, which was inconsistent and confusing. Rename all tooling to use `closure_locale` (which more closely matches the generated file's name). PR Close #45714 | 29 April 2022, 16:20:08 UTC |
29039fc | Kristiyan Kostadinov | 29 April 2022, 12:38:15 UTC | feat(core): support TypeScript 4.7 (#45749) Adds support for TypeScript 4.7. Changes include: * Bumping the TS version as well as some Bazel dependencies to include https://github.com/bazelbuild/rules_nodejs/pull/3420. * Adding a backwards-compatibility layer for calls to `updateTypeParameterDeclaration`. * Making `LView` generic in order to make it easier to type the context based on the usage. Currently the context can be 4 different types which coupled with stricter type checking would required a lot of extra casting all over `core`. * Fixing a bunch of miscellaneous type errors. * Removing assertions of `ReferenceEntry.isDefinition` in a few of the language service tests. The field isn't returned by TS anymore and we weren't using it for anything. * Resolving in error in the language service that was caused by TS attempting to parse HTML files when we try to open them. Previous TS was silently setting them as `ScriptKind.Unknown` and ignoring the errors, but now it throws. I've worked around it by setting them as `ScriptKind.JSX`. PR Close #45749 | 29 April 2022, 16:19:45 UTC |
fcc548a | Pawel Kozlowski | 28 April 2022, 09:29:44 UTC | test(core): verify inheritance for standalone components (#45796) This commit verifies that component inheritance works properly for various combinations of standalone and non-stndalone components. PR Close #45796 | 29 April 2022, 16:19:04 UTC |
d4fc12f | Andrew Scott | 22 April 2022, 20:41:37 UTC | fix(router): Remove deprecated initialNavigation option (#45729) BREAKING CHANGE: `initialNavigation: 'enabled'` was deprecated in v11 and is replaced by `initialNavigation: 'enabledBlocking'`. PR Close #45729 | 28 April 2022, 21:40:03 UTC |
aba8fb5 | Paul Gschwendtner | 28 April 2022, 18:47:07 UTC | build: update ng-dev to latest snapshot build (#45805) Updates ng-dev to the latest snapshot build, with an improvement to the `new-main-branch` command. PR Close #45805 | 28 April 2022, 18:53:29 UTC |
3a60063 | Paul Gschwendtner | 21 April 2022, 13:45:42 UTC | build: updates to account for github primary branch rename This is the commit accounting for the Github primary branch rename when we actually perform the update. We have three change phases: Prepare, Direct, Cleanup. This commit is for the `direct` phase. | 28 April 2022, 17:17:01 UTC |
b596a50 | Paul Gschwendtner | 28 April 2022, 16:40:26 UTC | build: update dev-infra to latest snapshot (#45800) Updates dev-infra to the latest snapshot, supporting for the new migrate to main helper command. PR Close #45800 | 28 April 2022, 17:14:04 UTC |
8dda463 | Andrew Kushnir | 28 April 2022, 00:50:10 UTC | refactor(core): do not allow `standalone` flag overrides via TestBed APIs (#45788) This commit adds a check into the TestBed APIs to throw an error if the `standalone` flag is overridden. PR Close #45788 | 28 April 2022, 16:47:26 UTC |
0840ece | Renovate Bot | 28 April 2022, 12:16:43 UTC | build: lock file maintenance (#45751) PR Close #45751 | 28 April 2022, 16:39:06 UTC |
a097be9 | Andrew Kushnir | 27 April 2022, 22:08:49 UTC | test(core): verify `importProvidersFrom` work correctly with `ModuleWithProviders` (#45787) This commit adds a test to make sure the NgModule providers are collected correctly by the `importProvidersFrom` function when the `ModuleWithProviders` type is used and some providers are overridden. PR Close #45787 | 28 April 2022, 16:37:54 UTC |
4e413d9 | Andrew Kushnir | 28 April 2022, 01:17:25 UTC | fix(core): support nested arrays of providers in `EnvironmentInjector` (#45789) This commit updates the `EnvironmentInjector` logic to support arrays of providers as an argument(for example, when an injector is created via `createEnvironmentInjector` function). PR Close #45789 | 28 April 2022, 16:37:18 UTC |
2941793 | Pawel Kozlowski | 28 April 2022, 08:40:30 UTC | test(core): verify nested array in standalone component imports (#45794) This test verifies that nested arrays are supported in the standalone's component import field. PR Close #45794 | 28 April 2022, 16:35:45 UTC |
14c4979 | George Kalpakas | 28 April 2022, 09:00:04 UTC | build(docs-infra): upgrade cli command docs sources to f258be5be (#45795) Updating [angular#master](https://github.com/angular/angular/tree/master) from [cli-builds#master](https://github.com/angular/cli-builds/tree/master). ## Relevant changes in [commit range](https://github.com/angular/cli-builds/compare/5bd17a256...f258be5be): **Modified** - help/generate.json PR Close #45795 | 28 April 2022, 16:34:31 UTC |
2f5fd41 | Pawel Kozlowski | 27 April 2022, 11:24:35 UTC | refactor(core): verify that standalone entities are not declared in NgModule (#45777) This commits adds JiT checks to verify that a standalone component, directive, pipe are not declared in any NgModule. PR Close #45777 | 27 April 2022, 22:46:10 UTC |
aafac72 | Pawel Kozlowski | 21 April 2022, 09:04:04 UTC | fix(core): verify standalone component imports in JiT (#45777) This commits adds verifications assuring that items imported into standalone components are one of: - standalone component / directive / pipe; - NgModule; - forwardRef resolving to one of the above. It explicitly disallows modules with providers. PR Close #45777 | 27 April 2022, 22:46:09 UTC |
58e8f4b | Dylan Hunn | 27 April 2022, 21:55:50 UTC | Revert "fix(compiler): scope css keyframes in emulated view encapsulation (#42608)" (#45786) This reverts commit 4d6a1d672210219328b33f4f96210870563066ee. PR Close #45786 | 27 April 2022, 22:00:41 UTC |
f3eb7d9 | Andrew Scott | 27 April 2022, 18:53:30 UTC | fix(core): Ensure the `StandaloneService` is retained after closure minification (#45783) In order to survive closure minification correctly, static properties need to be annotated with @nocollapse. For more history, see https://github.com/angular/angular/pull/28050 PR Close #45783 | 27 April 2022, 20:05:33 UTC |
b9a07d6 | Andrew Scott | 27 April 2022, 19:01:09 UTC | release: cut the v14.0.0-next.15 release (#45784) | 27 April 2022, 19:01:09 UTC |
c589e4d | Andrew Scott | 27 April 2022, 18:50:36 UTC | docs: release notes for the v13.3.5 release (#45781) | 27 April 2022, 18:50:36 UTC |
4d6a1d6 | dario-piotrowicz | 20 June 2021, 11:03:48 UTC | fix(compiler): scope css keyframes in emulated view encapsulation (#42608) Ensure that keyframes rules, defined within components with emulated view encapsulation, are scoped to avoid collisions with keyframes in other components. This is achieved by renaming these keyframes to add a prefix that makes them unique across the application. In order to enable the handling of keyframes names defined as strings the previous strategy of replacing quoted css content with `%QUOTED%` (introduced in commit 7f689a2) has been removed and in its place now only specific characters inside quotes are being replaced with placeholder text (those are `;`, `:` and `,`, more can be added in the future if the need arises). Closes #33885 BREAKING CHANGE: Keyframes names are now prefixed with the component's "scope name". For example, the following keyframes rule in a component definition, whose "scope name" is host-my-cmp: @keyframes foo { ... } will become: @keyframes host-my-cmp_foo { ... } Any TypeScript/JavaScript code which relied on the names of keyframes rules will no longer match. The recommended solutions in this case are to either: - change the component's view encapsulation to the `None` or `ShadowDom` - define keyframes rules in global stylesheets (e.g styles.css) - define keyframes rules programmatically in code. PR Close #42608 | 27 April 2022, 17:27:17 UTC |
3d45484 | Alex Rickabaugh | 22 April 2022, 21:29:23 UTC | refactor(compiler-cli): support schemas in standalone components (#45752) This commit adds support for `@Component.schemas` in both JIT and AOT. PR Close #45752 | 27 April 2022, 17:25:53 UTC |
2eb39c0 | Sumit Arora | 25 April 2022, 21:50:43 UTC | fix(devtools): inline loading svg (#45762) * inlined loading animation svg instead of using absolute url * removing unused assets folder from the build PR Close #45762 | 27 April 2022, 16:07:38 UTC |
7d8998c | dario-piotrowicz | 23 April 2022, 21:12:10 UTC | docs: empty alt of aio home decorative images (#45740) in the aio home page the sections' decorative images provide an alt texts, which shouldn't actually be present (see: https://www.w3.org/WAI/tutorials/images/decorative/), empty such alt text for a better user experience PR Close #45740 | 27 April 2022, 16:06:12 UTC |
a895da6 | dario-piotrowicz | 23 April 2022, 21:09:52 UTC | docs: use proper sections in aio home (#45740) convert the `div` groups in the aio home page to proper `section`s with a valid heading/title PR Close #45740 | 27 April 2022, 16:06:12 UTC |
d1a9fd5 | dario-piotrowicz | 23 April 2022, 21:06:18 UTC | docs: make sure aio home has a non-ignored h1 (#45740) currently the aio home page presents a single h1 which is ignored by assistive technologies since it has its display set none, so replace it with a new h1 containing the main text of the page instead PR Close #45740 | 27 April 2022, 16:06:12 UTC |
882f595 | Alex Rickabaugh | 21 April 2022, 20:32:13 UTC | refactor(core): support `ModuleWithProviders` directly in `importProvidersFrom` (#45722) There were two problems with the `importProvidersFrom` function related to `ModuleWithProviders` values: * The public type did not accept `ModuleWithProviders` values directly. * The implementation of `walkProviderTree` delegates collection of MWP providers to its caller, in order for the ordering of such providers to be correct. However, `importProvidersFrom` was not performing that collection, causing MWP providers passed in at the top level to be dropped. PR Close #45722 | 27 April 2022, 16:05:51 UTC |
3896f57 | Alex Rickabaugh | 21 April 2022, 20:27:14 UTC | refactor(core): move ModuleWithProviders type (#45722) This commit moves the ModuleWithProviders type from `metadata` to `di`, avoiding the need for `di` to reference `metadata` (in this particular case). PR Close #45722 | 27 April 2022, 16:05:51 UTC |
39c1681 | Pawel Kozlowski | 21 April 2022, 08:33:56 UTC | test(core): add more tests for the standalone components (#45709) Add more tests verifying the following conditions: - discovery of DI providers from exported NgModules - forwardRef in standalone component imports PR Close #45709 | 27 April 2022, 16:05:33 UTC |
f282ca4 | dario-piotrowicz | 25 April 2022, 20:57:22 UTC | fix(docs-infra): fix alert child margin issue (#45761) replace the generic `*` selector used in the alert styling with `p` (which is what gets generated from the markdown) as the styling adds margins which are not always wanted PR Close #45761 | 27 April 2022, 16:04:30 UTC |
71f64f2 | George Kalpakas | 27 April 2022, 10:32:09 UTC | docs(upgrade): move import back into docregion in `rollup-config.js` (#45778) This was accidentally broken in #45405. PR Close #45778 | 27 April 2022, 16:04:09 UTC |
2b5c2d6 | Pawel Kozlowski | 26 April 2022, 12:39:30 UTC | refactor(core): create a standalone injector during applicationBootstrap (#45766) This commit changes the injectors hiearchy created during applicationBootstrap. From now on a standalone injector (holding all the ambient providers of a standalone component) is create as a child of the application injector. This change alligns injectors hierarchy for bootstrapped and dynamically created standalone components. PR Close #45766 | 27 April 2022, 16:03:50 UTC |
7b367d9 | Andrew Scott | 23 April 2022, 14:25:21 UTC | refactor(router): Remove unnecessary setTimeout in UrlTree redirects (#45735) Using `setTimeout` in the Router navigation pipeline creates fragile and unpredictable behavior. Additionally, it creates a new macrotask, which would trigger an unnecessary change detection in the application. This `setTimeout` was added in https://github.com/angular/angular/commit/15e397816f98ec16839c30fd5c1ea01c7444fb84. Both tests added in that commit still pass. Additionally, the comment for _why_ the `setTimeout` was added doesn't really explain how the described bug would occur. There has been a lot of work in the Router since then to stabalize edge case scenarios so it's possible it existed before but doesn't anymore. Removing this `setTimeout` revealed tests that relied on the navigation not completing. For example, the test suite did not have a route which matched the redirect, but the test passed because it ended before the redirect was flushed, so the `Router` never threw an error. Similar situations exist for the other use of `setTimeout` in the Route (the one in the location change listener). There were no other failures in TGP other than incorrectly written tests. BREAKING CHANGE: When a guard returns a `UrlTree`, the router would previously schedule the redirect navigation within a `setTimeout`. This timeout is now removed, which can result in test failures due to incorrectly written tests. Tests which perform navigations should ensure that all timeouts are flushed before making assertions. Tests should ensure they are capable of handling all redirects from the original navigation. PR Close #45735 | 27 April 2022, 15:56:31 UTC |
f1cc4a6 | Paul Gschwendtner | 26 April 2022, 14:06:16 UTC | build: update tsec and drop corresponding postinstall patch (#45767) Updates tsec and drops the corresponding postinstall patch that we added when we updated to Bazel v5. See: https://github.com/google/tsec/pull/25 PR Close #45767 | 26 April 2022, 18:48:34 UTC |
9d755fa | Renovate Bot | 26 April 2022, 10:16:36 UTC | build: update actions/checkout action to v3.0.2 (#45764) PR Close #45764 | 26 April 2022, 17:11:43 UTC |
284329e | Alex Rickabaugh | 21 April 2022, 19:42:49 UTC | refactor(core): delay standalone component scoping in JIT (#45720) This commit moves standalone component scoping into the closures for `directiveDefs` and `pipeDefs` in JIT mode. This is necessary to support recursive standalone components, which necessarily use a `forwardRef` within their import cycle. Previously, the JIT compiler for standalone components attempted immediate `forwardRef` resolution, resulting in infinite recursion. PR Close #45720 | 26 April 2022, 17:07:41 UTC |
4e0784c | Alex Rickabaugh | 20 April 2022, 15:00:50 UTC | refactor(compiler-cli): optimize InjectorDef imports generation (#45701) Before standalone, everything that could appear in an NgModule's `imports` was relevant to DI, and needed to be emitted in the `imports` of the generated `InjectorDef` definition. With the introduction of standalone types, NgModule `imports` can now contain components, directives, and pipes which are standalone. Only standalone components need to be included in the `imports` of the generated injector definition - directives and pipes have no effect on DI. Having them present doesn't cause any errors in the runtime (they're filtered out by the injector itself) but it does prevent tree-shaking. With this commit, the generation of `InjectorDef` now filters the `imports` to exclude directives and pipes as much as possible. It's not _always_ possible because an expression in `imports` may pull in both a directive and a `ModuleWithProviders` reference, and we have no way of referencing just the MWP part of that expression. Therefore this is an optimization, not a rule of `InjectorDef` compilation. PR Close #45701 | 26 April 2022, 17:07:23 UTC |
b0379c8 | Alex Rickabaugh | 20 April 2022, 18:45:48 UTC | refactor(compiler-cli): NgModule handler resolves `imports` individually (#45701) Previously, the NgModule handler would resolve the `imports` field as one unit, producing an array of `Reference`s. With this refactoring, if `imports` is a literal array, each individual element will be resolved independently. This will allow filtering in the future at the element level, since there will be a separate `ts.Expression` for each individual element. PR Close #45701 | 26 April 2022, 17:07:23 UTC |
18db4ef | Alex Rickabaugh | 20 April 2022, 18:03:34 UTC | refactor(compiler-cli): introduce ResolvedModuleWithProviders (#45701) This commit updates the `ForeignFunctionResolver` used by the NgModule handler to resolve `ModuleWithProvider` types. Previously, this resolver returned the NgModule `Reference` directly, but there are two problems with this: * It's not completely accurate, as the expression returned by the MWP call will not return the NgModule at runtime. * We need the ability to distinguish the MWP call itself from an ordinary NgModule reference in future optimizations. PR Close #45701 | 26 April 2022, 17:07:23 UTC |
c614f31 | Alex Rickabaugh | 20 April 2022, 16:30:59 UTC | refactor(compiler-cli): rework ForeignFunctionResolvers (#45701) This commit reworks the partial evaluation system's concept of a ForeignFunctionResolver. Previously, resolvers were expected to return a `ts.Expression` which the partial evaluator would continue evaluating, eventually returning a value. This works well for "transparent" foreign functions like `forwardRef`, but for things like `ModuleWithProviders` it breaks down, because the desired resolution value (the NgModule `Reference`) is _not_ the "correct" evaluation of the function call. To support better FFR implementations, this commit refactors the FFR system so that resolvers operate on the `ts.CallExpression` instead, and are given a callback to resolve further expressions if needed. If they cannot resolve a given call expression, they have an `unresolvable` value that they can return to indicate that. PR Close #45701 | 26 April 2022, 17:07:23 UTC |
7992132 | Pawel Kozlowski | 22 April 2022, 13:27:01 UTC | test(core): dynamic component creation and standalone injectors hierarchy (#45726) This commits adds more tests around dynamic component creation and environement injectors hierarchy. PR Close #45726 | 25 April 2022, 22:00:33 UTC |
31d7c3b | Michal Materowski | 15 April 2022, 17:38:50 UTC | feat(common): add getState method to LocationStrategy interface (#45648) Adds getState to LocationStrategy interface as it suppose to be the place to control all window.location interactions. BREAKING CHANGE: Adds new required class member that any implementors of the LocationStrategy will need to satisfy. Location does not depend on PlatformLocation anymore. PR Close #45648 | 25 April 2022, 17:41:30 UTC |
50004c1 | Andrew Scott | 13 April 2022, 18:40:38 UTC | feat(router): Support lazy loading standalone components with `loadComponent` (#45705) Similarly to the symmetry being strengthened between children and loadChildren, a new loadComponent property will be introduced as the asynchronous version of component. This will allow for direct single-component lazy loading: ``` {path: 'lazy/a', loadComponent: () => import('./lazy/a.component').then(m => m.ACmp)}, {path: 'lazy/b', loadComponent: () => import('./lazy/b.component').then(m => m.BCmp)}, ``` This option requires that the component being loaded is standalone and is implemented as a runtime check. Other notes: * Components are not loaded until all guards and resolvers complete. * Loading the component is included in the function passed to the router preloading strategy * `RouteConfigLoadStart` and `RouteConfigLoadEnd` events emit at the start and end of the component loading * `CanLoad` guards _do not_ apply to `loadComponent`. `canActivate` should be used instead, just like you would do if it were simply `component` instead. PR Close #45705 | 25 April 2022, 16:39:44 UTC |
970a3b5 | Joey Perrott | 22 April 2022, 15:33:17 UTC | fix(bazel): add this_is_bazel marker (#45728) Add marker for noting that this check confirms we are running in a bazel environment. PR Close #45728 | 22 April 2022, 19:46:23 UTC |
4962a4a | Andrew Scott | 04 April 2022, 21:05:32 UTC | feat(router): Allow `loadChildren` to return a `Route` array (#45700) This commit expands the `LoadChildrenCallback` to accept returning `Routes` in addition to the existing `NgModule` type. In addition, it adds a check to ensure these loaded routes all use standalone components. The components must be standalone because if they were not, we would not have the required `NgModule` which the component is declared in. Existing API: ``` {path: 'lazy/route', loadChildren: import('./lazy').then(m => m.LazyModule)} @NgModule({ imports: [ ExtraCmpModule, RouterModule.forChild([ {path: 'extra/route', component: ExtraCmp}, ]), ], }) export class LazyModule {} ``` The new API for lazy loading route configs with standalone components (no NgModule) is to expand `loadChildren` to allow returning simply a `Routes` array. ``` // parent.ts { path: 'parent', loadChildren: () => import('./children').then(m => m.ROUTES), } // children.ts export const ROUTES: Route[] = [ {path: 'child', component: ChildCmp}, ]; ``` Note that this includes minimal documentation updates. We need to include a holistic update to the documentation for standalone components in the future that includes this feature. PR Close #45700 | 22 April 2022, 16:25:20 UTC |
3e46a42 | Andrew Kushnir | 21 April 2022, 02:32:33 UTC | test(core): add integration test apps for the `bootstrapApplication` API (#45674) This commit adds 2 integration apps to verify the `bootstrapApplication` API behavior as well as keep track of the bundle size and retained symbols (tree-shaking). PR Close #45674 | 22 April 2022, 00:47:54 UTC |
5771b18 | Andrew Kushnir | 21 April 2022, 02:31:35 UTC | feat(core): add the `bootstrapApplication` function (#45674) This commit implements the `bootstrapApplication` function that allows bootstrapping an application and pass a standalone component as a root component. PR Close #45674 | 22 April 2022, 00:47:54 UTC |
612d6e0 | Paul Gschwendtner | 13 April 2022, 13:02:54 UTC | test: update size golden for hello-world-ivy-compat integration test (#45405) The main bundle fell below the 500b threshold. Likely because the global constant was fixed and is now tree-shakeable. The actual diff in the commit is a little confusing since it makes it seem that polyfills increased as part of this commit. This is not the case but just a side-effect of us accumulating various changes which are not reflected on a per-commit basis in the size golden. The actual sizes in master were: ``` SUCCESS: Commit undefined uncompressed runtime did NOT cross size threshold of 500 bytes or >1% (expected: 1105, actual: 1102). SUCCESS: Commit undefined uncompressed polyfills did NOT cross size threshold of 500 bytes or >1% (expected: 33846, actual: 33957). SUCCESS: Commit undefined uncompressed main did NOT cross size threshold of 500 bytes or >1% (expected: 132392, actual: 131893). ``` Now with this change: ``` SUCCESS: Commit undefined uncompressed runtime did NOT cross size threshold of 500 bytes or >1% (expected: 1105, actual: 1102). SUCCESS: Commit undefined uncompressed polyfills did NOT cross size threshold of 500 bytes or >1% (expected: 33846, actual: 33957). FAIL: Commit undefined uncompressed main fell below expected size by 500 bytes or >1% (expected: 132392, actual: 131883). ``` PR Close #45405 | 21 April 2022, 18:09:39 UTC |
067e4c2 | Paul Gschwendtner | 13 April 2022, 08:16:37 UTC | build: update systemjs aio boilerplate to work with APF v13+ `exports` field (#45405) The SystemJS examples were using an outdated version of rollup that did not support export fields. Now with the recent changes where we removed secondary package.json files, the rather old/somewhat outdated SystemJS examples failed bundling since exports were not considered. PR Close #45405 | 21 April 2022, 18:09:39 UTC |
a50e2da | Paul Gschwendtner | 12 April 2022, 13:28:28 UTC | fix(localize): ensure transitively loaded compiler code is tree-shakable (#45405) The localize primary entry-point (used at runtime in application code) indirectly loads from the compiler package for computing message ids. The compiler package has a couple of constants which cannot be DCE-ded/ tree-shaken due to side-effect reliance that is detected by Terser. We fix these constants to be three-shakable. Note that another issue technically would be that the compiler package has a side-effect call for `publishFacade` (for JIT), but that invocation is marked as pure by the Angular CLI babel optimization pipeline. So this results is no unused code currently but is risky and should be addressed in the future. PR Close #45405 | 21 April 2022, 18:09:39 UTC |
4c56c45 | Paul Gschwendtner | 21 March 2022, 16:43:31 UTC | refactor(localize): init APF entry-point should not duplicate code (#45405) This commit addresses two issues: * The init entry-point currenly access code from another entry-point using relative imports, resulting in code to be duplicated. * The init types are now bundled as part of the ng_package APF rule. There is an API extractor bundling issue with global module augmentations. API extractor does not properly handle module augmentation. We need to disable dts bundling for this entry-point to ensure `$localize` remains globally accessible for users. This is an option in the `ng_package` rule. Note that this worked before because `localize/init` was a `ts_library` that did not have its types bundled. As part of this change, the `MessageId` and `TargetMessage` exports are also made public. The localize exported functions rely on these types but they were not exported. Related to types, an exception is added for three private exports from the primary entry-point so that they will show up in the API golden. These private exports are re-exposed publicly in the init entry-point but no golden would capture them due to the private symbol prefix. One might wonder why the symbols are not guarded in the init golden. The reason is that goldens never inline signatures from cross-entry-points/packages to avoid duplication. Lastly, the i18n integration test golden had to be updated because the polyfills bundle increased slightly. After thorough and time-consuming investigation, this mostly happens due to different mangle identifies being used (the input code changed --> so the mangling determinism) Size before this change: ``` SUCCESS: Commit undefined uncompressed runtime did NOT cross size threshold of 500 bytes or >1% (expected: 929, actual: 926). SUCCESS: Commit undefined uncompressed main did NOT cross size threshold of 500 bytes or >1% (expected: 124544, actual: 124660). SUCCESS: Commit undefined uncompressed polyfills did NOT cross size threshold of 500 bytes or >1% (expected: 34530, actual: 34641). ``` After: ``` SUCCESS: Commit undefined uncompressed runtime did NOT cross size threshold of 500 bytes or >1% (expected: 929, actual: 926). SUCCESS: Commit undefined uncompressed main did NOT cross size threshold of 500 bytes or >1% (expected: 124544, actual: 124650). FAIL: Commit undefined uncompressed polyfills exceeded expected size by 500 bytes or >1% (expected: 34530, actual: 35252). ``` Inspecting/comparing without mangling shows that the new changes would actually result in a bundle reduction (potentially visible with gzip/brotli): ``` ➜ Desktop stat -f%z master-nomangle.js 101357 ➜ Desktop stat -f%z with-changes-nomangle.js 101226 ``` PR Close #45405 | 21 April 2022, 18:09:39 UTC |
7a8a929 | Paul Gschwendtner | 21 March 2022, 16:40:42 UTC | refactor: fix duplication in platform-server NPM package (#45405) The platform-server init entry-point imported code from another entry-point using a relative import. This resulted in the code to be bundled into the `init` entry-point as well. This has no breaking impact but resulted in a little code duplication that we should clean up. PR Close #45405 | 21 April 2022, 18:09:39 UTC |
dd0fc0f | Paul Gschwendtner | 14 April 2022, 19:52:33 UTC | test: add test for new `types_bundle` rule from Angular bazel package (#45405) Adds a little golden test for the new `types_bundle` rule that ensures the rule works at a general level. This rule will be useful for non-APF ESM packages like the Angular compiler-cli (for which we also want to bundle types to make them compatible with TypeScripts ESM type resolution) PR Close #45405 | 21 April 2022, 18:09:39 UTC |
68597bb | Paul Gschwendtner | 21 March 2022, 11:24:52 UTC | feat(bazel): speed up dev-turnaround by bundling types only when packaging (#45405) Speeds up the dev-turnaround by only bundling types when packaging. Currently bundling occurs for all the `ng_module` targets in devmode. This has various positive benefits: * Avoidance of this rather slower operation in development * Makes APF-built packages also handle types for `ts_library` targets consistently. * Allows us to ensure APF entry-points have `d.ts` _always_ bundled (working with ESM module resolution in TypeScript -- currently experimental) * Allows us to remove the secondary `package.json` files from APF (maybe APF v14? - seems low-impact). This would clean-up the APF even more and fix resolution issues (like in Vite) PR Close #45405 | 21 April 2022, 18:09:39 UTC |
3dee3d1 | George Kalpakas | 14 April 2022, 14:10:45 UTC | fix(docs-infra): fix placement of "Edit source" button on errors and diagnostics pages (#45634) This commit aligns the layout of errors and extended diagnostics pages more closely with other docs pages to ensure that the "Edit source" button is displayed correctly even when the heading is too long to fit on a single line. For error pages, in particular, this ensures that the button is not obscured by the error video. **Before:** ![error-pages before][1] **After:** ![error-pages after][2] [1]: https://user-images.githubusercontent.com/8604205/163408291-7aebd029-891c-4045-8fa2-a8e2b2b06dab.png [2]: https://user-images.githubusercontent.com/8604205/163408296-40e6df8e-aadc-4a82-978a-ab4d902b6f6e.png PR Close #45634 | 21 April 2022, 18:07:27 UTC |
9292953 | Andrew Kushnir | 21 April 2022, 06:04:23 UTC | fix(docs-infra): include `tslib` into SystemJS config in `upgrade-module` example app (#45706) This commit updates the SystemJS for one of the example apps (the `upgrade-module` one) to include a resolution rule for the `tslib`. This is needed in case `tslib` is referenced from the framework code (for example in case of downleveling of some operators). This makes it consistent with other example app configs. PR Close #45706 | 21 April 2022, 18:05:37 UTC |
9e4c4bc | Pawel Kozlowski | 19 April 2022, 11:45:27 UTC | docs(core): add API documentation to standalone-related classes (#45687) This commit adds some internal documentation. PR Close #45687 | 20 April 2022, 23:01:56 UTC |
e162fa3 | Pawel Kozlowski | 14 April 2022, 17:19:54 UTC | test(core): add more tests for the standalone injector (#45687) This commit reorganizes the tests around the EnvironmentInjector and its use for standalone injectors, and adds a number of new test cases. PR Close #45687 | 20 April 2022, 23:01:56 UTC |
3616d7e | Pawel Kozlowski | 31 March 2022, 14:24:18 UTC | refactor(core): implement standalone injectors (#45687) This commit implements the `StandaloneFeature` which provides for the creation of standalone injectors, for those components which need them. The feature-based implementation ensures the machinery for standalone injectors is properly tree-shakable. PR Close #45687 | 20 April 2022, 23:01:56 UTC |
9f79513 | Alex Rickabaugh | 18 April 2022, 23:44:03 UTC | refactor(core): support standalone components in importProvidersFrom (#45687) This commit refactors `importProvidersFrom` to support pulling providers from the dependencies of a standalone component, in addition to NgModules. Tests will be added in a future commit when standalone components can be created without calling private APIs. PR Close #45687 | 20 April 2022, 23:01:55 UTC |
5a10fc4 | Alex Rickabaugh | 31 March 2022, 18:54:55 UTC | feat(core): implement standalone directives, components, and pipes (#45687) This commit exposes the `standalone` flag on `@Directive`, `@Component`, and `@Pipe`, effectively making standalone components a part of Angular's public API. As part of this operation, it also implements JIT compilation for standalone types. Standalone types are Angular-decorated types which act as their own "declarations", where they would otherwise be declared in an NgModule. Marking an Angular type as standalone means that it can be used directly in other standalone components and in NgModules, without needing an associated NgModule to depend on it. In the case of a standalone component, template dependencies which would otherwise be specified by an NgModule are instead specified directly on the component itself, via the `imports` field. Other standalone types can be imported, as well as NgModules. PR Close #45687 | 20 April 2022, 23:01:55 UTC |
bb6e11c | Alex Rickabaugh | 19 April 2022, 15:06:09 UTC | refactor(compiler-cli): reorganize importProvidersFrom to avoid cycles (#45687) This commit extracts the `importProvidersFrom` function and associated machinery into a separate file, as opposed to being colocated with `R3Injector`. Separating these functions will mitigate potential future circular dependencies as `importProvidersFrom` starts being used in different parts of the codebase. PR Close #45687 | 20 April 2022, 23:01:55 UTC |
dea8c86 | dario-piotrowicz | 22 February 2022, 22:38:47 UTC | feat(router): add ariaCurrentWhenActive input to RouterLinkActive directive (#45167) add the ariaCurrentWhenActive input to the RouterLinkActive directive so that users can easily set the aria-current property to their active router links resolves #35051 PR Close #45167 | 20 April 2022, 22:14:01 UTC |
d8226de | Dylan Hunn | 20 April 2022, 21:46:22 UTC | release: cut the v14.0.0-next.14 release (#45704) PR Close #45704 | 20 April 2022, 21:47:03 UTC |
f14763e | Dylan Hunn | 20 April 2022, 21:38:11 UTC | docs: release notes for the v13.3.4 release (#45703) PR Close #45703 | 20 April 2022, 21:41:58 UTC |
1d2f5c1 | Andrew Scott | 18 April 2022, 21:57:19 UTC | refactor(router): deprecate no longer needed resolver fields (#45597) DEPRECATED: The `resolver` argument of the `RouterOutletContract.activateWith` function and the `resolver` field of the `OutletContext` class are deprecated. Passing component factory resolvers are no longer needed. The `ComponentFactoryResolver`-related symbols were deprecated in `@angular/core` package since v13. PR Close #45597 | 20 April 2022, 19:57:37 UTC |
f4fd1a8 | Andrew Scott | 18 April 2022, 21:56:26 UTC | feat(router): Add `EnvironmentInjector` to `RouterOutlet.activateWith` (#45597) The current API for `activateWith` uses the deprecated `ComponentFactoryResolver`. The replacement for this is to use `EnvironmentInjector`. That is, instead of ``` const factory = componentFactoryResolver.resolveComponentFactory(component); location.createComponent(factory, location.length, injector); ``` the replacement would be ``` location.createComponent( component, {index: location.length, injector, environmentInjector}); ``` PR Close #45597 | 20 April 2022, 19:57:37 UTC |
4e0957a | Andrew Scott | 12 April 2022, 00:36:41 UTC | feat(router): Add ability to specify providers on a Route (#45673) Currently, the only way to specify new providers for a `Route` and the children is to create a new `NgModule` with those providers and use the `loadChildren` feature. This is pretty confusing and a wholly indirect way of accomplishing this task. With this commit, developers will be able to specify a list of providers directly on the `Route` itself. These providers will apply the that route and its children. This feature was inspired by the upcoming standalone components feature. This ties in there because, as mentioned before, the prior art for lazy loading configs was to load an `NgModule`. This loaded module contained new route configs _and_ could specify new providers. Separating those two concepts, there should be a way to load _just_ some new routes, but there should also be a way to specify new providers as well (something you could do in the `NgModule` world and now will be able to do in the world without any `NgModule` through this feature). PR Close #45673 | 20 April 2022, 18:32:07 UTC |
ba45428 | Andrew Kushnir | 20 April 2022, 17:08:00 UTC | ci: update payload size golden file (#45699) This commit updates the payload size for the Forms-related test app. The CI started to fail after merging https://github.com/angular/angular/commit/ff3f5a8d12e3243620e311b690a050e26493e539. The payload size increase is most likely accumulated. PR Close #45699 | 20 April 2022, 17:29:38 UTC |
ff3f5a8 | Dylan Hunn | 19 April 2022, 20:17:07 UTC | fix(forms): Fix a typing bug in FormBuilder. (#45684) Previously, the following code would fail to compile: ``` let form: FormGroup<{email: FormControl<string | null>}>; form = fb.group({ email: ['', Validators.required] }); ``` This is because the compiler was unable to properly infer the inner type of `ControlConfig` arrays in some cases. The same issue applies to `FormArray` as well under certain circumstances. This change cleans up the `FormBuilder` type signatures to always use the explicit Element type, and to catch `ControlConfig` types that might fall through. PR Close #45684 | 20 April 2022, 16:15:46 UTC |
788f587 | Andrew Kushnir | 20 April 2022, 04:51:14 UTC | fix(docs-infra): avoid internal symbols from being referenced during auto-linking (#45689) This commit adds extra logic to avoid internal and privately exported symbols from being referenced during auto-linking. Currently such symbols can be used for linking, thus resulting in a non-existing link and causing the linking process to fail. PR Close #45689 | 20 April 2022, 16:11:22 UTC |
47e5b05 | Adrian Kunz | 16 February 2022, 20:52:32 UTC | test(http): Add + to encoding test (#45111) Changes the existing test for query parameter encoding to include the + symbol and its expected encoding to %2B. PR Close #45111 | 20 April 2022, 16:00:19 UTC |
76a9a24 | Adrian Kunz | 16 February 2022, 19:47:57 UTC | fix(http): encode + signs in query params as %2B (angular#11058) (#45111) Servers always decode + as a space, which is undesirable when one actually wants to query for a plus. BREAKING CHANGE: Queries including + will now actually query for + instead of space. Most workarounds involving custom codecs will be unaffected. Possible server-side workarounds will need to be undone. Fixes angular#11058 PR Close #45111 | 20 April 2022, 16:00:19 UTC |
b8d3389 | Alex Rickabaugh | 18 April 2022, 15:59:00 UTC | test(compiler-cli): tests for standalone components/directives/pipes (#45672) This commit bundles tests for standalone components that are possible after previous implementation commits. Most new tests are compliance tests, but a test is also included to validate that the template type-checking system can work with standalone components as well. PR Close #45672 | 20 April 2022, 12:45:57 UTC |
d3c0fa3 | Alex Rickabaugh | 19 April 2022, 20:15:39 UTC | refactor(compiler-cli): propagate standalone flag in .d.ts metadata (#45672) This commit adds a type field to .d.ts metadata for directives, components, and pipes which carries a boolean literal indicating whether the given type is standalone or not. For backwards compatibility, this flag defaults to `false`. Tests are added to validate that standalone types coming from .d.ts files can be correctly imported into new standalone components. PR Close #45672 | 20 April 2022, 12:45:57 UTC |
80d2cda | Alex Rickabaugh | 20 April 2022, 00:00:22 UTC | test: set skipLibCheck on ngcc integration test (#45672) The ngcc integration test is in an awkward state: it's attempting to test that the current ngcc can process @angular/core at v12. We need to make a forwards-incompatible change to the typings of @angular/core, which means that the compiled typings from the current ngcc won't be compatible with core as of v12. To get around this and allow the integration test to have some value, we're disabling library checking for the time being. PR Close #45672 | 20 April 2022, 12:45:57 UTC |
99b3af4 | Alex Rickabaugh | 18 April 2022, 16:58:23 UTC | refactor(compiler-cli): emit isStandalone flag in partial declarations (#45672) This commit propagates the `isStandalone` flag for a component, directive, or pipe during partial compilation of a standalone declaration. This flag allows the linker to properly process a standalone declaration that it encounters. PR Close #45672 | 20 April 2022, 12:45:57 UTC |
1244a14 | Alex Rickabaugh | 15 April 2022, 18:24:51 UTC | refactor(compiler-cli): move standalone scope computation out of handler (#45672) Standalone component scopes were first implemented in the `ComponentDecoratorHandler` itself, due to an assumption that "standalone" allowed for a localized analysis of the component's dependencies. However, this is not strictly true. Other compiler machinery also needs to understand component scopes, including standalone component scopes. A good example is the template type-checking engine, which uses a `ComponentScopeReader` to build full metadata objects (that is, metadata that considers the entire inheritance chain) for type-checking purposes. Therefore, the `ComponentScopeReader` should be able to give the scope for a standalone component. To achieve this, a new `StandaloneComponentScopeReader` is implemented, and the return type of `ComponentScopeReader.getScopeForComponent` is expanded to express standalone scopes. This cleanly integrates the "standalone" concept into the existing machinery. PR Close #45672 | 20 April 2022, 12:45:56 UTC |
d8086a1 | Alex Rickabaugh | 30 March 2022, 22:24:55 UTC | refactor(compiler-cli): emit StandaloneFeature for standalone components (#45672) This commit adds an emit for standalone components of the `StandaloneFeature`, which will support creation of standalone injectors and any other mechanisms necessary for standalone component functionality at runtime. Using a feature allows for standalone functionality to be tree-shaken in applications that aren't using them. PR Close #45672 | 20 April 2022, 12:45:56 UTC |