Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

Overview

Govern Service On Redis (Service Discovery and Configuration Service)

中文文档

Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK. By using Redis in the existing infrastructure (I believe you have already deployed Redis), it doesn’t need to bring extra to the operation and maintenance deployment. Cost and burden. With the high performance of Redis, Govern Service provides ultra-high TPS&QPS (10W+/s JMH Benchmark). Govern Service combines the process cache strategy + Redis PubSub to achieve real-time process cache refresh, with unparalleled QPS performance and real-time consistency between process cache and Redis.

Installation

Gradle

Kotlin DSL

    val governVersion = "0.9.13";
    implementation("me.ahoo.govern:spring-cloud-starter-config:${governVersion}")
    implementation("me.ahoo.govern:spring-cloud-starter-discovery:${governVersion}")

Maven

4.0.0 demo 0.9.13 me.ahoo.govern spring-cloud-starter-config ${govern.version} me.ahoo.govern spring-cloud-starter-discovery ${govern.version} ">
xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0modelVersion>
  <artifactId>demoartifactId>
  <properties>
    <govern.version>0.9.13govern.version>
  properties>

  <dependencies>
    <dependency>
      <groupId>me.ahoo.governgroupId>
      <artifactId>spring-cloud-starter-configartifactId>
      <version>${govern.version}version>
    dependency>
    <dependency>
      <groupId>me.ahoo.governgroupId>
      <artifactId>spring-cloud-starter-discoveryartifactId>
      <version>${govern.version}version>
    dependency>
  dependencies>

project>

bootstrap.yml (Spring-Cloud-Config)

spring:
  application:
    name: govern-rest-api
  cloud:
    govern:
      namespace: dev
      config:
        config-id: ${spring.application.name}.yml
      redis:
        mode: standalone
        url: redis://localhost:6379

REST-API Server (Optional)

Installation REST-API Server

Option 1:Download the executable file

Download rest-api-server

tar rest-api-0.9.13.tar

cd rest-api-0.9.13
# Working directory: rest-api-0.9.13
bin/rest-api --server.port=8080 --govern.redis.uri=redis://localhost:6379

Option 2:Docker run

docker pull ahoowang/govern-service:0.9.13
docker run --name govern-service -d -p 8080:8080 --link redis -e GOVERN_REDIS_URI=redis://redis:6379  ahoowang/govern-service:0.9.13

MacBook Pro (M1)

Please use ahoowang/govern-service:0.9.13-armv7

docker pull ahoowang/govern-service:0.9.13-armv7
docker run --name govern-service -d -p 8080:8080 --link redis -e GOVERN_REDIS_URI=redis://redis:6379  ahoowang/govern-service:0.9.13-armv7

http://localhost:8080/dashboard

Dashboard

dashboard-dashboard

Namespace

dashboard-namespace

Config

dashboard-config

dashboard-config-edit

dashboard-config-rollback

dashboard-config-import

Service

dashboard-service

dashboard-service-edit

REST-API

http://localhost:8080/swagger-ui/index.html#/

Namespace

rest-api-namespace

  • /v1/namespaces
    • GET
  • /v1/namespaces/{namespace}
    • PUT
    • GET
  • /v1/namespaces/current
    • GET
  • /v1/namespaces/current/{namespace}
    • PUT
Config

rest-api-config

  • /v1/namespaces/{namespace}/configs
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}
    • GET
    • PUT
      • DELETE
  • /v1/namespaces/{namespace}/configs/{configId}/versions
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}/versions/{version}
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}/to/{targetVersion}
    • PUT

Service

rest-api-service

  • /v1/namespaces/{namespace}/services/
    • GET
  • /v1/namespaces/{namespace}/services/{serviceId}/instances
    • GET
    • PUT
  • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}
    • DELETE
  • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}/metadata
    • PUT
  • /v1/namespaces/{namespace}/services/{serviceId}/lb
    • GET

JMH-Benchmark

  • The development notebook : MacBook Pro (M1)
  • All benchmark tests are carried out on the development notebook.
  • Deploying Redis on the development notebook.

ConfigService

gradle config:jmh
# JMH version: 1.29
# VM version: JDK 11.0.11, OpenJDK 64-Bit Server VM, 11.0.11+9-LTS
# VM invoker: /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java
# VM options: -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/Users/ahoo/govern-service/config/build/tmp/jmh -Duser.country=CN -Duser.language=zh -Duser.variant
# Blackhole mode: full + dont-inline hint
# Warmup: 1 iterations, 10 s each
# Measurement: 1 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 50 threads, will synchronize iterations
# Benchmark mode: Throughput, ops/time

Benchmark                                          Mode  Cnt          Score   Error  Units
ConsistencyRedisConfigServiceBenchmark.getConfig  thrpt       265321650.148          ops/s
RedisConfigServiceBenchmark.getConfig             thrpt          106991.476          ops/s
RedisConfigServiceBenchmark.setConfig             thrpt          103659.132          ops/s

ServiceDiscovery

gradle discovery:jmh
# JMH version: 1.29
# VM version: JDK 11.0.11, OpenJDK 64-Bit Server VM, 11.0.11+9-LTS
# VM invoker: /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java
# VM options: -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/Users/ahoo/govern-service/discovery/build/tmp/jmh -Duser.country=CN -Duser.language=zh -Duser.variant
# Blackhole mode: full + dont-inline hint
# Warmup: 1 iterations, 10 s each
# Measurement: 1 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 50 threads, will synchronize iterations
# Benchmark mode: Throughput, ops/time

