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

vuex-crud-toolkit

v0.0.1

Published

Vuex crud toolkit

Readme

Vuex CRUD toolkit

Install

npm install --save vuex-crud-toolkit

or

yarn add vuex-crud-toolkit

Features

  • Dashboard with filter, pagination, trash
  • Create page
  • Update page
  • Detail page
  • Confirm remove: move item to trash
  • Confirm restore
  • Confirm purge: purge item
  • Confirm empty trash

How to use

// app.store.js
import { buildCRUDStore } from "vuex-crud-toolkit";

const APP_NAME = "Posts";

const apis = {
  getList: async (params) => {... ; return items};
  count: async (params) => {...; return { count}};
  getOne: async (id) => { ...; return data};
  create: async (data) => {...; return data};
  update: async (id, data) => {...; return data};
  remove: async (id) => {...};

  trashGetList: async (params) => {...; return items};
  trashCount: async (params) => {...; return {count}};
  trashRestore: async (id) => {...};
  trashPurge: async (id) => {...};
  trashEmpty: async () => {...};
}

const store = buildCRUDStore({
  appName: APP_NAME,
  apis,
  getEntityId: (item) => item._id,
  dashboardConfig: {
    defaultFilter: {
      q: "",
    },
    defaultLimit: 5,
    defaultPage: 1,
  },
  createConfig: {
    redirectOnSuccess: "UPDATE", // 'DASHBOARD' | 'DETAIL' | 'UPDATE' | null
    reloadDashboardOnSuccess: true,
    showNotificationOnSuccess: true,
  },
  updateConfig: {
    redirectOnSuccess: "DASHBOARD", // 'DASHBOARD' | 'DETAIL' | null
    reloadDashboardOnSuccess: true,
    showNotificationOnSuccess: true,
  },
});

export default store;

Apis params

| Name | Params | Response | Description | | -------------- | ----------------------------------------- | ----------------- | -------------------- | | getList | any | any[] | Get list items | | count | any | {count: number} | Count items | | getOne | string | number | any | Get item data by id | | create | any | any | Create new item | | update | id: string | number, data: any | any | Update item by id | | remove | string | number | any | Remove item to trash | | trashGetList | any | any[] | Get list trash items | | trashCount | any | {count: number} | Count trash items | | trashRestore | string | number | any | Restore item by id | | trashPurge | string | number | any | Purge item by id | | trashEmpty | string | number | any | Empty trash data |

Modules

This store will contain modules:

  • Notification: success and error notification control
  • Dashboard: list item with search, filter, pagination control
  • DetailPage: detail page control
  • CreatePage: create page control
  • UpdatePage: update page control
  • ConfirmRemove: confirm remove control
  • ConfirmRestore: confirm restore control
  • ConfirmPurge: confirm purge control
  • ConfirmTrashEmpty: confirm trash empty control

State

type AppState = {
  Notification: {
    success: {
      visible: boolean; // default False: success notification visible control
      message: string | null; // default null: success notification message
    };
    error: {
      visible: boolean; //default False: error notification visible control
      message: string | null; // default null: success notification message
    };
  };
  Dashboard: {
    requestId: number; // last request id, increment, avoid response is not last response
    loading: boolean; // request loading
    error: null | { message: string }; // request error
    success: boolean; // === true if request success
    items: array; // list data
    limit: number; // pagination limit
    page: number; // pagination current page
    total: number; // total items found
    filter: any; // request filter, can update by user via UI
    trashMode: boolean; // === true if go to trash. Then .items is trash items
    status: {
      normalTotal: number; // count total item (available)
      trashTotal: number; // count total item in trash (deleted)
    };
  };
  DetailPage: {
    visible: boolean; // === true if you show detail page. Used to control show detail page
    requestId: number; // last request id
    id: null | number | string; // item id
    loading: boolean; // fetch item data loading
    error: null | { message: string }; // fetch item data error
    success: boolean; // fetch item data success
    inputData: null | any; // a part of data you can show before fetchedData crawled
    fetchedData: null | any; // data fetched
  };
  CreatePage: {
    visible: boolean; // === true if you show create page. Used to control show create page
    loading: boolean; // create requesting
    error: null | { message: string }; // create request error
    success: boolean; // create request success
    submittedData: null | any; // submitted data from UI form. Example: when you click button submit
    resultData: null | any; // response of create request
  };
  UpdatePage: {
    visible: boolean; // === true if you show update page. Used to control show update page

    id: null | string | number; // id of updated item
    inputData: null | any; // a part of data you can show before fetchedData crawled

    fetchLoading: boolean; // item data fetching
    fetchError: null | { message: string };
    fetchSuccess: boolean;
    fetchedData: null | any; // response after fetch success

    updateLoading: boolean; // update requesting
    updateError: null | { message: string };
    updateSuccess: boolean;
    submittedData: null | any; // submitted data from UI form. Example: when you click button submit
    resultData: null | any; // response after create success
  };
  ConfirmRemove: {
    visible: boolean; // === true if you show confirm remove dialog. Used to control show confirm remove dialog
    id: null | string | number; // id of removed item
    inputData: null | any; // a part of data you can show before fetchedData crawled
    loading: boolean; // remove requesting
    error: null | { message: string }; // remove error
    success: boolean; // remove success
  };
  ConfirmRestore: {
    visible: boolean; // === true if you show confirm restore dialog. Used to control show confirm restore dialog
    id: null | string | number; // a part of data you can show in UI
    inputData: null | any;
    loading: boolean;
    error: null | { message: string };
    success: boolean;
  };
  ConfirmPurge: {
    visible: boolean; //  === true if you show confirm purge dialog. Used to control show confirm purge dialog
    id: null | string | number;
    inputData: null | any;
    loading: boolean;
    error: null | { message: string };
    success: boolean;
  };
  ConfirmTrashEmpty: {
    visible: boolean; //  === true if you show confirm trash empty dialog. Used to control show confirm trash empty dialog
    loading: boolean;
    error: null | { message: string };
    success: boolean;
  };
};

