{"_id":"@braine/statemanagement","_rev":"2-8feeca1e0008ffeb691aa0464d7e81e1","name":"@braine/statemanagement","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@braine/statemanagement","version":"1.0.0","keywords":["react","state","management","proxy","store","async","query"],"author":{"name":"Antigravity"},"license":"MIT","_id":"@braine/statemanagement@1.0.0","maintainers":[{"name":"braine","email":"piyas.braine@gmail.com"}],"dist":{"shasum":"0179325e27587d05106beb7760095a002db509d8","tarball":"https://registry.npmjs.org/@braine/statemanagement/-/statemanagement-1.0.0.tgz","fileCount":6,"integrity":"sha512-mSx0chcNKeTDzARwwE/EJFY0v2dEYsKuGMfrub686ofAv3LmSM8kp9bq5B0xQWglhsP+0fVzrDpvtNlCSyio4w==","signatures":[{"sig":"MEQCIHrulMBQaN0sWYEZMVOO6jxCUsuVOZTEym+A8Z7NLPwzAiACslcV7l6DJGyyB3LJjNdtpXcSaDCXnqaRbidBrV/obA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148117},"main":"index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"vite","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"braine","email":"piyas.braine@gmail.com"},"_npmVersion":"10.5.2","description":"A high-performance, proxy-based state management library with built-in async handling.","directories":{},"_nodeVersion":"20.13.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vite":"^7.3.0","react":"^19.2.3","vitest":"^4.0.16","happy-dom":"^20.0.11","react-dom":"^19.2.3","typescript":"^5.9.3","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.2"},"_npmOperationalInternal":{"tmp":"tmp/statemanagement_1.0.0_1766668354846_0.27063163163763937","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@braine/statemanagement","version":"1.1.0","type":"module","main":"index.js","scripts":{"dev":"vite","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"keywords":["react","state","management","proxy","store","async","query"],"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"types":"./dist/index.d.ts","author":{"name":"Antigravity"},"license":"MIT","description":"A high-performance, proxy-based state management library with built-in async handling.","devDependencies":{"@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.1","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.2","happy-dom":"^20.0.11","react":"^19.2.3","react-dom":"^19.2.3","tsup":"^8.5.1","typescript":"^5.9.3","vite":"^7.3.0","vitest":"^4.0.16"},"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","_id":"@braine/statemanagement@1.1.0","_nodeVersion":"20.13.1","_npmVersion":"10.5.2","dist":{"integrity":"sha512-/8HHGH4pJ/gETt2RvioP9iTSD1JIBm7H5wHDUmhdaXddp8TVnpSlszHi186fsIb+LElMhOQmydYPLbzeL5Q82A==","shasum":"8c400496bf6b68c5fa1d6f8924c5c86333c2d6f7","tarball":"https://registry.npmjs.org/@braine/statemanagement/-/statemanagement-1.1.0.tgz","fileCount":6,"unpackedSize":151032,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDROF1ZMWplWsigX7mcIhOBJfKeuAVKYdg62pe1LMu1eQIhAN8QP779Xl6lmpvmGt+zH+2nvT0b5f+HJ1z6r0VcP/sx"}]},"_npmUser":{"name":"braine","email":"piyas.braine@gmail.com"},"directories":{},"maintainers":[{"name":"braine","email":"piyas.braine@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/statemanagement_1.1.0_1766669570511_0.07430377084713591"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-25T13:12:34.772Z","modified":"2025-12-25T13:32:50.908Z","1.0.0":"2025-12-25T13:12:35.042Z","1.1.0":"2025-12-25T13:32:50.684Z"},"author":{"name":"Antigravity"},"license":"MIT","keywords":["react","state","management","proxy","store","async","query"],"description":"A high-performance, proxy-based state management library with built-in async handling.","maintainers":[{"name":"braine","email":"piyas.braine@gmail.com"}],"readme":"# @braine/statemanagement\n\n**The \"God Particle\" of State Management.**  \n> A unified architecture that merges Store, Actions, and API Logic into single, high-performance \"Smart Models\".\n\n[![npm version](https://img.shields.io/npm/v/@braine/statemanagement.svg)](https://www.npmjs.com/package/@braine/statemanagement)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Why This Exists?\nExisting libraries force you to split your brain:\n*   **Redux/Zustand**: Great for Client state, bad for Server state.\n*   **React Query**: Great for Server state, explicitly ignores Client state.\n\n**We solved this.** \nWith `defineModel`, you define **Smart Models** that own both their data (server + client) and their logic (optimistic updates, fetching).\n\n## Installation\n\n```bash\nnpm install @braine/statemanagement\n# or\nyarn add @braine/statemanagement\n```\n\n## The \"Smart Model\" Pattern\n\nThis is all you need to know. One function: `defineModel`.\n\n### 1. Define It\n```typescript\nimport { defineModel } from '@braine/statemanagement';\n\nexport const Todos = defineModel({\n  // 1. Unified State (Server + Client mixed!)\n  state: {\n    items: [] as string[],\n    filter: 'all',\n    isLoading: false\n  },\n\n  // 2. Computed Properties (Auto-Memoized)\n  computed: {\n    activeCount() {\n      return this.items.length;\n    },\n    isEmpty() {\n      return this.items.length === 0;\n    }\n  },\n\n  // 3. Actions (Sync + Async + Optimistic)\n  // 'this' is automatically bound to the reactive proxy.\n  actions: {\n    setFilter(filter: string) {\n      this.filter = filter;\n    },\n\n    async add(text: string) {\n      // A. Optimistic Update (Instant UI)\n      this.items.push(text);\n      \n      try {\n        // B. Network Call\n        await fetch('/api/todos', { method: 'POST', body: text });\n      } catch (err) {\n        // C. Auto-Rollback (Manual for now, easy to do)\n        this.items.pop();\n        alert('Failed to save!');\n      }\n    }\n  }\n});\n```\n\n### 2. Use It\nNo selectors. No context. No providers. Just use it.\n\n```tsx\nimport { useStore } from '@braine/statemanagement';\nimport { Todos } from './models/Todos';\n\nfunction TodoApp() {\n  const model = useStore(Todos); // Auto-subscribes to properties you access\n\n  if (model.isEmpty) return <div>No tasks!</div>;\n\n  return (\n    <div>\n      <h1>Active: {model.activeCount}</h1>\n      <button onClick={() => model.add(\"New Task\")}>\n        Add Task\n      </button>\n    </div>\n  );\n}\n```\n\n## Comparison\n\n| Feature | Redux Toolkit | TanStack Query | **@braine/statemanagement** |\n| :--- | :--- | :--- | :--- |\n| **Philosophy** | Reducers + Thunks | Server Cache Only | **Unified Smart Models** |\n| **Boilerplate** | High (Slices, Types) | Medium (Keys, Fetchers) | **Zero** |\n| **Client State** | Yes | No (Need Zustand) | **Yes (Integrated)** |\n| **Optimistic UI**| Complex (`onQueryStarted`) | Complex (`onMutate`) | **Simple (`this.push`)** |\n| **Performance** | Good | Excellent | **Excellent (Proxy)** |\n\n## Advanced Features\n\n### Direct Promise Binding\nIf you don't want a full model, you can still use the raw proxy power:\n```typescript\nimport { createState } from '@braine/statemanagement';\n\n// Assign a promise, and the UI suspends automatically!\nconst store = createState({\n  data: fetch('/api/data').then(r => r.json())\n});\n```\n\n### DevTools\nFull Redux DevTools support is built-in.\n```typescript\nimport { enableDevTools } from '@braine/statemanagement';\nenableDevTools(Todos, 'TodoModel');\n```\n\n## License\nMIT\n","readmeFilename":"README.md"}