Benchmark                                                Mode  Cnt          Score   Error  Units
ConsistencyRedisServiceDiscoveryBenchmark.getInstances  thrpt        76894658.867          ops/s
ConsistencyRedisServiceDiscoveryBenchmark.getServices   thrpt       466036317.472          ops/s
RedisServiceDiscoveryBenchmark.getInstances             thrpt          107778.244          ops/s
RedisServiceDiscoveryBenchmark.getServices              thrpt          106920.412          ops/s
RedisServiceRegistryBenchmark.deregister                thrpt          114094.513          ops/s
RedisServiceRegistryBenchmark.register                  thrpt          109085.694          ops/s
RedisServiceRegistryBenchmark.renew                     thrpt          127003.104          ops/s

TODO

  1. Grayscale Publishing
Comments
  • cosky-rest-api-1.2.5 启动问题

    cosky-rest-api-1.2.5 启动问题

    您好,jdk版本11.0.12,redis版本3.2.12 在redis服务器上执行启动命令bin/cosky-rest-api --server.port=8080 --cosky.redis.uri=redis://127.0.0.1:6379,报错连接不上redis。远程main方法使用jedis.2.9.3.jar包测试redis可连接。 报错信息如下 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConfigService' defined in class path resource [me/ahoo/cosky/config/spring/cloud/CoskyConfigBootstrapConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [me.ahoo.cosky.config.redis.RedisConfigService]: Factory method 'redisConfigService' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:771) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:144) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:114) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:77) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.7.jar:2.4.7] at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318) ~[spring-boot-2.4.7.jar:2.4.7] at me.ahoo.cosky.rest.RestApiServer.main(RestApiServer.java:30) ~[cosky-rest-api-1.2.5.jar:na] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [me.ahoo.cosky.config.redis.RedisConfigService]: Factory method 'redisConfigService' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.8.jar:5.3.8] ... 35 common frames omitted Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisClient.connect(RedisClient.java:211) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisClient.connect(RedisClient.java:196) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getConnection(RedisConnectionFactory.java:90) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getShareConnection(RedisConnectionFactory.java:68) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getShareAsyncCommands(RedisConnectionFactory.java:73) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.config.spring.cloud.CoskyConfigBootstrapConfiguration.redisConfigService(CoskyConfigBootstrapConfiguration.java:57) ~[spring-cloud-starter-cosky-config-1.2.5.jar:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.8.jar:5.3.8] ... 36 common frames omitted Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required. at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:137) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:110) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:742) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:677) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:594) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

    2021-08-02 15:06:56.790 ERROR 3654 --- [main] o.s.boot.SpringApplication : Application run failed

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConfigService' defined in class path resource [me/ahoo/cosky/config/spring/cloud/CoskyConfigBootstrapConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [me.ahoo.cosky.config.redis.RedisConfigService]: Factory method 'redisConfigService' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:771) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:144) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:114) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:77) ~[spring-cloud-context-3.0.3.jar:3.0.3] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.8.jar:5.3.8] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.7.jar:2.4.7] at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.7.jar:2.4.7] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318) ~[spring-boot-2.4.7.jar:2.4.7] at me.ahoo.cosky.rest.RestApiServer.main(RestApiServer.java:30) ~[cosky-rest-api-1.2.5.jar:na] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [me.ahoo.cosky.config.redis.RedisConfigService]: Factory method 'redisConfigService' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.8.jar:5.3.8] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.8.jar:5.3.8] ... 35 common frames omitted Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisClient.connect(RedisClient.java:211) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.RedisClient.connect(RedisClient.java:196) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getConnection(RedisConnectionFactory.java:90) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getShareConnection(RedisConnectionFactory.java:68) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.core.redis.RedisConnectionFactory.getShareAsyncCommands(RedisConnectionFactory.java:73) ~[cosky-core-1.2.5.jar:na] at me.ahoo.cosky.config.spring.cloud.CoskyConfigBootstrapConfiguration.redisConfigService(CoskyConfigBootstrapConfiguration.java:57) ~[spring-cloud-starter-cosky-config-1.2.5.jar:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.8.jar:5.3.8] ... 36 common frames omitted Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required. at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:137) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:110) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:742) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:677) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:594) ~[lettuce-core-6.0.5.RELEASE.jar:6.0.5.RELEASE] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.65.Final.jar:4.1.65.Final] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

    bug 
    opened by MaoquanTang 15
  • Update dependency ng-zorro-antd to v15

    Update dependency ng-zorro-antd to v15

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | ng-zorro-antd (source) | ^11.4.1 -> ^15.0.0 | age | adoption | passing | confidence |


    Release Notes

    NG-ZORRO/ng-zorro-antd

    v15.0.0

    Compare Source

    Bug Fixes
    Performance Improvements

    v14.3.0

    Compare Source

    Bug Fixes
    Features

    14.2.1 (2022-11-27)

    Bug Fixes

    v14.2.1

    Compare Source

    Bug Fixes

    v14.2.0

    Compare Source

    Bug Fixes
    Features

    14.1.1 (2022-10-15)

    Bug Fixes

    v14.1.1

    Compare Source

    Bug Fixes

    v14.1.0

    Compare Source

    Bug Fixes
    Features

    v14.0.0

    Compare Source

    Bug Fixes
    Features

    BREAKING CHANGES

    v13.4.0

    Compare Source

    Bug Fixes
    • datepicker: focus input when opened programmatically (#​7512) (b3a27d8)
    • transfer: uncheck "Select all" checkbox when filtered items are moved (#​7419) (1e9c11e)
    Features
    Performance Improvements
    • transfer: add trackBy to the list and track by the hide property (#​7424) (0587236)

    13.3.2 (2022-06-25)

    Bug Fixes

    13.3.1 (2022-06-20)

    Bug Fixes
    • input, input-number, steps: fix styles in components (#​7522) (222b225)

    v13.3.2

    Compare Source

    Bug Fixes

    v13.3.1

    Compare Source

    Bug Fixes
    • input, input-number, steps: fix styles in components (#​7522) (222b225)

    v13.3.0

    Compare Source

    Bug Fixes
    Features

    13.2.2 (2022-05-12)

    Bug Fixes

    13.2.1 (2022-04-27)

    Bug Fixes
    • code-editor: remove monaco-editor dependency in config.ts (#​7392) (929084d)

    v13.2.2

    Compare Source

    Bug Fixes

    v13.2.1

    Compare Source

    Bug Fixes
    • code-editor: remove monaco-editor dependency in config.ts (#​7392) (929084d)

    v13.2.0

    Compare Source

    Bug Fixes
    Features
    Performance Improvements
    • anchor: mark scroll listener as passive (#​7330) (aab060f)
    • back-top: mark scroll listener as passive (#​7329) (7f3c4e1)
    • cascader: do not run change detection on change event (#​7312) (cb803f9)
    • image: do not run change detection when the image preview is clicked (#​7309) (752a5b6)
    • input-number: do not run change detection when mouseup and mouseleave events are dispatched on handlers (#​7313) (54386ef)
    • modal: call focus() on the next rendering frame to prevent frame drop (#​7293) (106d346)
    • resizable: mark mousedown and touchstart listeners as passive (#​7331) (518997b)
    • tree-view: do not run change detection when the nz-tree-node-checkbox is clicked (#​7307) (1e0872b)

    13.1.1 (2022-03-03)

    Bug Fixes

    v13.1.1

    Compare Source

    Bug Fixes

    v13.1.0

    Compare Source

    Bug Fixes
    Features
    Performance Improvements
    • auto-complete: do not run change detection when the promise resolves (#​7138) (e95d941)
    • back-top: do not run change detection if there are no nzClick listeners (#​7179) (7d091bb)
    • carousel: do not run change detection when the timer fires (#​7136) (fc991d1)
    • collapse: do not run change detection if the panel is disabled (#​7181) (3c3eac9)
    • dropdown: do not run change detection if the dropdown has been clicked inside (#​7135) (4679592)
    • image: do not run change detection if there are no containerClick listeners (#​7147) (f0f52a4)
    • mention: do not run change detection when the dropdown cannot be closed (#​7146) (b72bd27)
    • mention: do not trigger change detections if there are no event listeners (#​7130) (73af728)
    • resizable: do not run change detection on mousedown and touchstart events (#​7170) (9a8d794)
    • select: do not run change detection on events if the nz-option-item is disabled (#​7133) (a1bbdab)
    • select: do not run change detection unnecessarily on click events (#​7175) (fd63d22)
    • table: do not run change detection if the sorting is not shown (#​7174) (e541761)
    • table: do not unnecessarily re-enter the Angular zone (#​7142) (5a5df13)
    • table: spawn timers and add listener outside of the zone (#​7140) (ec248c9)
    • tabs: do not run change detection when the promise resolves (#​7144) (148f84d)
    • time-picker: do not run change detection when the timer fires (#​7143) (72da774)
    • tree-view: do not run change detection on click events if the nz-tree-node-option is disabled or there are no nzClick listeners (#​7178) (0054f59)
    • typography: do not run change detection on input and keydown events (#​7185) (ad547fb)

    13.0.1 (2022-01-18)

    Bug Fixes
    Performance Improvements

    v13.0.1

    Compare Source

    Bug Fixes
    Performance Improvements

    v13.0.0

    Compare Source

    BREAKING CHANGES

    dropdown

    • [nzHasBackdrop] input value are no longer supported, please use [nzBackdrop] instead.

    12.1.1 (2021-12-18)

    Bug Fixes
    Performance Improvements
    • carousel: do not run change detection on non-handled keydown events (#​7097) (ca3299e)
    • cascader: do not run change detections on non-handled keydown events (#​7060) (9a37718)
    • date-picker: do not run change detection when the date-range-popup is clicked (#​7096) (8f8c71b)
    • icon: do not run change detection when changing icon (#​7071) (e998e4a)
    • mention: do not run change detections on mousedown events (#​7094) (0d4ad23)
    • switch: reduce change detection cycles (#​7105) (6d9b1ff)
    • table: do not run change detections on click events for the nz-filter-trigger (#​7095) (346c50d)
    • time-picker: do not run change detection when scrolling (#​7063) (baf7f0a)
    • time-picker: do not run change detection when the time picker panel is clicked (#​7126) (76da3ff)
    • tree: do not run change detection when the tree node is clicked (#​7128) (55f1e04)

    v12.1.1

    Compare Source

    Bug Fixes
    Performance Improvements
    • carousel: do not run change detection on non-handled keydown events (#​7097) (ca3299e)
    • cascader: do not run change detections on non-handled keydown events (#​7060) (9a37718)
    • date-picker: do not run change detection when the date-range-popup is clicked (#​7096) (8f8c71b)
    • icon: do not run change detection when changing icon (#​7071) (e998e4a)
    • mention: do not run change detections on mousedown events (#​7094) (0d4ad23)
    • switch: reduce change detection cycles (#​7105) (6d9b1ff)
    • table: do not run change detections on click events for the nz-filter-trigger (#​7095) (346c50d)
    • time-picker: do not run change detection when scrolling ([#​7063](https://togithub

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Update dependency @types/jasmine to v3.10.7

    Update dependency @types/jasmine to v3.10.7

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @types/jasmine (source) | 3.10.6 -> 3.10.7 | age | adoption | passing | confidence |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Update angular-cli monorepo to v15 (major)

    Update angular-cli monorepo to v15 (major)

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @angular-devkit/build-angular | ~0.1102.12 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/cli | ~11.2.12 -> ~15.0.0 | age | adoption | passing | confidence |


    Release Notes

    angular/angular-cli

    v15.0.4

    Compare Source

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- | | ccc8e0350 | fix | display actionable error when a style does not exist in Karma builder | | 507f756c3 | fix | downlevel class private methods when targeting Safari <=v15 | | a0da91dba | fix | include sources in generated | | 9fd356234 | fix | only set ngDevMode when script optimizations are enabled | | 8e85f4728 | fix | update css-loader to 6.7.3 | | b2d4415ca | fix | update locale setting snippet to use globalThis. |

    Special Thanks

    Alan Agius and Charles Lyding

    v15.0.3

    Compare Source

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | | 3d9971edb | fix | default preserve symlinks to Node.js value for esbuild | | 24f4b51d2 | fix | downlevel class fields with Safari <= v15 for esbuild | | 45afc42db | fix | downlevel class properties when targeting Safari <=v15 | | e6461badf | fix | prevent optimization adding unsupported ECMASCript features |

    Special Thanks

    Charles Lyding, Dominic Elm and Paul Gschwendtner

    v15.0.2

    Compare Source

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | | 2891d5bc9 | fix | correctly set Sass quietDeps and verbose options |

    @​ngtools/webpack

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------- | | d9cc4b028 | fix | elide unused type references |

    Special Thanks

    Alan Agius and Juuso Valkeejärvi

    v15.0.1

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | | eda96def4 | fix | use global version of the CLI when running ng new |

    @​schematics/angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | | 48426852b | fix | show warning when a TS Config is not found during migrations |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------- | | 2af32fd3a | fix | hide loader paths in webpack warnings | | 19f5cc746 | fix | improve package deep import Sass index resolution in esbuild plugin | | 2220a907d | fix | use url function lexer to rebase Sass URLs |

    Special Thanks

    Alan Agius, Charles Lyding, Doug Parker, Joey Perrott and Piotr Wysocki

    v15.0.0

    Compare Source

    Breaking Changes

    @​angular/cli
    • The Angular CLI no longer supports 16.10.x, 16.11.x and 16.12.x. Current minimum versions of Node.js are 14.20.0, 16.13.0 and 18.10.0.
    • Node.js versions older than 14.20 are no longer supported.
    • The 'path' option in schematics schema no longer has a special meaning. Use 'workingDirectory' smart default provider should be used instead.
    @​schematics/angular
    • Removed unused appDir option from Universal and App-Shell schematic. This option can safely be removed if present since it no longer has effect.

    • analyticsSharing option in the global angular configuration has been removed without replacement. This option was used to configure the Angular CLI to access to your own users' CLI usage data.

      If this option is used, it can be removed using ng config --global cli.analyticsSharing undefined.

    • analytics APIs have been removed without replacement from @angular-devkit/core and @angular-devkit/architect.

    @​angular-devkit/build-angular
    • TypeScript versions older than 4.8.2 are no longer supported.

    • The server builder bundleDependencies option has been removed. This option was used pre Ivy. Currently, using this option is unlikely to produce working server bundles.

      The externalDependencies option can be used instead to exclude specific node_module packages from the final bundle.

      • Deprecated support for tilde import has been removed. Please update the imports by removing the ~.

      Before

      @&#8203;import '~font-awesome/scss/font-awesome';
      

      After

      @&#8203;import 'font-awesome/scss/font-awesome';
      
      • By default the CLI will use Sass modern API, While not recommended, users can still opt to use legacy API by setting NG_BUILD_LEGACY_SASS=1.
    • Internally the Angular CLI now always set the TypeScript target to ES2022 and useDefineForClassFields to false unless the target is set to ES2022 or later in the TypeScript configuration. To control ECMA version and features use the Browerslist configuration.

    • require.context are no longer parsed. Webpack specific features are not supported nor guaranteed to work in the future.

    • Producing ES5 output is no longer possible. This was needed for Internet Explorer which is no longer supported. All browsers that Angular supports work with ES2015+

    • server builder bundleDependencies option now only accept a boolean value.

    • Deprecated support for Stylus has been removed. The Stylus package has never reached a stable version and its usage in the Angular CLI is minimal. It's recommended to migrate to another CSS preprocessor that the Angular CLI supports.

    @​angular-devkit/core
    • Workspace projects with missing root is now an error.
    @​ngtools/webpack
    • TypeScript versions older than 4.8.2 are no longer supported.
    @​schematics/angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------ | | 766d4a089 | feat | add migration to remove require calls from karma builder main file | | d8bff4f1e | feat | Added --project-root option to the library schematics | | 597bfea1b | feat | drop polyfills.ts file from new templates | | 1c21e470c | feat | enable error on unknown properties and elements in tests | | f2a0682dc | feat | generate new projects using TypeScript 4.8.2 | | b06421d15 | feat | mark projectRoot as non hidden option in application schematic | | b6897dbb0 | feat | remove karma.conf.js from newly generated projects | | 301b5669a | feat | remove ngOnInit from component template | | 9beb878e2 | feat | remove Browserslist configuration files from projects | | 283b564d1 | feat | remove environment files in new applications | | 56a1e8f9f | feat | remove test.ts file from new projects | | 4e69e8050 | fix | add @angular/localize as type when localize package is installed | | 57d93fb7d | fix | mark project as required option | | 84e3f7727 | fix | remove empty lines | | 316a50d75 | fix | remove TypeScript target from universal schematic | | 69b221498 | refactor | remove deprecated appDir option |

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | 4827d1b23 | feat | add support for Node.js version 18 | | 4b623461a | feat | drop support for Node.js versions older than 14.20 | | 3dea1fa71 | fix | add unique user id as user parameter in GA | | af07aa340 | fix | add workspace information as part of analytics collection | | 83524f625 | fix | allow ng add to find prerelease versions when CLI is prerelease | | 22955f245 | fix | do not collect analytics when running in non TTY mode | | 35e5f4278 | fix | exclude @angular/localize@<10.0.0 from ng add pa… (#​24152) | | 1a584364e | fix | exclude @angular/[email protected] from ng add package discovery | | ff0382718 | fix | respect registry in RC when running update through yarn | | 774d349b7 | refactor | remove deprecated path handler |

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------- | | 639a3071c | refactor | migrate analytics collector to use GA4 | | c969152de | refactor | remove analytics API from core and architect |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------- | | 4ead45cab | feat | add ng-server-context when using app-shell builder | | 1c527a9da | feat | add esbuild-based builder initial support for fileReplacements | | 67324b3e5 | feat | add initial incremental code rebuilding to esbuild builder | | 3d94ca21b | feat | add initial watch support to esbuild-based builder | | c592ec584 | feat | amend polyfills option in all builders to support an array of module specifiers | | a95d130ef | feat | auto include @angular/localize/init when found in types | | 979bce45e | feat | auto include @angular/platform-server/init during server builds | | fd4175357 | feat | drop support for TypeScript 4.6 and 4.7 | | 15d3fc6dc | feat | export @angular/platform-server symbols in server bundle | | 05a98c029 | feat | karma builder main option is now optional | | 2b6029245 | feat | providing a karma config is now optional | | 9c13fce16 | feat | remove bundleDependencies from server builder | | 308e3a017 | feat | switch to use Sass modern API | | 1e5d4a750 | feat | use Browserslist to determine ECMA output | | 3ff391738 | fix | account for package.json exports fields with CSS import statements | | 001445982 | fix | account for package.json exports with Sass in esbuild builder | | 6280741ce | fix | add @angular/platform-server as an optional peer dependency | | f9a2c3a12 | fix | allow both script and module sourceTypes to be localized | | 4cb27b803 | fix | avoid attempted resolve of external CSS URLs with esbuild builder | | 192e0e6d7 | fix | correct escaping of target warning text in esbuild builder | | 4fcb0a82b | fix | correctly resolve Sass partial files in node packages | | fb5a66ae6 | fix | fix crash when Sass error occurs | | b6df9c136 | fix | handle conditional exports in scripts and styles option | | 0ee7625d6 | fix | ignore cache path when watching with esbuild builder | | e34bfe5eb | fix | ignore specs in node_modules when finding specs | | f143171fd | fix | only add @angular/platform-server/init when package is installed. | | 3a1970b76 | fix | only import karma when running karma builder | | 8b84c18ed | fix | provide workaround for V8 object spread performance defect | | 7dd122ad5 | fix | rebase Sass url() values when using esbuild-based builder | | 2105964af | fix | resolve transitive dependencies in Sass when using Yarn PNP | | 54e1c01d8 | fix | show file replacement in TS missing file error in esbuild builder | | 6c3f281d9 | fix | show warning when using TypeScript target older then ES2022 in esbuild builder | | 8f8e02c32 | fix | support Yarn PNP resolution in modern SASS API | | fc82e3bec | fix | update browerslist package | | 0d62157a3 | fix | update sourcemaps when rebasing Sass url() functions in esbuild builder | | 1518133db | fix | use relative sourcemap source paths for Sass in esbuild builder | | fb4ead2ce | fix | wait during file watching to improve multi-save rebuilds for esbuild builder | | b059fc735 | fix | warn when components styles sourcemaps are not generated when styles optimization is enabled | | 9d0872fb5 | perf | add initial global styles incremental rebuilds with esbuild builder | | 0fe6b3b75 | perf | add vendor chunking to server builder | | 8c915d414 | perf | avoid extra babel file reads in esbuild builder rebuilds | | 919fe2148 | perf | avoid extra TypeScript emits with esbuild rebuilds | | 92145c4a7 | perf | avoid template diagnostics for declaration files in esbuild builder | | 52db3c000 | perf | minimize Angular diagnostics incremental analysis in esbuild-based builder | | feb06753d | perf | use esbuild-based builder to directly downlevel for await...of | | 9d83fb91b | perf | use Sass worker pool for Sass support in esbuild builder | | 45a94228f | perf | use Uint8Arrays for incremental caching with esbuild-based builder | | f393b0928 | refactor | disable requireContext parsing | | 12931ba8c | refactor | remove deprecated ES5 support | | 7f1017e60 | refactor | remove old bundleDependencies enum logic | | 2ba44a433 | refactor | remove support for Stylus |

    @​angular-devkit/core

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------- | | ea4c0aa2e | fix | throw error when project has missing root property | | de467f46d | fix | update logger forEach promiseCtor type |

    @​angular-devkit/schematics

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------ | | 9b07b469b | refactor | remove UpdateBuffer and rename UpdateBuffer2 to UpdateBuffer |

    @​ngtools/webpack

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- | | 43bd0abc1 | feat | drop support for TypeScript 4.6 and 4.7 | | 1c1f985b9 | fix | support inline style sourcemaps when using css-loader for component styles |

    Special Thanks

    Alan Agius, Brent Schmidt, Charles Lyding, Cédric Exbrayat, Dariusz Ostolski, Doug Parker, Günhan Gülsoy, Jason Bedard, Lukas Spirig, Ruslan Lekhman, angular-robot[bot] and minijus

    v14.2.10

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------- | | 9ce386caf | fix | exclude @angular/localize@<10.0.0 from ng add pa… (#​24152) | | 6446091a3 | fix | exclude @angular/[email protected] from ng add package discovery | | 7541e04f3 | fix | respect registry in RC when running update through yarn |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------- | | 21cea0b42 | fix | update loader-utils to 3.2.1 |

    Special Thanks

    Alan Agius and Charles Lyding

    v14.2.9

    Compare Source

    @​angular-devkit/architect

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | | e3e787767 | fix | default to failure if no builder result is provided |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | | 12b2dc5a2 | fix | isolate zone.js usage when rendering server bundles |

    Special Thanks

    Alan Agius and Charles Lyding

    v14.2.8

    Compare Source

    @​schematics/angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | | 4b0ee8ad1 | fix | guard schematics should include all guards (CanMatch) |

    Special Thanks

    Andrew Scott

    v14.2.7

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | | 91b5bcbb3 | fix | disable version check during auto completion | | 02a3d7b71 | fix | skip node.js compatibility checks when running completion |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | | bebed9df8 | fix | issue dev-server support warning when using esbuild builder |

    Special Thanks

    Alan Agius and Charles Lyding

    v14.2.6

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------ | | 1c9cf594f | fix | handle missing which binary in path | | 28b2cd18e | fix | skip downloading temp CLI when running ng update without package names |

    @​angular-devkit/core

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------- | | ad6928184 | fix | project extension warning message should identify concerned project |

    Special Thanks

    AgentEnder and Alan Agius

    v14.2.5

    Compare Source

    @​angular-devkit/schematics

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | | 17eb20c77 | fix | throw more relevant error when Rule returns invalid null value |

    Special Thanks

    Alan Agius and Charles Lyding

    v14.2.4

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------- | | 05b18f4e4 | fix | add builders and schematic names as page titles in collected analytics |

    Special Thanks

    Alan Agius, Jason Bedard and Paul Gschwendtner

    v14.2.3

    Compare Source

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | | e7e0cb78f | fix | correctly display error messages that contain "at" text. | | 4756d7e06 | fix | watch symbolic links |

    @​ngtools/webpack

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | | 1e3ecbdb1 | perf | avoid bootstrap conversion AST traversal where possible |

    Special Thanks

    Alan Agius, Charles Lyding, Jason Bedard and Joey Perrott

    v14.2.2

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------- | | 5405a9b3b | fix | favor non deprecated packages during update |

    @​schematics/angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------- | | 6bfd6a7fb | fix | update minimum Angular version to 14.2 |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | | 2b00bca61 | fix | allow esbuild-based builder to use SVG Angular templates | | 45c95e1bf | fix | change service worker errors to compilation errors | | ecc014d66 | fix | handle service-worker serving with localize in dev-server | | 39ea128c1 | fix | handling of @media queries inside css layers | | 17b7e1bdf | fix | issue warning when using deprecated tilde imports | | 3afd784f1 | fix | watch index file when running build in watch mode |

    Special Thanks

    Alan Agius, Charles Lyding, Jason Bedard and Joey Perrott

    v14.2.1

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------- | | 9ce386caf | fix | exclude @angular/localize@<10.0.0 from ng add pa… (#​24152) | | 6446091a3 | fix | exclude @angular/[email protected] from ng add package discovery | | 7541e04f3 | fix | respect registry in RC when running update through yarn |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------- | | 21cea0b42 | fix | update loader-utils to 3.2.1 |

    Special Thanks

    Alan Agius and Charles Lyding

    v14.2.0

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------- | | 596037010 | fix | add missing space after period in warning text |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | | 44c25511e | feat | add ability to serve service worker when using dev-server | | 3fb569b5c | feat | switch to Sass modern API in esbuild builder | | 5bd03353a | fix | correct esbuild builder global stylesheet sourcemap URL | | c4402b1bd | fix | correctly handle parenthesis in url | | 50c783307 | fix | use valid CSS comment for sourcemaps with Sass in esbuild builder | | 4c251853f | perf | avoid extra string creation with no sourcemaps for esbuild sass | | d97640534 | perf | with esbuild builder only load Sass compiler when needed |

    Special Thanks

    Alan Agius, Charles Lyding, Doug Parker, Jason Bedard, Joey Perrott, Kristiyan Kostadinov and angular-robot[bot]

    v14.1.3

    Compare Source

    @​angular-devkit/core

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | | 365035cb3 | fix | update workspace extension warning to use correct phrasing |

    Special Thanks

    AgentEnder, Alan Agius, Charles Lyding and Jason Bedard

    v14.1.2

    Compare Source

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------- | | 3e19c842c | fix | avoid collect stats from chunks with no files | | d0a0c597c | fix | correctly handle data URIs with escaped quotes in stylesheets | | 67b3a086f | fix | process stylesheet resources from url tokens with esbuild browser builder | | e6c45c316 | perf | reduce babel transformation in esbuild builder | | 38b71bcc0 | perf | use esbuild in esbuild builder to downlevel native async/await |

    @​ngtools/webpack

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- | | dd47a5e8c | fix | elide type only named imports when using emitDecoratorMetadata |

    Special Thanks

    Alan Agius, Charles Lyding and Jason Bedard

    v14.1.1

    Compare Source

    @​angular/cli

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------- | | 4ee825bac | fix | catch clause variable is not an Error instance |

    @​schematics/angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------- | | 83dcfb32f | fix | prevent numbers from class names |

    @​angular-devkit/build-angular

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------- | | ef6da4aad | fix | allow the esbuild-based builder to fully resolve global stylesheet packages | | eed54b359 | fix | catch clause variable is not an Error instance | | c98471094 | fix | correctly respond to preflight requests | | 94b444e4c | fix | correctly set ngDevMode in esbuilder |

    @​angular-devkit/core

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | | 44c18082a | fix | classify string util should concat string without using a . |

    @​angular/create

    | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | | cb0d3fb33 | fix | use appropriate package manager to install dependencies |

    Special Thanks

    Alan Agius, Charles Lyding, Jason Bedard and Paul Gschwendtner

    v14.1.0

    Compare Source

    @​angular/cli

    | Commit | Type | Description


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Update angular monorepo to v15 (major)

    Update angular monorepo to v15 (major)

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @angular/animations | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/common | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/compiler | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/compiler-cli (source) | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/core | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/forms | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/platform-browser | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/platform-browser-dynamic | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence | | @angular/router (source) | ~11.2.13 -> ~15.0.0 | age | adoption | passing | confidence |


    Release Notes

    angular/angular

    v15.0.4

    Compare Source

    animations

    | Commit | Type | Description | | -- | -- | -- | | 6c1064c72f | fix | fix incorrect handling of camel-case css properties (#​48436) |

    common

    | Commit | Type | Description | | -- | -- | -- | | f30d18a942 | fix | Fix TestBed.overrideProvider type to include multi (#​48424) |

    compiler-cli

    | Commit | Type | Description | | -- | -- | -- | | b55d2dab5d | fix | evaluate const tuple types statically (#​48091) |

    Special Thanks

    Alan Agius, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, BrowserPerson, Jens, Jessica Janiuk, Joey Perrott, JoostK, Konstantin Kharitonov, Lukas Matta, Piotr Kowalski, Virginia Dooley, Yannick Baron, dario-piotrowicz, lsst25, piyush132000 and why520crazy

    v15.0.3

    Compare Source

    common

    | Commit | Type | Description | | -- | -- | -- | | 50b1c2bf52 | fix | Don't generate srcsets with very large sources (#​47997) | | bf44dc234a | fix | Update Location to support base href containing origin (#​48327) |

    compiler

    | Commit | Type | Description | | -- | -- | -- | | 9a5d84249a | fix | make sure selectors inside container queries are correctly scoped (#​48353) |

    compiler-cli

    | Commit | Type | Description | | -- | -- | -- | | 167bc0d163 | fix | Produce diagnostic rather than crash when using invalid hostDirective (#​48314) |

    core

    | Commit | Type | Description | | -- | -- | -- | | e4dcaa513e | fix | unable to inject ChangeDetectorRef inside host directives (#​48355) |

    Special Thanks

    Alan Agius, Alex Castle, Andrew Kushnir, Andrew Scott, Bob Watson, Derek Cormier, Joey Perrott, Konstantin Kharitonov, Kristiyan Kostadinov, Paul Gschwendtner, Pawel Kozlowski, dario-piotrowicz and piyush132000

    v15.0.2

    Compare Source

    compiler-cli

    | Commit | Type | Description | | -- | -- | -- | | 86a21f5569 | fix | accept inheriting the constructor from a class in a library (#​48156) |

    Special Thanks

    Alan Agius, Andrew Scott, Aristeidis Bampakos, Bob Watson, Derek Cormier, JoostK, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Rokas Brazdžionis, mgechev and piyush132000

    v15.0.1

    Compare Source

    common

    | Commit | Type | Description | | -- | -- | -- | | 930af9dd26 | fix | Fix MockPlatformLocation events and missing onPopState implementation (#​48113) |

    forms

    | Commit | Type | Description | | -- | -- | -- | | b342e55509 | fix | don't mutate validators array (#​47830) | | a12a120272 | fix | FormBuilder.group return right type with shorthand parameters. (#​48084) |

    language-service

    | Commit | Type | Description | | -- | -- | -- | | cc8b76ef7c | fix | correctly handle host directive inputs/outputs (#​48147) | | a8c33bf931 | fix | update packages/language-service/build.sh script to work with vscode-ng-language-service's new Bazel build (#​48120) |

    router

    | Commit | Type | Description | | -- | -- | -- | | e4309d57d8 | fix | correct type of nextState parameter in canDeactivate (#​48038) | | 9baefd085f | fix | Ensure renavigating in component init works with enabledBlocking (#​48063) | | fa5528fb5f | fix | restore 'history.state' on popstate even if navigationId missing (#​48033) |

    Special Thanks

    Alan Agius, Andrew Scott, Bjarki, Bob Watson, Brooke, Derek Cormier, Dylan Hunn, George Kalpakas, Greg Magolan, Ikko Ashimine, Ivan Rodriguez, Jessica Janiuk, Joe Roxbury, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Mikhail Savchuk, Nebojsa Cvetkovic, Pawel Kozlowski, Volodymyr and Wooshaah

    v15.0.0

    Compare Source

    Blog post "Angular v15 is now available".

    Breaking Changes

    compiler
    • 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.
    compiler-cli
    • Invalid constructors for DI may now report compilation errors

      When a class inherits its constructor from a base class, the compiler may now report an error when that constructor cannot be used for DI purposes. This may either be because the base class is missing an Angular decorator such as @Injectable() or @Directive(), or because the constructor contains parameters which do not have an associated token (such as primitive types like string). These situations used to behave unexpectedly at runtime, where the class may be constructed without any of its constructor parameters, so this is now reported as an error during compilation.

      Any new errors that may be reported because of this change can be resolved either by decorating the base class from which the constructor is inherited, or by adding an explicit constructor to the class for which the error is reported.

    • Angular compiler option enableIvy has been removed as Ivy is the only rendering engine.

    core
    • Angular no longer supports Node.js versions 14.[15-19].x and 16.[10-12].x. Current supported versions of Node.js are 14.20.x, 16.13.x and 18.10.x.
    • TypeScript versions older than 4.8 are no longer supported.
    • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.
    • Existing iframe usages may have src or srcdoc preceding other attributes. Such usages may need to be updated to ensure compliance with the new stricter rules around iframe bindings.
    forms
    • setDisabledState will always be called when a ControlValueAccessor is attached. You can opt-out with FormsModule.withConfig or ReactiveFormsModule.withConfig.
    localize
      • canParse method has been removed from all translation parsers in @angular/localize/tools. analyze should be used instead.
      • the hint parameter in theparse methods is now mandatory.
    router
    • Previously, the RouterOutlet would immediately instantiate the component being activated during navigation. Now the component is not instantiated until the change detection runs. This could affect tests which do not trigger change detection after a router navigation. In rarer cases, this can affect production code that relies on the exact timing of component availability.
    • The title property is now required on ActivatedRouteSnapshot
    • relativeLinkResolution is no longer configurable in the Router. This option was used as a means to opt out of a bug fix.

    Deprecations

    common
    • The DATE_PIPE_DEFAULT_TIMEZONE token is now deprecated in favor of the DATE_PIPE_DEFAULT_OPTIONS token, which accepts an object as a value and the timezone can be defined as a field (called timezone) on that object.
    core
      • The ability to pass an NgModule to the providedIn option for @Injectable and InjectionToken is now deprecated.

      providedIn: NgModule was intended to be a tree-shakable alternative to NgModule providers. It does not have wide usage, and in most cases is used incorrectly, in circumstances where providedIn: 'root' should be preferred. If providers should truly be scoped to a specific NgModule, use NgModule.providers instead.

      • The ability to set providedIn: 'any' for an @Injectable or InjectionToken is now deprecated.

      providedIn: 'any' is an option with confusing semantics and is almost never used apart from a handful of esoteric cases internal to the framework.

    • The bit field signature of Injector.get() has been deprecated, in favor of the new options object.

    • The bit field signature of TestBed.inject() has been deprecated, in favor of the new options object.

    router
    • The RouterLinkWithHref directive is deprecated, use the RouterLink directive instead. The RouterLink contains the code from the RouterLinkWithHref to handle elements with href attributes.
    common

    | Commit | Type | Description | | -- | -- | -- | | c0c7efaf7c | feat | add provideLocationMocks() function to provide Location mocks (#​47674) | | 75e6297f09 | feat | add preload tag on server for priority img (#​47343) | | 4fde292bb5 | feat | Add automatic srcset generation to ngOptimizedImage (#​47547) | | 9483343ebf | feat | Add fill mode to NgOptimizedImage (#​47738) | | bdb5371033 | feat | add injection token for default DatePipe configuration (#​47157) | | 449d29b701 | fix | Add fetchpriority to ngOptimizedImage preloads (#​48010) | | 4f52d4e474 | fix | don't generate srcset if noopImageLoader is used (#​47804) | | 3a18398d83 | fix | Don't warn about image distortion is fill mode is enabled (#​47824) | | edea15f2c6 | fix | export the IMAGE_CONFIG token (#​48051) | | 8abf1c844c | fix | fix formatting on oversized image error (#​47188) | | ca7bf65933 | fix | rename rawSrc -> ngSrc in NgOptimizedImage directive (#​47362) | | b3879dbf14 | fix | support density descriptors with 2+ decimals (#​47197) | | fa4798095e | fix | update size error to mention 'fill' mode (#​47797) | | 23f210c0ab | fix | warn if using supported CDN but not built-in loader (#​47330) | | 945432e3fa | fix | Warn on fill ngOptimizedImage without height (#​48036) |

    compiler

    | Commit | Type | Description | | -- | -- | -- | | 051f75648d | fix | scope css keyframes in emulated view encapsulation (#​42608) | | 39b72e208b | fix | update element schema (#​47552) | | 48b354a83e | fix | update element schema (#​47552) |

    compiler-cli

    | Commit | Type | Description | | -- | -- | -- | | bc54687c7b | fix | exclude abstract classes from strictInjectionParameters requirement (#​44615) | | 309b2cde51 | fix | implement more host directive validations as diagnostics (#​47768) | | 2e1dddec45 | fix | support hasInvalidatedResolutions. (#​47585) | | 19ad4987f9 | fix | use @​ts-ignore. (#​47636) | | 8fcadaad48 | perf | cache source file for reporting type-checking diagnostics (#​47471) | | 16f96eeabf | refactor | remove enableIvy options (#​47346) |

    core

    | Commit | Type | Description | | -- | -- | -- | | e3cef4a784 | docs | deprecate providedIn: NgModule and providedIn: 'any' (#​47616) | | 1b9fd46d14 | feat | add support for Node.js version 18 (#​47730) | | ed11a13c3c | feat | drop support for TypeScript 4.6 and 4.7 (#​47690) | | db28badfe6 | feat | enable the new directive composition API (#​47642) | | 7de1469be6 | feat | introduce EnvironmentProviders wrapper type (#​47669) | | 841c8e5138 | feat | support object-based DI flags in Injector.get() (#​46761) | | 120555a626 | feat | support object-based DI flags in TestBed.inject() (#​46761) | | 96c0e42e61 | fix | allow readonly arrays for standalone imports (#​47851) | | 28f289b825 | fix | hardening attribute and property binding rules for