Module

Dashboard

State

export interface DashboardState {
  requestId: number;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
  items: any[];
  limit: number;
  page: number;
  total: number;
  filter: any;
  trashMode: boolean;
  status: {
    normalTotal: number;
    trashTotal: number;
  };
}

Actions

| Action | Params | Descripiton | | -------------------------- | --------- | ---------------------------------------------------- | | /Dashboard/fetch | | Fetch dashboard data | | /Dashboard/updateTrashMode | boolean | Update Trash Mode, true is trash and false is normal | | /Dashboard/updateFilter | object | Update filter | | /Dashboard/updatePage | number | Update page | | /Dashboard/updateLimit | number | Update page size |

Notification

State

export interface NotificationState {
  success: {
    visible: boolean;
    message: null | string;
  };
  error: {
    visible: boolean;
    message: null | string;
  };
}

Actions

| Action | Params | Descripiton | | ------------------------- | -------- | ------------------------- | | /Notification/showSuccess | string | Show success notification | | /Notification/hideSuccess | | Hide success Notification | | /Notification/showError | string | Show error notification | | /Notification/hideError | | Hide error notification | | |

Detail page

State

export interface DetailState {
  visible: boolean;
  requestId: number;
  id: null | string | number;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
  inputData: null | any;
  fetchedData: null | any;
}

Actions

| Action | Params | Descripiton | | ----------------- | ------------------------- | ----------------- | | /DetailPage/open | {id: string, data: any} | Open detail page | | /DetailPage/close | | Close detail page | | /DetailPage/fetch | | Fetch detail data |

Create page

State

export interface CreateState {
  visible: boolean;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
  submittedData: null | any;
  resultData: null | any;
}

Actions

| Action | Params | Descripiton | | ------------------ | ------ | ------------------- | | /CreatePage/open | | Open create page | | /CreatePage/close | | Close create page | | /CreatePage/create | any | Send create request |

Update page

State

export interface UpdateState {
  visible: boolean;

  id: null | string | number;
  inputData: null | any;

  fetchLoading: boolean;
  fetchError: null | { message: string };
  fetchSuccess: boolean;
  fetchedData: null | any;

  updateLoading: boolean;
  updateError: null | { message: string };
  updateSuccess: boolean;
  submittedData: null | any;
  resultData: null | any;
}

Actions

| Action | Params | Descripiton | | ------------------ | ------------------------- | ------------------- | | /UpdatePage/open | {id: string, data: any} | Open update page | | /UpdatePage/close | | Close update page | | /UpdatePage/fetch | | Send fetch request | | /UpdatePage/update | any | Send update request |

Confirm remove

State

export interface RemoveState {
  visible: boolean;
  id: null | string | number;
  inputData: null | any;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
}

Actions

| Action | Params | Descripiton | | --------------------- | ------------------------- | --------------------------- | | /ConfirmRemove/open | {id: string, data: any} | Open confirm remove dialog | | /ConfirmRemove/close | | Close confirm remove dialog | | /ConfirmRemove/remove | | Send remove request |

Confirm restore

State

export interface RestoreState {
  visible: boolean;
  id: null | string | number;
  inputData: null | any;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
}

Actions

| Action | Params | Descripiton | | ----------------------- | ------------------------- | ---------------------------- | | /ConfirmRestore/open | {id: string, data: any} | Open confirm restore dialog | | /ConfirmRestore/close | | Close confirm restore dialog | | /ConfirmRestore/restore | | Send restore request |

Confirm purge

State

export interface PurgeState {
  visible: boolean;
  id: null | string | number;
  inputData: null | any;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
}

Actions

| Action | Params | Descripiton | | --------------------- | ------------------------- | -------------------------- | | /ConfirmPurge/open | {id: string, data: any} | Open confirm purge dialog | | /ConfirmPurge/close | | Close confirm purge dialog | | /ConfirmPurge/restore | | Send purge request |

Confirm empty trash

State

export interface TrashEmptyState {
  visible: boolean;
  loading: boolean;
  error: null | { message: string };
  success: boolean;
}

Actions

| Action | Params | Descripiton | | ------------------------ | ------ | ------------------------------- | | /ConfirmTrashEmpty/open | | Open confirm empty trash dialog | | /ConfirmTrashEmpty/close | | Close confirm empty trsh dialog | | /ConfirmTrashEmpty/empty | | Send empty request |

Change log

1.0.0

First release