npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bpframework

v0.3.23

Published

Web framework like java springboot and springcloud

Downloads

106

Readme

This project is still in development

Setup.

use cli to create a project.

npm i bpframework-cli -g

create a project.

bpframework init

Example.

see directory ./examples

Feature.

| feature | supports | | ----------- | ---------------------------------- | | config | bootstrap.ymlSpringCloudConfig | | discovery | nacos | | scheduling | @Scheduled | | api routers | @RestController |

Configure.

The appropriate configuration is required to enable the corresponding feature: config

| name | description | | ------------------------------------------------------- | ------------------------------------- | | FindMicroserviceConfigure | 定义自定义的服务发现处理方法 | | FeignClientConfigure | 定义FeignClient的默认headers等信息 | | RestControllerConfigure | 定义RestController的默认headers等信息 |

@FindMicroserviceConfigure

By default, nacos is used to find micro-service; You can customize it by @FindMicroserviceConfigure.

@Service()
class Configure {
  @FindMicroserviceConfigure
  async onFindMicroservice(serviceName: string, excludeHost: string): Promise<ServiceInfo> {
    return {
      ip,
      port,
      serviceName,
      metadata,
    }
  }
}

@RestControllerConfigure

定义RestController的默认headers等信息, 使用如下方式.

@Service()
class Configure {
  @RestControllerConfigure
  onConfigure(): bp.RestControllerConfigureInfo {
    return {
      defaultHeaders: {'content-type': 'application/json;charset=utf-8'},
    }
  }
}

@FeignClientConfigure

定义FeignClient的默认headers等信息, 使用如下方式.

@Service()
class Configure {
  @FeignClientConfigure
  onConfigure(): bp.FeignClientConfigureInfo {
    return {
      defaultHeaders: {'content-type': 'application/json;charset=utf-8'},
      /**
       * 对每次请求后接收的消息进行过滤.
       */
      filterResponseCallback: (data: FeignClientFilterResponseData) => {
        
      },
      /**
       * Processing the data of the request.
       */
      filterRequestCallback: (data: FeignClientFilterRequestData, feignData: FeignDataType) => {

      }
    }
  }
}

@Value

使用 @Value 注解设置初始值或获取配置值.

@Service()
class Demo {
  @Value("Miss A")
  teacher1Name: string; // will set to 'Miss A'

  @Value("${teacherName2}")
  teacher2Name: string; // will set to config value "teacherName2"

  @Value("${teacherName3:defaultName}")
  teacher3Name: string; // will set to 'defaultName' if config value "teacherName3" isn't existed.
}

Middleware.

see https://github.com/bpcloud/middleware.git

Event Listener.

| name | description | | ------------------------------------------------------------------- | ------------------------------------------- | | ContextRefreshedEventListener | 本地配置加载完成, 系统service对象初始化完成 | | RefreshRemoteEventListener | 远程配置动态刷新事件 | | InstanceRegisteredEventListener | 实例注册到注册中心后的事件 |

@ContextRefreshedEventListener

本地配置加载完成, 系统service对象初始化完成.

@Service()
class ApplicationEvent {
  @ContextRefreshedEventListener
  async onContextRefreshed(ev:ContextRefreshedEvent):void {

  }
}

@RefreshRemoteEventListener

远程配置动态刷新事件.

@Service()
class ApplicationEvent {
  @RefreshRemoteEventListener
  async onRefreshRemote(ev:RefreshRemoteEvent):void {

  }
}

@InstanceRegisteredEventListener

实例注册到注册中心后的事件.

@Service()
class ApplicationEvent {
  @InstanceRegisteredEventListener
  async onInstanceRegistered(ev:InstanceRegisteredEvent):void {
    
  }
}

Scheduling

@Scheduled

使用此注解可以开启一个定时任务.

@Service()
class Demo {
  @Scheduled({cron:'* * * * * *'})
  async onTick(): Promise<false|void> {
    return false; // 返回false则表明停止此task.
  }
}
  • Start task: 当类实例被创建后, task即按照时间间隔运行
  • Stop task: 当@Scheduled修饰的方法明确返回false时, task将停止