{"_id":"fpersist","_rev":"4570101","name":"fpersist","description":"Simple on disk persistence with safe, functional writes.","dist-tags":{"latest":"1.0.5"},"maintainers":[{"name":"rschmidt","email":""}],"time":{"modified":"2026-04-10T15:25:11.000Z","created":"2019-01-23T07:13:52.772Z","1.0.5":"2021-06-11T14:49:28.577Z","1.0.4":"2020-04-20T20:00:28.244Z","1.0.3":"2020-01-12T16:02:33.258Z","1.0.2":"2019-09-21T14:59:35.337Z","1.0.1":"2019-07-28T17:13:28.761Z","1.0.0":"2019-07-28T17:12:27.792Z","0.0.4":"2019-06-28T05:50:59.429Z","0.0.3":"2019-06-28T05:23:31.176Z","0.0.2":"2019-06-18T12:01:53.143Z","0.0.1":"2019-02-20T11:11:32.442Z","0.0.0":"2019-01-23T07:13:52.772Z"},"users":{},"author":{"name":"mistval"},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"versions":{"1.0.5":{"name":"fpersist","version":"1.0.5","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"c65e7481ccafe8c05952c29654193b758cfdc897","_id":"fpersist@1.0.5","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"shasum":"d41b8c97606a4b8ce38f37c9aad905e78762d18d","size":4861,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.5.tgz"},"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"maintainers":[{"name":"rschmidt","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.5_1623422968446_0.7699097954696819"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:40.747Z","publish_time":1623422968577,"_cnpm_publish_time":1623422968577},"1.0.4":{"name":"fpersist","version":"1.0.4","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"05b22bac90e3ad8e12558751e5f94ad6288ddba3","_id":"fpersist@1.0.4","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"shasum":"99766abb7961e34946a63df03120ec542f57a8f8","size":4831,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.4.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.4_1587412828119_0.12450029087068848"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:39.908Z","publish_time":1587412828244,"_cnpm_publish_time":1587412828244},"1.0.3":{"name":"fpersist","version":"1.0.3","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"a8b6f7bb815dfce6b4eaf284ed3dc86e07f2c89d","_id":"fpersist@1.0.3","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"shasum":"fcae5aaa83285e05a4a2a623a06dbbc591399a60","size":4714,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.3.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.3_1578844953120_0.4419512051544954"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:39.029Z","publish_time":1578844953258,"_cnpm_publish_time":1578844953258},"1.0.2":{"name":"fpersist","version":"1.0.2","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"bf5ec134c1a448167a7095b861238c92793abbbe","_id":"fpersist@1.0.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"shasum":"93206f3ac1151838e947013d97394b0a9f34dd1c","size":4697,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.2.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.2_1569077975155_0.8456631204677594"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:38.167Z","publish_time":1569077975337,"_cnpm_publish_time":1569077975337},"1.0.1":{"name":"fpersist","version":"1.0.1","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"bd1fe4fce39254979817176ee26b146055d430cd","_id":"fpersist@1.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"shasum":"fbc0971719a1653761902fb0513526740a56097f","size":4695,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.1.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.1_1564334008624_0.8228500970517649"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:37.258Z","publish_time":1564334008761,"_cnpm_publish_time":1564334008761},"1.0.0":{"name":"fpersist","version":"1.0.0","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"6bdd3d5bea1240d6ee3a0e9a5dec04788a04cc26","_id":"fpersist@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"shasum":"28c309980aa96dccc4699bbbb942de7afe4e8c54","size":4779,"noattachment":false,"key":"/fpersist/-/fpersist-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-1.0.0.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_1.0.0_1564333947616_0.7711031791780594"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:36.370Z","publish_time":1564333947792,"_cnpm_publish_time":1564333947792},"0.0.4":{"name":"fpersist","version":"0.0.4","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{"md5":"^2.2.1","mkdirp":"^0.5.1"},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"0f076e6fcf02945cf694465456e5589366b24bf3","_id":"fpersist@0.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"dist":{"shasum":"b9d401bfa2ee5f1492a0b8fcf196ea12294498a3","size":4728,"noattachment":false,"key":"/fpersist/-/fpersist-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-0.0.4.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_0.0.4_1561701059259_0.2579049875277897"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:35.504Z","publish_time":1561701059429,"_cnpm_publish_time":1561701059429},"0.0.3":{"name":"fpersist","version":"0.0.3","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{"md5":"^2.2.1","mkdirp":"^0.5.1"},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"e39d7ab47a46ce2c33ff660061299da22c3c218a","_id":"fpersist@0.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"dist":{"shasum":"a0c0b9491c0e036edbdd74b72a483913315000f3","size":4611,"noattachment":false,"key":"/fpersist/-/fpersist-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-0.0.3.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_0.0.3_1561699411045_0.11197672671364067"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:34.624Z","publish_time":1561699411176,"_cnpm_publish_time":1561699411176},"0.0.2":{"name":"fpersist","version":"0.0.2","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{"md5":"^2.2.1","mkdirp":"^0.5.1"},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"e26ad861f9599947e1a6ce5c8e2d2daee8ef790e","_id":"fpersist@0.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"dist":{"shasum":"0ac2ef57e4f2ef9e8064e672d3c394095f8e3e83","size":4700,"noattachment":false,"key":"/fpersist/-/fpersist-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-0.0.2.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_0.0.2_1560859313015_0.3109400338662429"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:33.729Z","publish_time":1560859313143,"_cnpm_publish_time":1560859313143},"0.0.1":{"name":"fpersist","version":"0.0.1","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{"md5":"^2.2.1","mkdirp":"^0.5.1"},"devDependencies":{"eslint":"^5.12.1","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.15.0"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"eslint .","lintfix":"eslint --fix ."},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"a1f21304164cd941633c1638f1e7412eb88ab689","_id":"fpersist@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"dist":{"shasum":"839c9be2f8f0d0502734a338cc65d5589dee6e05","size":4658,"noattachment":false,"key":"/fpersist/-/fpersist-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-0.0.1.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_0.0.1_1550661092240_0.7129360099845901"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:32.858Z","publish_time":1550661092442,"_cnpm_publish_time":1550661092442},"0.0.0":{"name":"fpersist","version":"0.0.0","description":"Simple on disk persistence with safe, functional writes.","main":"index.js","dependencies":{"md5":"^2.2.1","mkdirp":"^0.5.1"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/mistval/fpersist.git"},"keywords":["persistence","node","persist","write","safe","disk","json"],"author":{"name":"mistval"},"license":"MIT","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"homepage":"https://github.com/mistval/fpersist#readme","gitHead":"c0d1ff7806430112dbf24b15d4eb19610bc776f4","_id":"fpersist@0.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"rschmidt","email":"randallschmidt1@gmail.com"},"dist":{"shasum":"cd0de6f63c8c19083b33224eea145d5faf2e89fb","size":4473,"noattachment":false,"key":"/fpersist/-/fpersist-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/fpersist/download/fpersist-0.0.0.tgz"},"maintainers":[{"name":"rschmidt","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fpersist_0.0.0_1548227632668_0.4404835207646882"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T15:09:31.956Z","publish_time":1548227632772,"_cnpm_publish_time":1548227632772}},"readme":"# FPersist\n\nSimple key-value on-disk persistence with safe, functional writes. WIP\n\nFPersist is inspired by [node-persist](https://www.npmjs.com/package/node-persist) and is intended to solve some shortcomings of node-persist, described more in the **Motivation** section below. If you already have data stored with node-persist, FPersist can use it, just tell FPersist to use your node-persist directory. Likewise, you can go back to node-persist at any time, the on-disk data format is the same.\n\n## API\n\n### `const fpersist = new FPersist(persistenceDirPath, options)`\n\nCreate an instance of FPersist and retrieve/store data from/to the provided directory path. If the path doesn't exist, it will be created. It is safe to instantiate multiple instances of FPersist with the same persistenceDirPath **within the same process**. Ideally, you shouldn't let anything except FPersist use this directory.\n\nThe options are:\n```js\n{\n  stringify: JSON.stringify, // The function to use to stringify data before storing it to disk.\n  allowUndefinedEdits: false, // If false, returning undefined from an editFunction will throw. This is to protect you from accidentally destroying data when you forget to return a value from an editFunction.\n}\n```\n\n### `await fpersist.clear()`\n\nClear persistence and start afresh. This deletes ALL files in the persistence directory, including files not created by FPersist.\n\n### `await fpersist.getItem(key, defaultValue=undefined)`\n\nGet the value associated with the given key. If the key doesn't exist in the database, the optional defaultValue will be returned (undefined by default).\n\n```js\nconst counter = await fpersist.getItem('counter', 0);\n```\n\n### `await fpersist.editItem(key, editFunction, defaultValue=undefined)`\n\nUpdate the value associated with the given key. Your editFunction should take the current value as an argument and return the updated value. If the key is not present in the database, the defaultValue will be passed to your editFunction. Your editFunction can be async. Edits are queued and won't conflict, as demonstrated in the **Motivation** section.\n\n```js\nawait fpersist.editItem(\n  'scores',\n  (scores) => {\n    scores.johnDoe = scores.johnDoe || 0;\n    scores.johnDoe += 1;\n    return scores;\n  },\n  {},\n);\n```\n\n### `await fpersist.close()`\n\nTell the fpersist instance to finish queued edits and refuse to accept any more edits. Reads can still be safely performed after calling this method. Edits will throw. The promise returned by this method will be fulfilled when all pending edits have been performed. If you are going to exit the process, you should await this method first to make sure that all pending edits are finished.\n\n## Motivation\n\nFPersist is inspired by [node-persist](https://www.npmjs.com/package/node-persist) which I am moving away from due to its lack of support for multiple-readers/single-writer locking (the absense of which can potentially lead to database corruption) and functional edits (the absence of which can potentially lead to lost information). This library is meant to improve on that while maintaining a very similar (but presently more limited) interface.\n\nConsider the following code using node-persist:\n\n```js\nconst nodePersist = require('node-persist');\n\nasync function incrementDbValue() {\n  const currentValue = (await nodePersist.getItem('counter')) || 0;\n  await nodePersist.setItem('counter', currentValue + 1);\n}\n\nasync function start() {\n  await nodePersist.init();\n  await nodePersist.clear();\n\n  const promises = [];\n  for (let i = 0; i < 100; i += 1) {\n    promises.push(incrementDbValue());\n  }\n\n  await Promise.all(promises);\n  const finalValue = await nodePersist.getItem('counter');\n\n  console.log(`Expected 100, got ${finalValue}`);\n}\n\nstart();\n```\n\nWhat I want to happen is that every call to incrementDbValue increments the value in the database by one, so the value in the database should be equal to the number of times the function has been called (100). However, that doesn't happen, the final value is equal to 1 (and technically could be some other indeterminable number less than or equal to 100). What happens is that node-persist reads 0 from storage a hundred times, then increments that 0 to 1 a hundred times, and then stores the 1 a hundred times.\n\nThe following code using FPersist's functional edits does not exhibit this problematic behavior. The final value is 100.\n\n```js\nconst FPersist = require('fpersist');\nconst path = require('path');\nconst fpersist = new FPersist(path.join(__dirname, 'fpersist'));\n\nfunction incrementDbValue() {\n  return fpersist.editItem('counter', currentValue => {\n    return (currentValue || 0) + 1;\n  });\n}\n\nasync function start() {\n  await fpersist.clear();\n\n  const promises = [];\n  for (let i = 0; i < 100; i += 1) {\n    promises.push(incrementDbValue());\n  }\n\n  await Promise.all(promises);\n  const finalValue = await fpersist.getItem('counter');\n\n  console.log(`Expected 100, got ${finalValue}`);\n}\n\nstart();\n```\n\n## About\n\nIf you find a bug or want to suggest additions (synchronous methods, etc), please feel free to open an issue on the Github repo.\n","_attachments":{},"homepage":"https://github.com/mistval/fpersist#readme","bugs":{"url":"https://github.com/mistval/fpersist/issues"},"license":"MIT"}