@createlumina/task
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Task Module

Version made for Lumina projects. Original credits goes to Voxelum/minecraft-launcher-core-node

npm version Downloads Install size npm Build Status

This is a helper module for Minecraft Launcher. See the github home page for more information.

Usage

Progress Moniting

You can use @createlumina/task model to track the progress of a task. In the launcher, they are majorly download task.

This module implements a basic object model for task with progress. The task can be paused or cancelled.

import { Task, TaskBase, task } from '@createlumina/task';

class ATask extends TaskBase {
    // implement a task
}

class BTask extends TaskBase {
    // implement a task
}

// suppose you have such task
const myTask = task('hello', function () {
    await this.yield(new ATask().setName('world'));
    await this.yield(new BTask().setName('xmcl'));
});

// start a task
const result = await task.startAndWait({
    onStart(task: Task<any>) {
        // the task path is the task name joined by dot (.)
        const path = task.path;
        console.log(`${path} started!`);
    },
    onUpdate(task: Task<any>, chunkSize: number) {
        // a task update
    },
    onFailed(task: Task<any>, error: any) {
        // on a task fail
    },
    onSucceed(task: Task<any>, result: any) {
        // on task success
        const path = task.path;
        console.log(`${path} ended!`);
    },
    // on task is paused/resumed/cancelled
    onPaused(task: Task<any>) {},
    onResumed(task: Task<any>) {},
    onCancelled(task: Task<any>) {},
});
// the result will print like
// hello started!
// hello.world started!
// hello.world ended!
// hello.xmcl started!
// hello.xmcl ended!
// hello ended!

Readme

Keywords

none

Package Sidebar

Install

npm i @createlumina/task

Weekly Downloads

3

Version

1.0.2

License

MIT

Unpacked Size

73.1 kB

Total Files

9

Last publish

Collaborators

  • padowyt2