act-master

Act-Master is a lightweight TypeScript library that separates business logic from the application view using a simple action/event pattern. It helps you build flexible, testable, type-safe applications in Vue 3 or plain JavaScript/TypeScript — without ext
4,857 3
Install
npm install act-master
Latest Version:2.9.0
Vue:3
License:MIT
Last Updated:Oct 21, 2026
Links: GitHub  ·  npm
Maintainer: avil13

Act-Master: TypeScript Action/Event Library for Vue and JavaScript Apps

Act-Master is a lightweight TypeScript library that separates business logic from the application view using a simple action/event pattern. It helps you build flexible, testable, type-safe applications in Vue 3 or plain JavaScript/TypeScript — without extra state-management boilerplate.

npm version npm bundle size License: MIT

Act-Master logo — TypeScript action and event library for Vue

To work with Vue, there are now even fewer dependencies — just use act-master.

Table of contents

Why Act-Master

  • Separates business logic from views so components stay thin and easy to test.
  • Type-safe action and event definitions powered by TypeScript.
  • Framework-agnostic core with a first-class Vue 3 plugin (act-master/vue).
  • Small bundle size and zero required runtime dependencies for the core package.
  • CLI scaffolding via act-master-cli to generate actions quickly.

📗 Documentation

Full API reference and guides: avil13.github.io/act-master

🧪 Test writing with "ActTest"

Learn how to write tests for actions with the ActTest utility: ActTest test-writing guide


Example

Installation

Install the package and scaffold your first action with the CLI:

npm install act-master

npx act-master-cli init
// main.ts
import { act } from 'act-master';
import { VueActMaster } from 'act-master/vue';
import { createApp } from 'vue';

import { actions } from '@/act/actions';

const options: ActMasterOptions = {
  actions,
  // errorHandlerEventName: 'OnError', // Act Name for catch errors
};

const app = createApp(App);
// Installation in Vue
app.use(VueActMaster, options);

// Example installation if You not use Vue
act.init(options);
// @/act/actions
export const actions: ActMasterAction[] = [new GetDataAction()];
// action-get-data.ts
import type { ActMasterAction } from 'act-master';

export class GetDataAction implements ActMasterAction {
  name = 'GetData';

  async exec(): Promise<Record<string, any>> {
    return fetch('https://jsonplaceholder.typicode.com/todos/1').then((res) => res.json());
  }
}

Usage

Once registered, an action is available in any component, letting you isolate business logic away from the view layer. This makes components easier to unit test and makes it simple to swap or update the underlying API without touching your UI code.

// App.vue
<script setup lang="ts">
  import { act } from 'act-master';
  import { ref } from 'vue';

  const myData1 = ref<any>(null);
  const myData2 = ref<any>(null);

  // subscribe on all GetData events
  act().on('GetData', (data) => {
    myData2.value = data;
  });

  // emulate some logic
  setTimeout(() => {
    console.log(myData1.value, myData2.value); // null, null

    myData1.value = await act().exec('GetData');

    //
    console.log(this.myData1, this.myData2);
    // {
    //   "id": 1,
    //   "title": "Hello world with Act-Master!!!",
    // },
    // {
    //   "id": 1,
    //   "title": "Hello world with Act-Master!!!",
    // }
  }, 1000);
</script>

License

Act-Master is released under the MIT License.

Related Packages

vue-button-spinner

A simple button spinner.

16,948 35
vue-event-handler

Global event bus for Vue 1 and Vue 2.

2,456 15
vue-bus

A event bus for Vue.js

338,089 309
vuemit

The smallest Vue.js events handler.

18,053 141
poke-ball

vuejs application generator 帮助开发人员快速生成一个vuejs项目,同时支持该项目模...

1,632

Version History

Version Released Vue License
2.9.0 ^3.3 MIT
2.8.4 ^3.3 MIT
2.8.3 ^3.3 MIT
2.8.1 ^3.3 MIT
2.8.0 ^3.3 MIT
Pre-releases (4)
Version Released License
3.0.0-beta-04 MIT
3.0.0-beta-03 MIT
3.0.0-beta-02 MIT
3.0.0-beta-01 MIT