{"_id":"@allnulled/universal-store","_rev":"3-af1076bfe709f43cbf83e4daa765952b","name":"@allnulled/universal-store","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@allnulled/universal-store","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@allnulled/universal-store@1.0.0","maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"dist":{"shasum":"9b198552aeefdca5ac808752334de23f25c86493","tarball":"https://registry.npmjs.org/@allnulled/universal-store/-/universal-store-1.0.0.tgz","fileCount":12,"integrity":"sha512-ZcG+TuiTxfFKN/oaYdRji0Mhm0fl/jOBAPsNMFMZi/Lqzk3QsS7l41w8S14nmDmme8Q2qjxfW1Kg5DUqFEaQYw==","signatures":[{"sig":"MEQCIEUZoCHSjVYpE1QSJYIOly8aSzPSKL37guGkb0L0RHlPAiBzSPytS28pobG/zeNjfdvMLNI68rT5LkMNGkuhSnmqiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53453},"main":"dist/store.unbundled.js","gitHead":"0821d528e2e68f9585f70a87e6ee4d9431976e2b","scripts":{"test":""},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"_npmVersion":"9.6.7","description":"State manager for browser and node.js.","directories":{"test":"test"},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/universal-store_1.0.0_1734344299898_0.1800144628823741","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@allnulled/universal-store","version":"1.0.1","keywords":[],"author":{"name":"allnulled"},"license":"WTFPL","_id":"@allnulled/universal-store@1.0.1","maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"dist":{"shasum":"b9f7ccd44d7fb3c02691b00e6499cca3d0ed7d74","tarball":"https://registry.npmjs.org/@allnulled/universal-store/-/universal-store-1.0.1.tgz","fileCount":12,"integrity":"sha512-OMut0lO0eYAjvDnL8WOV7WIvsDvHCN83+TUzuRdligvDZyvDgxKV0c/8gd2zDownPe5+YbE46AlHOCcsUhiC6g==","signatures":[{"sig":"MEUCICpfdBGykfN1YLYIjm4cuDj1UWPa2flJHVS/02VA0C4PAiEAwDbt+p0OK8FzdLEm75/LZQurJt5ufekT7qEZ8f8W/qM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53609},"main":"dist/store.unbundled.js","gitHead":"6bb9c78f2eb037d513aac05776707a098486a0c3","scripts":{"test":"node test/test.js","build":"node src/build.js && npm run test"},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"_npmVersion":"9.6.7","description":"State manager for browser and node.js.","directories":{"test":"test"},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/universal-store_1.0.1_1734901313153_0.37575839555250945","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@allnulled/universal-store","version":"1.0.2","keywords":[],"author":{"name":"allnulled"},"license":"WTFPL","_id":"@allnulled/universal-store@1.0.2","maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"dist":{"shasum":"c5da93b069b96e3ee767abb3cb2575ff59ea05c9","tarball":"https://registry.npmjs.org/@allnulled/universal-store/-/universal-store-1.0.2.tgz","fileCount":12,"integrity":"sha512-gi377FkL/V3Af4B+ynkBPVbotRbKNwtBaBrU2Q6NHUbb24c+ySlqeBGhxs3ZxZ77QWJ3E7DNtanECTx3TSvgag==","signatures":[{"sig":"MEUCIQDvbZdXP6CF+02/GX4Be7U09FhqXl0kVfrqNpKXINYkjwIgGRTriHrzi2UfH3NiC5CkX3LxqisuVHF6a9jOdG+rVUw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53675},"main":"dist/store.unbundled.js","gitHead":"3bdc8601c600d2f4a93a36094882317e39b75d45","scripts":{"test":"node test/test.js","build":"node src/build.js && npm run test"},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"_npmVersion":"9.6.7","description":"State manager for browser and node.js.","directories":{"test":"test"},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/universal-store_1.0.2_1734901448587_0.04733763741655639","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@allnulled/universal-store","version":"1.0.3","description":"State manager for browser and node.js.","main":"dist/store.unbundled.js","directories":{"test":"test"},"scripts":{"build":"node src/build.js && npm run test","test":"node test/test.js"},"keywords":["state","manager","store"],"author":{"name":"allnulled"},"license":"WTFPL","gitHead":"95659c6bbdf33f9feab183718d0f28dde963b450","_id":"@allnulled/universal-store@1.0.3","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-lJaCESDE1LiIbu9q+TiiMWC18o48WXAkivlToTkl8AbPPmJYPRcNWLt0Vhntev5OJu5g0s7wp35R+ccc9itfYA==","shasum":"0adc73c31971b156a0da33de4279b8292a3008cf","tarball":"https://registry.npmjs.org/@allnulled/universal-store/-/universal-store-1.0.3.tgz","fileCount":12,"unpackedSize":53857,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0B/kvBsPld0pN39Lxc68n8gpEN4BqHU7ZcYxJL981NwIhAPdWjM6k4b7uHJ2LsuwcAJndPKIbEpeiOrBi3kUB3O7J"}]},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/universal-store_1.0.3_1734901819898_0.6062461667620513"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-16T10:18:19.799Z","modified":"2024-12-22T21:10:20.265Z","1.0.0":"2024-12-16T10:18:20.035Z","1.0.1":"2024-12-22T21:01:53.345Z","1.0.2":"2024-12-22T21:04:08.800Z","1.0.3":"2024-12-22T21:10:20.098Z"},"author":{"name":"allnulled"},"license":"WTFPL","keywords":["state","manager","store"],"description":"State manager for browser and node.js.","maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"readme":"# universal-store\n\nGestor de estado para navegador y node.js.\n\n## Instalación\n\n### Descargar la librería\n\n```\nnpm install -s @allnulled/universal-store\n```\n\n### Importar la librería\n\n#### Modos de importar la librería\n\nDado que usa otras librerías, y pueden quererse usar desde otros módulos o no, puedes usar el archivo:\n\n  - `store.js`: este fichero tiene todas las APIs necesarias. Incluye:\n     - [`ufs`](https://github.com/allnulled/universal-file-system) o [`universal-file-system`](https://github.com/allnulled/universal-file-system)\n  - `store.unbundled.js`: este fichero solo tiene la parte que le es propia, y sobreentiende que cargarás las otras librerías necesarias por tu propia cuenta.\n\n**NOTA:** Por defecto, se usa `store.unbundled.js`.\n\n#### En node.js\n\nPuedes usar `require` o `import` indistintamente para importar el módulo.\n\n#### En browser\n\n```html\n<script src=\"node_modules/@allnulled/universal-store/dist/store.js\"></script>\n```\n\nO alternativamente:\n\n```html\n<script src=\"node_modules/@allnulled/universal-store/dist/lib/ufs.js\"></script>\n<script src=\"node_modules/@allnulled/universal-store/dist/store.unbundled.js\"></script>\n```\n\n## API\n\n### Crear una store\n\nPara crear una store, desde node.js puedes:\n\n```js\nconst store = require(\"@allnulled/universal-store\").create();\n```\n\nSi estás en browser y no usas módulos, o si estás en node.js y no quieres usar require, puedes:\n\n```js\nconst store = UniversalStore.create();\n```\n\n### Usar una store\n\nLos métodos de la API disponibles por defecto son:\n\n```js\nstore.get(\"property/id\");\nstore.set(\"property/id\", 1);\nstore.watch(\"property/id\", function(event, property_path, value) {});\nstore.unwatch(\"property/id\", previous_function);\nstore.delete(\"property/id\");\nstore.push(\"property/id/to/array\", 1);\nstore.pop(\"property/id/to/array\");\nstore.unshift(\"property/id/to/array\", 1);\nstore.shift(\"property/id/to/array\");\nstore.add(\"property/id/to/object\", \"key\", 1);\nstore.remove(\"property/id/to/object\", \"key\");\nstore.splice(\"property/id/to/array\", 5, 10, ...[1, 1, 1]);\nstore.extend(\"property/id/to/object\", { more: \"props\" });\nstore.modify(\"property/id\", function(value) { return \"new value\"; });\nstore.hydrate(\"file_to_read_from.json\");\nstore.dehydrate(\"file_to_write_to.json\");\n```\n\nTodos son métodos síncronos y no tienen alternativa.\n\nLos métodos `hydrate` y `dehydrate` están polyfileados con la librería `ufs` o `universal-file-system`, de [allnulled](https://github.com/allnulled/universal-file-system) también. Así que puedes persistir el estado del store tanto en node.js como en el browser.\n","readmeFilename":"README.md"}