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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@galaxy-stack/orbit-schedule

v0.1.9

Published

Task scheduling module for Orbit framework with cron support

Readme

@galaxy-stack/orbit-schedule

Mô tả

Module lập lịch tác vụ cho Orbit với hỗ trợ cron jobs, intervals và timeouts.

Tính năng chính

1. Cron Jobs

Chạy tác vụ theo lịch cron:

import { Scheduler, Cron, CronExpressions } from '@galaxy-stack/orbit-schedule';

@Scheduler()
class TasksService {
  @Cron('0 0 * * * *')  // Mỗi giờ
  handleCron() {
    console.log('Chạy mỗi giờ');
  }

  @Cron(CronExpressions.EVERY_DAY_AT_MIDNIGHT)
  dailyTask() {
    console.log('Chạy lúc nửa đêm');
  }
}

2. Intervals

Chạy lặp lại theo khoảng thời gian:

@Scheduler()
class TasksService {
  @Interval(10000)  // Mỗi 10 giây
  handleInterval() {
    console.log('Chạy mỗi 10 giây');
  }
}

3. Timeouts

Chạy một lần sau khoảng thời gian:

@Scheduler()
class TasksService {
  @Timeout(5000)  // Sau 5 giây
  handleTimeout() {
    console.log('Chạy một lần sau 5 giây');
  }
}

Cron Expressions

Format

┌───────────── giây (0-59) [tùy chọn]
│ ┌─────────── phút (0-59)
│ │ ┌───────── giờ (0-23)
│ │ │ ┌─────── ngày trong tháng (1-31)
│ │ │ │ ┌───── tháng (1-12)
│ │ │ │ │ ┌─── ngày trong tuần (0-6, 0=Chủ nhật)
│ │ │ │ │ │
* * * * * *

Ví dụ

| Expression | Mô tả | |------------|-------| | * * * * * * | Mỗi giây | | 0 * * * * * | Mỗi phút | | 0 0 * * * * | Mỗi giờ | | 0 0 0 * * * | Mỗi ngày lúc nửa đêm | | 0 0 12 * * * | Mỗi ngày lúc 12h trưa | | 0 0 0 * * 0 | Mỗi Chủ nhật | | 0 0 0 1 * * | Ngày 1 mỗi tháng |

CronExpressions có sẵn

CronExpressions.EVERY_SECOND
CronExpressions.EVERY_5_SECONDS
CronExpressions.EVERY_MINUTE
CronExpressions.EVERY_HOUR
CronExpressions.EVERY_DAY_AT_MIDNIGHT
CronExpressions.EVERY_DAY_AT_NOON
CronExpressions.EVERY_WEEK
CronExpressions.EVERY_WEEKDAY
CronExpressions.EVERY_WEEKEND

Cấu hình Module

import { ScheduleModule } from '@galaxy-stack/orbit-schedule';

@Module({
  imports: [ScheduleModule.forRoot()],
  providers: [TasksService],
})
class AppModule {}

Quản lý Job động

import { SchedulerService, SchedulerRegistry } from '@galaxy-stack/orbit-schedule';

class DynamicScheduler {
  constructor(
    private scheduler: SchedulerService,
    private registry: SchedulerRegistry,
  ) {}

  addJob() {
    this.scheduler.addCronJob('myJob', '0 * * * * *', () => {
      console.log('Dynamic job');
    });
  }

  removeJob() {
    this.registry.deleteCronJob('myJob');
  }

  getJobs() {
    return this.registry.getCronJobs();
  }
}

Options

@Cron('* * * * *', {
  name: 'my-cron-job',
  timeZone: 'Asia/Ho_Chi_Minh',
  disabled: false,
  runOnInit: true,  // Chạy ngay khi app start
})