{"_id":"@bugonly/vuex-undo-redo","_rev":"2-997ef6fcff883edaf39f982af24804bd","name":"@bugonly/vuex-undo-redo","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@bugonly/vuex-undo-redo","version":"0.0.1","description":"时移操作(撤回/恢复)插件，支持 Vuex v3。","main":"dist/cjs/index.js","module":"dist/esm/index.js","publishConfig":{"access":"public"},"scripts":{"tsc":"rm -rf dist/ && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json","lint":"eslint --fix \"./src/**/*.ts\"","build":"npm run lint && npm run tsc","test":"cross-env NODE_ENV=testing jest --config=./jest.config.json --testMatch=\"<rootDir>/tests/**/*.test.ts\"","prepublish":"npm run build && npm run test"},"keywords":["vue","vuex","undo","redo","typescript"],"author":{"name":"zhoujunpeng"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/bugOnly/vuex-undo-redo.git"},"devDependencies":{"@commitlint/cli":"^13.1.0","@commitlint/config-conventional":"^13.1.0","@types/jest":"^27.0.2","@types/lodash":"^4.14.173","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","cross-env":"^7.0.3","eslint":"^7.32.0","eslint-config-alloy":"^4.3.0","husky":"^7.0.2","jest":"^27.2.1","jest-extended":"^0.11.5","ts-jest":"^27.0.5","typescript":"^4.4.2","vue":"^2.6.14","vuex":"^3.6.2"},"peerDependencies":{"vuex":"^3.6.2"},"dependencies":{"lodash":"^4.17.21"},"gitHead":"e882e97b7e6bf6b03f38daedad0b4076c52a496e","bugs":{"url":"https://github.com/bugOnly/vuex-undo-redo/issues"},"homepage":"https://github.com/bugOnly/vuex-undo-redo#readme","_id":"@bugonly/vuex-undo-redo@0.0.1","_nodeVersion":"12.22.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-UaPA/hvV5crPIuDyXYHEKZZncywtmBG4Yju6uEE9hFpbICtTIKSThKt8QgY0NlQ1ldTefTmuvroY5SHmsIQ00Q==","shasum":"6680f116962ab0fbe52c8180827ab4b23565710d","tarball":"https://registry.npmjs.org/@bugonly/vuex-undo-redo/-/vuex-undo-redo-0.0.1.tgz","fileCount":36,"unpackedSize":79347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzaMeCRA9TVsSAnZWagAAb+oP/2lpAMpvsJhermMezFLe\nMK8w/552QsWt9CaG8YHdnNlz/F1ATmRZ2UCGkWXjcBxMgz+rjkiQf9mfCBR+\nKHR6JQEfrKh0+WeFGlicZtEvXPYWEyCybjGYTxmbg87nCIUl4ZfG8YpxBCGz\nvc0hxy1r9PtdgLQ2degzOIXIrwbyNqEUHkd6y40lHw1nQczZ+Pf5XMdOgTBI\nEcmT/sQDbK7ZnBZ/fDoRYpRQPdSjzMNYapBONCUF9i6HyhDiSj3PrnjMZsYI\nXIoiRxCUW3tbAN/ta+z23D6ARwK10TS1iSRW+5uX3mzRovN4503p2881gH7I\n3mS0DVBJTLCXyZzNupiOA73jRQYiuedknVn/Air/jjZPxxBTlVTr9pJX5LFf\nNqtqjENugfneD9iPrwg2wOZIkyS63Ozb7iwjvQ0bf/vw53XYr4dcl2lRxg0G\nwlsXpbL/I80DgPkv8bqmwF0xRJWlI1eIIp6BDeNZCedS9nNDd0D0f+LuG6yx\nnc6m7qfot31C8CsiZXWSwA9oD5JzCWrUIf9j7OczC+XdVS+pqhSHWiINNnTa\nkrdCFPYSs/jiKgxg6y14wAUJ4V3Mra56brRcUFX+W97jJem8dAwXUEhVbx0P\n3vkcLE2HfrKvk8v9y8BXNv+qTAvQG8pAwqqrpan8cfZK9otoEZdyhQCv3cGs\nwRQ7\r\n=2IVa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/hjJxHnpdSUurEe7l1AmKr/Hg2xjRifwREz+7cM+fgAiEA2y7gx3x7C75Aj04V86BM3oB3MxJbCzGVAdZmqokWuvM="}]},"_npmUser":{"name":"zhoujunpeng","email":"zjp0432@163.com"},"directories":{},"maintainers":[{"name":"zhoujunpeng","email":"zjp0432@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vuex-undo-redo_0.0.1_1632397979714_0.020186319654100116"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-23T11:52:59.671Z","0.0.1":"2021-09-23T11:52:59.846Z","modified":"2022-04-04T20:59:47.525Z"},"maintainers":[{"name":"zhoujunpeng","email":"zjp0432@163.com"}],"description":"时移操作(撤回/恢复)插件，支持 Vuex v3。","homepage":"https://github.com/bugOnly/vuex-undo-redo#readme","keywords":["vue","vuex","undo","redo","typescript"],"repository":{"type":"git","url":"git+https://github.com/bugOnly/vuex-undo-redo.git"},"author":{"name":"zhoujunpeng"},"bugs":{"url":"https://github.com/bugOnly/vuex-undo-redo/issues"},"license":"ISC","readme":"## Vuex-Undo-Redo\n\n时移操作(撤回/恢复)插件，支持 Vuex v3。\n\n### 安装\n```bash\n# npm\nnpm install @bugonly/vuex-undo-redo\n# yarn\nyarn add @bugonly/vuex-undo-redo\n```\n\n### 使用\n```js\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VuexUndoRedo from '@bugonly/vuex-undo-redo';\n\nVue.use(Vuex);\n\nconst undoRedo = new VuexUndoRedo({\n  module: 'user',\n  historyCapcity: 10\n});\n\nconst store = new Vuex.Store({\n  modules: {\n    user\n  },\n  // 引入插件\n  plugins: [undoRedo.plugin]\n});\n\n// 撤回操作\nundoRedo.history.undo();\n// 恢复操作\nundoRedo.history.redo();\n```\n\n### 配置\n```ts\ninterface VuexUndoRedo{\n  new(opts:IUndoRedoConfig):VuexUndoRedo;\n}\n```\n`VuexUndoRedo`类的入参配置`opts`结构如下：\n```ts\ninterface IUndoRedoConfig {\n  /**\n   * 模块名称\n   * 如果指定模块则过滤此模块之外的所有 mutation\n   */\n  module?: string;\n  /**\n   * 不跟踪的 mutation-type 清单\n   */\n  noTraceMutationTypes?: string[];\n  /**\n   * 此列表中的 mutation-type 行为不跟踪，但是会覆盖当前历史记录\n   */\n  needReplaceMutationTypes?: string[];\n  /**\n   * 过滤器，返回 false 时不执行后续逻辑\n   * 使用 filter 可以编写更复杂的过滤逻辑\n   * @param mutation\n   * @param state\n   */\n  filter?: (mutation: MutationPayload, state:Record<string, any>) => boolean;\n  /**\n   * 历史记录容量，最小值1\n   */\n  historyCapcity?: number;\n}\n```\n\n### API\n`VuexUndoRedo`的实例暴露两个属性：\n- `plugin`：插件函数，用于 Vuex 创建 Store 时使用；\n- `history`：时移操作的对象。\n\n#### `history.canUndo()`\n\n判断是否可以撤回操作，返回 boolean 值。\n\n#### `history.canRedo()`\n\n判断是否可以恢复操作，返回 boolean 值。\n\n#### `history.undo()`\n\n执行撤回操作，回退到上一步。\n\n#### `history.redo()`\n\n恢复操作，前进到下一步。\n\n#### `history.flush(snapshoot?:any)`\n\n清空历史记录，如果入参 `snapshoot` 不为空，则清空历史记录后将此快照对象塞入记录。\n> 此方案常用于记录 state 初始值。","readmeFilename":"README.md"}