{"_id":"stimulus-store","_rev":"7-6c53ca7bdfcfc7a5ea70a8dd748c90d5","name":"stimulus-store","description":"Lightweight state management for Stimulus.js","dist-tags":{"beta":"0.0.1-beta.1","latest":"0.0.3"},"versions":{"0.0.1-beta":{"name":"stimulus-store","version":"0.0.1-beta","keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"license":"MIT","_id":"stimulus-store@0.0.1-beta","maintainers":[{"name":"omarluq","email":"omaralanii@outlook.com"}],"contributors":[{"name":"Tomas Caraccia"}],"homepage":"https://github.com/omarluq/stimulus-store#readme","bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"dist":{"shasum":"52a4defe1da38429582a06084ef6546ad0a432ad","tarball":"https://registry.npmjs.org/stimulus-store/-/stimulus-store-0.0.1-beta.tgz","fileCount":24,"integrity":"sha512-1zL/1Y136cn2qCpkPXUMzKZcNlgNt6fIKxw4aNQ+B0AccSKeMUqxYn4GIqnGOFJ+pmJ8w5aE9mFkNeQEZcjoaQ==","signatures":[{"sig":"MEUCIEKTQ3j+02hSZjlVvZXKauGVX6slrr/h3amTNA2HxaFnAiEA9K+IKVMX0znJvTcELI7a1jTwscSv8TMiY2pFNdT0La8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26865},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"dist/index.d.ts","gitHead":"25d2dc2dfe195a747024a1dfd4a4d6c18408290b","private":false,"scripts":{"lint":"eslint .","test":"jest --reporters default jest-stare","build":"rollup -c --bundleConfigAsCjs","lint:fix":"eslint . --fix","changelog":"git-chglog -o CHANGELOG.md","code-size":"npx size-limit","gzip-size":"gzip-size ./dist/index.js","husky:prepare":"husky install","prettier:check":"prettier --check .","prettier:write":"prettier --write ."},"_npmUser":{"name":"omarluq","email":"omaralanii@outlook.com"},"jest-stare":{"resultDir":".jest-stare"},"repository":{"url":"git+https://github.com/omarluq/stimulus-store.git","type":"git"},"size-limit":[{"path":"./dist/index.js"}],"_npmVersion":"9.6.4","description":"Lightweight state management for Stimulus.js","directories":{},"_nodeVersion":"20.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^8.0.3","eslint":"^8.54.0","rollup":"^4.5.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","gzip-size":"^7.0.0","jest-stare":"^2.5.1","size-limit":"^11.0.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@commitlint/cli":"^18.4.3","@hotwired/stimulus":"^3.2.2","rollup-plugin-sizes":"^1.0.6","@rollup/plugin-terser":"^0.4.4","rollup-plugin-analyzer":"^4.0.0","rollup-plugin-commonjs":"^10.1.0","@typescript-eslint/parser":"^6.12.0","rollup-plugin-typescript2":"^0.36.0","rollup-plugin-node-resolve":"^5.2.0","@size-limit/preset-small-lib":"^11.0.0","@commitlint/config-conventional":"^18.4.3","@typescript-eslint/eslint-plugin":"^6.12.0"},"_npmOperationalInternal":{"tmp":"tmp/stimulus-store_0.0.1-beta_1700967330286_0.0542640326406465","host":"s3://npm-registry-packages"}},"0.0.1-beta.1":{"name":"stimulus-store","version":"0.0.1-beta.1","keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"license":"MIT","_id":"stimulus-store@0.0.1-beta.1","maintainers":[{"name":"omarluq","email":"omaralanii@outlook.com"}],"contributors":[{"name":"Tomas Caraccia","email":"tomascaraccia@gmail.com"}],"homepage":"https://github.com/omarluq/stimulus-store#readme","bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"dist":{"shasum":"a4520555b52e73ce83d71bef80e1d38e0b039467","tarball":"https://registry.npmjs.org/stimulus-store/-/stimulus-store-0.0.1-beta.1.tgz","fileCount":29,"integrity":"sha512-RhYsV8jGCegLLpxBKRQG/6oCp5IDCzLnQzwUQfO/camqN1cZe6ySJYzOSimXi269B5ywSeTGSBvDwDmoqu6/8g==","signatures":[{"sig":"MEYCIQC8H8wAPIC1pReHLX9i7/YN52wtoR//Hl7XAlFrcw5l4gIhANQ6snD3WRght3G8j7LWC7iqyFxodK0jrpabvdRwh0JN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79557},"main":"dist/bundle.cjs.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"dist/index.d.ts","module":"dist/bundle.esm.js","readme":"<img src=\"./public/stimulus_store_logo.png\" alt=\"Stimulus Store Logo\" width=\"100\"/> \n\n[![All Contributors](https://img.shields.io/github/all-contributors/omarluq/stimulus-store?color=blue&style=plastic)](#contributors)\n[![GitHub package.json version](https://img.shields.io/github/package-json/v/omarluq/stimulus-store?color=blue)](https://github.com/omarluq/stimulus-store)\n[![npm version](https://badge.fury.io/js/stimulus-store.svg)](https://badge.fury.io/js/stimulus-store)\n[![GitHub issues](https://img.shields.io/github/issues/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/issues)\n[![GitHub forks](https://img.shields.io/github/forks/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/network)\n[![GitHub stars](https://img.shields.io/github/stars/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/stargazers)\n[![GitHub watchers](https://img.shields.io/github/watchers/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/watchers)\n[![TypeScript](https://img.shields.io/badge/-TypeScript-gray?style=flat&logo=typescript)](https://github.com/omarluq/stimulus-store)\n[![Type Definitions](https://img.shields.io/npm/types/stimulus-store)](https://www.npmjs.com/package/stimulus-store)\n[![Top Language](https://img.shields.io/github/languages/top/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store)\n[![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/facebook/jest)\n[![npm downloads](https://img.shields.io/npm/dm/stimulus-store.svg)](https://www.npmjs.com/package/stimulus-store)\n[![ESLint](https://img.shields.io/badge/-ESLint-4B32C3?style=flat&logo=eslint)](https://github.com/omarluq/stimulus-store)\n[![Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n[![GitHub Actions](https://github.com/omarluq/stimulus-store/actions/workflows/test.yml/badge.svg)](https://github.com/omarluq/stimulus-store/actions)\n[![Last Commit](https://img.shields.io/github/last-commit/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/commits/main)\n[![Pull Requests](https://img.shields.io/github/issues-pr/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/pulls)\n[![Closed Pull Requests](https://img.shields.io/github/issues-pr-closed-raw/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/pulls?q=is%3Apr+is%3Aclosed)\n[![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/stimulus-store)](https://bundlephobia.com/result?p=stimulus-store)\n[![Commit Activity](https://img.shields.io/github/commit-activity/m/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/commits/main)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/omarluq/stimulus-store/graphs/commit-activity)\n[![Maintainability](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/maintainability)](https://codeclimate.com/github/omarluq/stimulus-store/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/test_coverage)](https://codeclimate.com/github/omarluq/stimulus-store/test_coverage)\n[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n[![Dependabot](https://badgen.net/github/dependabot/omarluq/stimulus-store)](https://github.com/omarluq/stimulus-store/pulls?q=is%3Apr+author%3Aapp%2Fdependabot-preview)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Made with Love](https://img.shields.io/badge/Made%20with-Love-ff69b4.svg)](https://github.com/omarluq/stimulus-store)\n\n\n# Stimulus Store\n\nStimulus Store is an ultra lightweight JavaScript library that simplifies state management in your Stimulus-powered web applications. Despite its minimal footprint, it offers a robust yet simple and intuitive way to create, manage, and share stateful data across different controllers using a unified, atomic `Store` class.\n\n## Size Metrics\n\n- **Original size**: 15.603KB\n- **Bundle size**: 14.552KB\n- **Gzipped Size**: 1.26KB\n- **Minified and Brotlied Size**: 1.04KB\n\nTo put the size of the Stimulus Store library into perspective, let's compare its size metrics with those of other popular state management libraries. Keep in mind that the comparison is based on general size metrics and may vary depending on the specific version and build of each library:\n\n- Redux: Redux is one of the most popular state management libraries for JavaScript applications, often used with React. The minified size of Redux (not including required dependencies like redux-thunk or react-redux) is around 16KB before gzip. After gzip, it's approximately 5KB. While still lightweight, Redux is significantly larger than Stimulus Store.\n\n- MobX: MobX is another popular choice for state management in JavaScript applications. The minified size of MobX is about 22KB, and its gzipped size is roughly 7KB.\n\n- Vuex (for Vue.js): Vuex is the state management library tailored for Vue.js. The minified and gzipped size of Vuex is around 3KB, which is larger than Stimulus Store but still maintains a small footprint.\n\n- Context API (React): With React's Context API and Hooks, state management can be handled without additional libraries. However, this is part of React itself, so the size comparison isn’t direct. React (including ReactDOM) is over 100KB minified and gzipped, but this includes much more than just state management.\n\n- Zustand: A smaller, simpler alternative for state management in React applications. Its size is about 7KB gzipped, which is larger than Stimulus Store but smaller compared to more feature-rich libraries like Redux or MobX.\n\nFor more detailed analysis, see [BENCHMARKS.md](BENCHMARKS.md).\n\n## Why Stimulus Store?\n\nStimulus is known for its simplicity and focus on enhancing your HTML with minimal JavaScript. However, as your application grows, you may encounter scenarios where sharing data between controllers becomes challenging. This is where Stimulus Store comes to the rescue.\n\nWith Stimulus Store, you can:\n\n- Create and manage global state with ease.\n- Share state between different controllers effortlessly using a unified, atomic `Store` class.\n- Keep your codebase clean and maintainable.\n\n## Installation\n\nYou can install Stimulus Store via npm or yarn:\n\n### npm\n\n```bash\nnpm install stimulus-store\n```\n### yarn\n\n```bash\nyarn add stimulus-store\n```\n\n## Quick Start\n\nLet's dive into a simple use case to see how Stimulus Store works. In this example, we'll create two controllers that share a common counter value using a shared Store class.\n\n\n```html\n<!-- index.html -->\n<div data-controller=\"counter\">\n  <button data-action=\"click->counter#increment\">Increment</button>\n</div>\n\n<div data-controller=\"display\">\n  <p data-display-target=\"message\">Display: <span></span></p>\n</div>\n```\n\n```js\n// controllers/stores/counter.js\nimport { createStore } from \"stimulus-store\";\n\nexport const counterStore = createStore({ name: 'counterStore', initialValue: 0, type: Number });\n```\n\n```js\n// controllers/counter_controller.js\nimport { Controller } from \"stimulus\";\nimport { useStore } from \"stimulus-store\"\nimport { counterStore } from \"./stores/counter\";\n\nexport default class extends Controller {\n  static stores = [counterStore];\n\n  connect() {\n    useStore(this)\n  }\n\n  increment() {\n    this.setCounterStoreValue(this.counterStoreValue + 1);\n  }\n\n  decrement() {\n    // set will also receive a callback\n    // and will only notify on condition\n    this.setCounterStoreValue((value) => value - 1, { filter: (value) => value === 0 })\n  }\n}\n```\n\n```js\n// controllers/display_controller.js\nimport { Controller } from \"stimulus\";\nimport { useStore } from \"stimulus-store\"\nimport { counterStore } from \"./stores/counter\"; // Import the counterStore\n\nexport default class extends Controller {\n  static targets = [\"message\"];\n  static stores = [counterStore];\n\n  connect() {\n    useStore(this)\n  }\n\n  onCounterStoreUpdate() {\n    this.messageTarget.textContent = `Display: ${this.counterStoreValue}`;\n  }\n}\n```\n\nIn this example, we've created two controllers: `counter_controller.js` and `display_controller.js`. Both controllers share a common store defined in `controllers/stores/counter.js` to manage the counter value, allowing them to communicate seamlessly.\n\n## `createStore`\n\nThe `createStore` function is used to create a new store. A store is an atomic class where you can keep state that needs to be shared across different parts of your application. \n\nWhen you call `createStore`, you pass in an object with the following required properties:\n\n- `name`: A unique name for the store.\n- `initialValue`: The initial value for the store's state.\n- `type`: The type of the store's state. This can be `Number`, `String`, `Array`, `Object`, `Boolean`.\n\n\n```javascript\nimport { createStore } from 'stimulus-store';\n\nconst counterStore = createStore({\n  name: 'counterStore',\n  initialValue: 0,\n  type: Number\n});\n```\n\n## `useStore`\n\nIn the Stimulus controller, the `static stores` array is used to specify which stores this controller should subscribe to. Each item in the array should be a store that was created using `createStore`.\n\nWhen you call `useStore(this)` in the `connect` method, the `useStore` hook will subscribe the controller to all the stores specified in the `static stores` array. This means that the controller will be able to access and modify the state in these stores, and it will be notified when the state in these stores changes.\n\n```js\nimport { Controller } from 'stimulus';\nimport { useStore } from 'stimulus-store';\nimport { counterStore } from './stores/counter';\n\nexport default class extends Controller {\n  static stores = [counterStore]\n\n  connect() {\n    useStore(this);\n  }\n}\n```\n\nThe `useStore` hook provides several helpers that you can use to interact with the store:\n- `this.<storeName>Value`: This property gives you the current value of the store's state.\n- `this.set<StoreName>Value`: This function allows you to update the store's state. You can pass in a new value directly, Additionally, You can pass a callback function or a Promise that resolves to the new value. You can also pass in an options object with a filter function. This function takes the new value of the store and returns a boolean indicating whether or not to notify the controller of the change.\n\n- `on<StoreName>Update`: This function is called whenever the store's state changes. You can override this function in your controller to react to state changes.\n```js\nimport { Controller } from 'stimulus';\nimport { useStore } from 'stimulus-store';\nimport { counterStore } from './stores/counter';\n\nexport default class extends Controller {\n  static stores = [counterStore]\n\n  connect() {\n    useStore(this);\n  }\n\n  increment() {\n    this.setCounterStoreValue(this.counterStoreValue + 1);\n  }\n\n  decrement() {\n    this.setCounterStoreValue((value) => value - 1, { filter: (value) => value === 0 })\n  }\n\n  onCounterStoreUpdate() {\n    console.log('Counter store updated:', this.counterStoreValue);\n  }\n}\n```\n<sub>Note that while you can technically access `this.<storeName>` inside the controller or `Controller.<storeName>`, this is highly discouraged and will trigger a warning. Stores are considered an atomic unit and an implementation detail. The controller should not make direct calls to it. Instead, use the provided helpers `this.<storeName>Value`, `this.set<StoreName>Value` and `on<storeName>Update` to interact with the store's state.</sub>\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/tcarac\"><img src=\"https://avatars.githubusercontent.com/u/64477810?v=4?s=100\" width=\"100px;\" alt=\"Tomas Caraccia\"/><br /><sub><b>Tomas Caraccia</b></sub></a><br /><a href=\"https://github.com/omarluq/stimulus-store/commits?author=tcarac\" title=\"Code\">💻</a> <a href=\"https://github.com/omarluq/stimulus-store/commits?author=tcarac\" title=\"Tests\">⚠️</a> <a href=\"https://github.com/omarluq/stimulus-store/commits?author=tcarac\" title=\"Documentation\">📖</a> <a href=\"#maintenance-tcarac\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/omarluq/stimulus-store/pulls?q=is%3Apr+reviewed-by%3Atcarac\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#question-tcarac\" title=\"Answering Questions\">💬</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://omarluq.github.io/portfolio/\"><img src=\"https://avatars.githubusercontent.com/u/84993125?v=4?s=100\" width=\"100px;\" alt=\"Omar Luq \"/><br /><sub><b>Omar Luq </b></sub></a><br /><a href=\"https://github.com/omarluq/stimulus-store/commits?author=omarluq\" title=\"Code\">💻</a> <a href=\"https://github.com/omarluq/stimulus-store/commits?author=omarluq\" title=\"Tests\">⚠️</a> <a href=\"https://github.com/omarluq/stimulus-store/commits?author=omarluq\" title=\"Documentation\">📖</a> <a href=\"#maintenance-omarluq\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/omarluq/stimulus-store/pulls?q=is%3Apr+reviewed-by%3Aomarluq\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#question-omarluq\" title=\"Answering Questions\">💬</a></td>\n    </tr>\n  </tbody>\n  <tfoot>\n    <tr>\n      <td align=\"center\" size=\"13px\" colspan=\"7\">\n        <img src=\"https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg\">\n          <a href=\"https://all-contributors.js.org/docs/en/bot/usage\">Add your contributions</a>\n        </img>\n      </td>\n    </tr>\n  </tfoot>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.\n","gitHead":"9695afbb870215456bace6eacfb12e88ad3d8f0d","private":false,"scripts":{"lint":"eslint .","test":"jest --reporters default jest-stare","build":"rollup -c --bundleConfigAsCjs","lint:fix":"eslint . --fix","changelog":"git-chglog -o CHANGELOG.md","code-size":"npx size-limit","gzip-size":"yarn run gzip-size:cjs && yarn run gzip-size:esm","gzip-size:cjs":"gzip-size ./dist/bundle.cjs.js | bash ./scripts/check-size.sh","gzip-size:esm":"gzip-size ./dist/bundle.esm.js | bash ./scripts/check-size.sh","husky:prepare":"husky install","prettier:check":"prettier --check .","prettier:write":"prettier --write ."},"_npmUser":{"name":"omarluq","email":"omaralanii@outlook.com"},"jest-stare":{"resultDir":".jest-stare"},"repository":{"url":"git+https://github.com/omarluq/stimulus-store.git","type":"git"},"size-limit":[{"path":"./dist/bundle.cjs.js","limit":"1.09 KB"},{"path":"./dist/bundle.esm.js","limit":"1.04 KB"}],"_npmVersion":"9.6.4","description":"Lightweight state management for Stimulus.js","directories":{},"_nodeVersion":"20.1.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","husky":"^8.0.3","tslib":"^2.6.2","eslint":"^8.54.0","rollup":"^4.5.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","gzip-size":"^7.0.0","jest-stare":"^2.5.1","size-limit":"^11.0.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@commitlint/cli":"^18.4.3","@hotwired/stimulus":"^3.2.2","rollup-plugin-copy":"^3.5.0","rollup-plugin-sizes":"^1.0.6","all-contributors-cli":"^6.26.1","@rollup/plugin-terser":"^0.4.4","rollup-plugin-analyzer":"^4.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.12.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.0","@commitlint/config-conventional":"^18.4.3","@typescript-eslint/eslint-plugin":"^6.12.0"},"_npmOperationalInternal":{"tmp":"tmp/stimulus-store_0.0.1-beta.1_1701136794323_0.4221437227981577","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"stimulus-store","version":"0.0.1","keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"license":"MIT","_id":"stimulus-store@0.0.1","maintainers":[{"name":"omarluq","email":"omaralanii@outlook.com"}],"contributors":[{"name":"Tomas Caraccia","email":"tomascaraccia@gmail.com"}],"homepage":"https://github.com/omarluq/stimulus-store#readme","bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"dist":{"shasum":"b7b1840f611b3b305fa14d910736d298809e9677","tarball":"https://registry.npmjs.org/stimulus-store/-/stimulus-store-0.0.1.tgz","fileCount":31,"integrity":"sha512-okOWaYC6yEukgT6s/pE9vUgMUQzxPZ09JqBCWVBpDv3TygGBObMy2+EXuI2Ot8IUnsKPmGjSvcx4660Mwu7IZg==","signatures":[{"sig":"MEUCIE4JOYyno40LkT25n6AbQSIkYuN+X7cOBO9EfKLOFUfmAiEAyqkmYP2fV6pKlJGQPrc40+klSIML4qLskbCTaMCNXV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100579},"main":"dist/bundle.cjs.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"dist/index.d.ts","module":"dist/bundle.esm.js","gitHead":"51468fb8f31f1e1ae695738eddc7561cf13d7c06","scripts":{"docs":"docsify serve docs","lint":"biome lint .","test":"jest --reporters default jest-stare","build":"rollup -c --bundleConfigAsCjs","lint:fix":"biome check --apply .","changelog":"git-chglog -o docs/CHANGELOG.md","code-size":"npx size-limit","format:check":"biome format .","format:write":"biome format --write .","husky:prepare":"husky install","lint:fix:unsafe":"biome check --apply-unsafe ."},"_npmUser":{"name":"omarluq","email":"omaralanii@outlook.com"},"jest-stare":{"resultDir":"docs/jest-stare","reportTitle":"Stimulus Store","coverageLink":"./coverage/lcov-report/index.html","reportSummary":true,"reportHeadline":"Stimulus Store Test Report","additionalResultsProcessors":["jest-junit"]},"repository":{"url":"git+https://github.com/omarluq/stimulus-store.git","type":"git"},"size-limit":[{"path":"./dist/bundle.cjs.js","limit":"1.2 KB"},{"path":"./dist/bundle.esm.js","limit":"1.2 KB"}],"_npmVersion":"9.6.4","description":"Lightweight state management for Stimulus.js","directories":{},"_nodeVersion":"20.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.0.7","tslib":"^2.6.2","rollup":"^4.5.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","jest-junit":"^16.0.0","jest-stare":"^2.5.1","size-limit":"^11.0.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@types/node":"^20.10.0","@biomejs/biome":"1.5.3","@commitlint/cli":"^18.4.3","@hotwired/stimulus":"^3.2.2","rollup-plugin-copy":"^3.5.0","rollup-plugin-sizes":"^1.0.6","all-contributors-cli":"^6.26.1","@rollup/plugin-terser":"^0.4.4","rollup-plugin-analyzer":"^4.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.0","@commitlint/config-conventional":"^18.4.3"},"_npmOperationalInternal":{"tmp":"tmp/stimulus-store_0.0.1_1706662967262_0.7235949638152153","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"stimulus-store","version":"0.0.2","keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"license":"MIT","_id":"stimulus-store@0.0.2","maintainers":[{"name":"omarluq","email":"omaralanii@outlook.com"}],"contributors":[{"name":"Tomas Caraccia","email":"tomascaraccia@gmail.com"}],"homepage":"https://github.com/omarluq/stimulus-store#readme","bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"dist":{"shasum":"288e2b9103de584ba582d2f0de33e10a0b332bed","tarball":"https://registry.npmjs.org/stimulus-store/-/stimulus-store-0.0.2.tgz","fileCount":28,"integrity":"sha512-SXZAXBaZbPT8P2TknGYXUmdQpBX96mkYt8AwdPCpmmwdt8ZTXB8eGX2DCq34oqsuCIRUIjOA9RyJ/wtFI4vRzg==","signatures":[{"sig":"MEYCIQCyJ+kYVTB0yatM0BNeJ3cybtubCThZJ00/GqamfjwZ1gIhAPkSHmS0pxECFay6ZvK2BvB9dFnKETbqre3hgI1Dfi48","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74027},"main":"dist/bundle.cjs.js","_from":"file:stimulus-store-0.0.2.tgz","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"dist/index.d.ts","module":"dist/bundle.esm.js","scripts":{"docs":"docsify serve docs","lint":"biome lint .","test":"jest --reporters default jest-stare","build":"rollup -c --bundleConfigAsCjs","lint:fix":"biome check --apply .","changelog":"git-chglog -o docs/CHANGELOG.md","code-size":"npx size-limit","format:check":"biome format .","format:write":"biome format --write .","husky:prepare":"husky install","lint:fix:unsafe":"biome check --apply-unsafe ."},"_npmUser":{"name":"omarluq","email":"omaralanii@outlook.com"},"_resolved":"/private/var/folders/xh/n1qqgmbd1hnby0t82m6yyc1h0000gp/T/0b6551658e2d4a2a6ef00d44c1aae784/stimulus-store-0.0.2.tgz","_integrity":"sha512-SXZAXBaZbPT8P2TknGYXUmdQpBX96mkYt8AwdPCpmmwdt8ZTXB8eGX2DCq34oqsuCIRUIjOA9RyJ/wtFI4vRzg==","jest-stare":{"resultDir":"docs/jest-stare","reportTitle":"Stimulus Store","coverageLink":"./coverage/lcov-report/index.html","reportSummary":true,"reportHeadline":"Stimulus Store Test Report","additionalResultsProcessors":["jest-junit"]},"repository":{"url":"git+https://github.com/omarluq/stimulus-store.git","type":"git"},"size-limit":[{"path":"./dist/bundle.cjs.js","limit":"1.2 KB"},{"path":"./dist/bundle.esm.js","limit":"1.2 KB"}],"_npmVersion":"9.6.4","description":"Lightweight state management for Stimulus.js","directories":{},"_nodeVersion":"20.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.0.7","tslib":"^2.6.2","rollup":"^4.5.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","jest-junit":"^16.0.0","jest-stare":"^2.5.1","size-limit":"^11.0.0","typescript":"^5.2.2","@types/jest":"^29.5.10","@types/node":"^20.10.0","@biomejs/biome":"1.5.3","@commitlint/cli":"^18.4.3","@hotwired/stimulus":"^3.2.2","rollup-plugin-copy":"^3.5.0","rollup-plugin-sizes":"^1.0.6","all-contributors-cli":"^6.26.1","@rollup/plugin-terser":"^0.4.4","rollup-plugin-analyzer":"^4.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.0","@commitlint/config-conventional":"^18.4.3"},"_npmOperationalInternal":{"tmp":"tmp/stimulus-store_0.0.2_1706665030895_0.7564086988368686","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"stimulus-store","version":"0.0.3","description":"Lightweight state management for Stimulus.js","main":"dist/bundle.cjs.js","module":"dist/bundle.esm.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/omarluq/stimulus-store.git"},"bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"homepage":"https://github.com/omarluq/stimulus-store#readme","scripts":{"build":"rollup -c --bundleConfigAsCjs","test":"vitest run --coverage","test:ui":"vitest --ui --coverage.enabled=true","lint":"biome lint .","lint:fix":"biome check --apply .","lint:fix:unsafe":"biome check --apply-unsafe .","format:check":"biome format .","format:write":"biome format --write .","size":"size-limit","changelog":"git-chglog -o docs/CHANGELOG.md","docs":"docsify serve docs","prepack":"cp docs/README.md . && cp docs/CHANGELOG.md . && cp docs/LICENSE.md . && cp -r dist/* .","postpack":"git clean -f -d"},"keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"contributors":[{"name":"Tomas Caraccia","email":"tomascaraccia@gmail.com"}],"license":"MIT","devDependencies":{"@biomejs/biome":"1.8.3","@commitlint/cli":"^19.0.3","@commitlint/config-conventional":"^19.0.3","@hotwired/stimulus":"^3.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.5","@size-limit/preset-small-lib":"^11.0.2","@size-limit/time":"^11.0.2","@types/node":"^20.10.0","@vitest/coverage-istanbul":"^1.6.0","@vitest/ui":"^1.6.0","all-contributors-cli":"^6.26.1","lefthook":"^1.6.1","rollup":"^4.5.1","rollup-plugin-analyzer":"^4.0.0","rollup-plugin-copy":"^3.5.0","rollup-plugin-sizes":"^1.0.6","size-limit":"^11.0.0","ts-node":"^10.9.1","tslib":"^2.6.2","typescript":"^5.2.2","vitest":"1.6.0"},"size-limit":[{"path":"./dist/bundle.cjs.js","limit":"1.2 KB"},{"path":"./dist/bundle.esm.js","limit":"1.2 KB"},{"path":"./dist/bundle.umd.js","limit":"1.25 KB"}],"_id":"stimulus-store@0.0.3","gitHead":"2ab65e7636a00eaa6c62b4f8b2cbc352d51a8635","_nodeVersion":"22.4.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-SQGdf2BZpItO0g1jW1vwwA9ZRvlymoQJQe9r8pfTkZ+NsPgkXR5uO8y8Ue+tQDZa8DSAD3RZ1Io2YuDVnBygJQ==","shasum":"5914fb5b8e78264f39a40238ca0eab8ce1e6991c","tarball":"https://registry.npmjs.org/stimulus-store/-/stimulus-store-0.0.3.tgz","fileCount":31,"unpackedSize":98790,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEnBPF6leC9Ji5VOnyShfW4BCXpGTQrSRm0MQPUZgfXcAiA7RyZO2NyVbBTZgqxxq8HEuH6jSZBowDHrEAIDoAOzBA=="}]},"_npmUser":{"name":"omarluq","email":"omar.luqman@hey.com"},"directories":{},"maintainers":[{"name":"omarluq","email":"omar.luqman@hey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stimulus-store_0.0.3_1720221855693_0.7531293577328015"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-26T02:55:30.286Z","modified":"2024-07-05T23:24:15.997Z","1.0.0":"2023-11-23T02:09:20.268Z","0.0.1-beta":"2023-11-26T02:55:30.428Z","0.0.1-beta.1":"2023-11-28T01:59:54.492Z","0.0.1":"2024-01-31T01:02:47.448Z","0.0.2":"2024-01-31T01:37:11.047Z","0.0.3":"2024-07-05T23:24:15.829Z"},"maintainers":[{"name":"omarluq","email":"omar.luqman@hey.com"}],"author":{"name":"Omar Luq","email":"omaralanii@outlook.com"},"repository":{"type":"git","url":"git+https://github.com/omarluq/stimulus-store.git"},"keywords":["stimulus","store","stimulusjs","state-management","javascript","frontend","web-development","client-side","data-store","mvc","stimulus-controller"],"license":"MIT","homepage":"https://github.com/omarluq/stimulus-store#readme","bugs":{"url":"https://github.com/omarluq/stimulus-store/issues"},"readme":"ERROR: No README data found!","readmeFilename":"","contributors":[{"name":"Tomas Caraccia","email":"tomascaraccia@gmail.com"}]}