{"_id":"@code-net/react-hal-query","_rev":"6-b59566ad311b7f2338965b1f709d2a39","name":"@code-net/react-hal-query","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@code-net/react-hal-query","version":"1.0.0","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/react-hal-query@1.0.0","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"83c2d1e02f1c70959759bb063ad389e971b3ef0a","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.0.tgz","fileCount":20,"integrity":"sha512-FD8UvMtqot+3PJgDLShz5IuJfwMWyCTukZX5uuyLbl5eQZ6SxSsBiRqme0suKjRaDS3cKvkZqccJ9YOBa7ZwQA==","signatures":[{"sig":"MEYCIQCfQVTXxN9Hh6T4S10QpozK1ybTpCKXHvjThjSF2s5UdgIhALJhOrB3IALlT9pqz9tlmSIchjTCS12dVCI1Q2QphCFu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64796},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js","require":"./src/index.js"},"./next-bff":{"types":"./src/next/bff.d.ts","import":"./src/next/bff.js","require":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","import":"./src/jsonforms/schema-form.js","require":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","import":"./src/jsonforms/mui-material/index.js","require":"./src/jsonforms/mui-material/index.js"}},"gitHead":"202a2cdc3096b300a4c8186d20bd44b2189c0bdd","_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-hal-query_1.0.0_1772105051622_0.27655559113028616","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@code-net/react-hal-query","version":"1.0.1","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/react-hal-query@1.0.1","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"c9c2aa3c39f61f318a5a622591544239ad10fc15","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.1.tgz","fileCount":21,"integrity":"sha512-8ohKFzvtdrfJSaiekuGfiOh8DpKroBR45bYSTO5C+GxqEEmogGQoveR4dboY3h1jfbmJjZJ7ePGR7nXHtCT0Aw==","signatures":[{"sig":"MEYCIQDJA2lLoivqInbqgXQgnK4oMRfeIP+c0dNxqbtpF85PewIhAOcu6GKvJJbrc3Gdi1fQCDyJGpRa4Jhs3YTU1XXbUfhB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65767},"main":"./src/index.js","type":"commonjs","_from":"file:code-net-react-hal-query-1.0.1.tgz","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"},"./next/bff":{"types":"./src/next/bff.d.ts","import":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","import":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","import":"./src/jsonforms/mui-material/index.js"}},"_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"_resolved":"/tmp/774345c832ed7f31505666b29ba81b3e/code-net-react-hal-query-1.0.1.tgz","_integrity":"sha512-8ohKFzvtdrfJSaiekuGfiOh8DpKroBR45bYSTO5C+GxqEEmogGQoveR4dboY3h1jfbmJjZJ7ePGR7nXHtCT0Aw==","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-hal-query_1.0.1_1772108536816_0.66030453145829","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@code-net/react-hal-query","version":"1.0.2","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/react-hal-query@1.0.2","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"65a9a33b20fb0cfe04d8db8856a5f793ad0107ea","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.2.tgz","fileCount":21,"integrity":"sha512-OZhqpB4ts/n0GcfPoJa+mCEzGTYUDUrbsQ4MZ4RaGkAqYi+Wia15YzS7ibdy0nKOE8RXVhS8tXrRflurqbMsgA==","signatures":[{"sig":"MEQCIGzzroAysVrSUi4DFuunzV1a8qIWpifpgJjzP2wYw89bAiBdtSLQyMjEZr1jn6KM9DMCslDoVyi6xKwU50hbUszxSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63923},"main":"./src/index.js","type":"module","_from":"file:code-net-react-hal-query-1.0.2.tgz","types":"./src/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"},"./next/bff":{"types":"./src/next/bff.d.ts","import":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","import":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","import":"./src/jsonforms/mui-material/index.js"}},"_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"_resolved":"/tmp/a6d136fc75abd61b881fd1d67e2f5a9f/code-net-react-hal-query-1.0.2.tgz","_integrity":"sha512-OZhqpB4ts/n0GcfPoJa+mCEzGTYUDUrbsQ4MZ4RaGkAqYi+Wia15YzS7ibdy0nKOE8RXVhS8tXrRflurqbMsgA==","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-hal-query_1.0.2_1772109396091_0.595151485102718","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@code-net/react-hal-query","version":"1.0.3","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/react-hal-query@1.0.3","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"610abeedc707465aa84d1fa6fbcc6b09fbe2a490","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.3.tgz","fileCount":21,"integrity":"sha512-LkdMNtLrPRM1shcgPJcZ4WoBkmU1KA1Gq5U5lC1/Srpbsd8unBToEnzXGOEuljZn2YWwA5cuY7vC9WP9CdC2oQ==","signatures":[{"sig":"MEQCIAs3b8ltf9+JtpVZEe5KqbR/FYqGvoJcNZLG06ARHBLHAiB1AuZHpSkJh2qK2VOy2WP/Y4OrH62RAzM18IOYrDvbhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64799},"main":"./src/index.js","type":"module","_from":"file:code-net-react-hal-query-1.0.3.tgz","types":"./src/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"},"./next/bff":{"types":"./src/next/bff.d.ts","import":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","import":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","import":"./src/jsonforms/mui-material/index.js"}},"_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"_resolved":"/tmp/4abf51041c3731f038d68e555a641295/code-net-react-hal-query-1.0.3.tgz","_integrity":"sha512-LkdMNtLrPRM1shcgPJcZ4WoBkmU1KA1Gq5U5lC1/Srpbsd8unBToEnzXGOEuljZn2YWwA5cuY7vC9WP9CdC2oQ==","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-hal-query_1.0.3_1772534134397_0.873314954544367","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@code-net/react-hal-query","version":"1.0.4","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/react-hal-query@1.0.4","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"0598c41c9c8784bf16981dd116e62a0c1f9003e0","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.4.tgz","fileCount":21,"integrity":"sha512-fL/lSWxCLF0TU8Chbcfq5fhRQZNni8f5cZSIMErVgnxoBiFXbhAYRlYULwaxIdhlGglMdJInJ5MyoODi2/WPjg==","signatures":[{"sig":"MEYCIQCT4sPvUr3yM0JV18ht7+RTJ+UDQuBJ1rVhcLKGkU57ngIhAJwotoBeOojOQshAAdYA7IJXbdCKMNAEdBOsHWX+pMma","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65027},"main":"./src/index.js","type":"module","_from":"file:code-net-react-hal-query-1.0.4.tgz","types":"./src/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"},"./next/bff":{"types":"./src/next/bff.d.ts","import":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","import":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","import":"./src/jsonforms/mui-material/index.js"}},"_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"_resolved":"/tmp/2fb1916a18a3076bd12b830b5379bba1/code-net-react-hal-query-1.0.4.tgz","_integrity":"sha512-fL/lSWxCLF0TU8Chbcfq5fhRQZNni8f5cZSIMErVgnxoBiFXbhAYRlYULwaxIdhlGglMdJInJ5MyoODi2/WPjg==","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-hal-query_1.0.4_1772535017561_0.5367320260084472","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"_id":"@code-net/react-hal-query@1.0.5","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"c9617b8eb1e6f7db9e6015a82e75b747727a2533","tarball":"https://registry.npmjs.org/@code-net/react-hal-query/-/react-hal-query-1.0.5.tgz","fileCount":20,"integrity":"sha512-WwZKDgVdsCgAmPxUlCV/ZvQhpFhQTimX56qlxcTS5FBHBuMJLkZiyyw7+JyJqiwUUMhqnazVoNXcQiKQSEiSeg==","signatures":[{"sig":"MEYCIQCws+7u0BFrWxIoVhd+VZsoX/295Cu1UE3Q/Ujps8PtTgIhAKxKBjwgb5fxZSe3oEH2MfNLX+ITg+YKJjnR0fJ9dsgW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCcsHTv8numX0+RvTKQ3SYYnMbJAwSDZIhRvCdCHU2JIAIhAJtOAhfLnwSOdB3y20hY6JAzeJBDv+kqGF+moljhHKLn"}],"unpackedSize":63996},"main":"./src/index.js","name":"@code-net/react-hal-query","type":"module","types":"./src/index.d.ts","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./next/bff":{"types":"./src/next/bff.d.ts","default":"./src/next/bff.js"},"./jsonforms":{"types":"./src/jsonforms/schema-form.d.ts","default":"./src/jsonforms/schema-form.js"},"./jsonforms/mui-material":{"types":"./src/jsonforms/mui-material/index.d.ts","default":"./src/jsonforms/mui-material/index.js"}},"gitHead":"202a2cdc3096b300a4c8186d20bd44b2189c0bdd","version":"1.0.5","_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"11.6.2","description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","directories":{},"maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0","uri-template":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.0.0","@types/react":"^19.0.0"},"peerDependencies":{"ajv":"8.17.1","next":"^16.0.0","react":"^19","ajv-formats":"^3.0.1","@code-net/hal":"^1.1.0","@mui/material":"^7.0.0","@jsonforms/core":"^3.7.0","@jsonforms/react":"^3.7.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"next":{"optional":true},"ajv-formats":{"optional":true},"@mui/material":{"optional":true},"@jsonforms/core":{"optional":true},"@jsonforms/react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-hal-query_1.0.5_1790883260132_0.965857624057016"}}},"time":{"created":"2026-02-26T11:24:11.553Z","modified":"2026-10-01T19:34:20.487Z","1.0.0":"2026-02-26T11:24:11.768Z","1.0.1":"2026-02-26T12:22:16.958Z","1.0.2":"2026-02-26T12:36:36.273Z","1.0.3":"2026-03-03T10:35:34.524Z","1.0.4":"2026-03-03T10:50:17.700Z","1.0.5":"2026-10-01T19:34:20.242Z"},"bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"description":"React hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and ca","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"readme":"# react-hal-query\n\nReact hooks for querying HAL (Hypertext Application Language) resources using TanStack React Query (React Query). This package provides seamless integration between HAL APIs and React applications with built-in support for data fetching, mutations, and caching.\n\n## Features\n\n- 🪝 React hooks for HAL resource queries and mutations\n- ⚡ Built on TanStack React Query for powerful data management\n- 🔗 URI template support for dynamic HAL links\n- 🧵 First-class TypeScript support\n- 📦 Optional Next.js BFF (Backend-for-Frontend) integration\n- 📋 Optional JSON Forms integration with validation\n- 🎨 Material-UI support for form rendering\n\n## Installation\n\n```bash\nnpm install @code-net/react-hal-query\n# or\npnpm add @code-net/react-hal-query\n```\n\n### Peer Dependencies\n\nThis package requires the following peer dependencies:\n\n```bash\nnpm install @tanstack/react-query react @code-net/hal\n```\n\nOptional peer dependencies for specific features:\n\n```bash\n# For JSON Forms support\nnpm install @jsonforms/core @jsonforms/react ajv ajv-formats\n\n# For Material-UI form components\nnpm install @mui/material\n\n# For Next.js BFF support\nnpm install next\n```\n\n## Basic Usage\n\n### Setup Provider\n\nFirst, wrap your application with `HalClientProvider` to provide the HTTP client:\n\n```tsx\nimport { HalClientProvider } from '@code-net/react-hal-query';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient();\n\nexport function App() {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <HalClientProvider\n        client={async (url, config) => {\n          // Your custom HTTP client\n          return fetch(url, config);\n        }}\n      >\n        {/* Your app components */}\n      </HalClientProvider>\n    </QueryClientProvider>\n  );\n}\n```\n\n### Querying Resources\n\nUse `useHalResource` to fetch a single HAL resource:\n\n```tsx\nimport { useHalResource } from '@code-net/react-hal-query';\n\nexport function UserProfile({ userId }: { userId: string }) {\n  const {\n    data: user,\n    isLoading,\n    error,\n  } = useHalResource<User>({\n    href: '/api/users/{id}',\n    params: { id: userId },\n  });\n\n  if (isLoading) return <div>Loading...</div>;\n  if (error) return <div>Error: {error.message}</div>;\n\n  return <div>Name: {user?.name}</div>;\n}\n```\n\n### Querying Collections\n\nUse `useHalCollection` to fetch HAL collections:\n\n```tsx\nimport { useHalCollection } from '@code-net/react-hal-query';\n\nexport function UsersList() {\n  const {\n    items: users,\n    isLoading,\n    error,\n  } = useHalCollection<User>({\n    href: '/api/users',\n  });\n\n  if (isLoading) return <div>Loading...</div>;\n  if (error) return <div>Error: {error.message}</div>;\n\n  return (\n    <ul>\n      {users.map((user) => (\n        <li key={user.id}>{user.name}</li>\n      ))}\n    </ul>\n  );\n}\n```\n\n### Mutations\n\nUse `useHalMutation` to create, update, or delete resources:\n\n```tsx\nimport { useHalMutation } from '@code-net/react-hal-query';\nimport type { PostHalLink } from '@code-net/hal';\n\nexport function CreateUser() {\n  const createMutation = useHalMutation<User, NewUserData>({\n    mutationFn: async (link) => {\n      // Handled by hook\n    },\n    onSuccess: (newUser) => {\n      console.log('User created:', newUser);\n    },\n    invalidates: [{ href: '/api/users' }],\n  });\n\n  return (\n    <button\n      onClick={() => {\n        createMutation.mutate({\n          href: '/api/users',\n          method: 'POST',\n          body: { name: 'John Doe', email: 'john@example.com' },\n        } as PostHalLink & { body: NewUserData });\n      }}\n    >\n      Create User\n    </button>\n  );\n}\n```\n\n## API Reference\n\n### HalClientProvider\n\nProvides the HTTP client for all HAL queries.\n\n**Props:**\n\n- `client: (url: string, config: RequestInit) => Promise<Response>` - Custom HTTP client function\n- `children: ReactNode` - React components\n\n### useHalResource\n\nFetches a single HAL resource.\n\n**Options:**\n\n- `href: string` - The resource URL or URI template\n- `params?: Record<string, unknown>` - URI template parameters\n- `method?: string` - HTTP method (default: 'GET')\n- `enabled?: boolean` - Enable/disable the query\n- All TanStack React Query `UseQueryOptions` properties\n\n**Returns:**\n\n- `data: TResource` - The fetched resource\n- `isLoading: boolean` - Loading state\n- `error: Error | null` - Error if the request fails\n- `refetch: () => void` - Manual refetch function\n- All other TanStack React Query properties\n\n### useHalCollection\n\nFetches a HAL collection with items.\n\n**Options:**\n\n- `href?: string` - The collection URL\n- `params?: Record<string, unknown>` - URI template parameters\n- `method?: string` - HTTP method (default: 'GET')\n- All `useHalResource` options\n\n**Returns:**\n\n- `items: TItem[]` - Array of items\n- `_links?: unknown` - HAL links from the response\n- All `useHalResource` return properties\n\n### useHalMutation\n\nExecutes HAL mutations (POST, PUT, PATCH, DELETE).\n\n**Options:**\n\n- `invalidates?: HalQueryLink[] | (() => HalQueryLink[])` - Queries to invalidate after mutation\n- All TanStack React Query `UseMutationOptions` properties\n\n**Returns:**\n\n- All TanStack React Query mutation properties\n\n**HalQueryLink:**\n\n```typescript\ninterface HalQueryLink {\n  href: string;\n  params?: Record<string, unknown>;\n}\n```\n\n### getQueryKey\n\nGenerate cache keys for HAL resources.\n\n```typescript\nconst key = getQueryKey(\n  { href: '/api/users/{id}', params: { id: 123 } },\n  1 // optional: slice parameter\n);\n```\n\n## Next.js BFF Integration\n\n### Setup\n\n```tsx\nimport { BffApiProvider } from '@code-net/react-hal-query/next-bff';\n\nexport function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html>\n      <body>\n        <BffApiProvider\n          options={{\n            pageToApi: (href) => `/api/${href}`,\n            apiToPage: (href) => href.replace('/api/', ''),\n            apiResourceTitle: (item) => item.title || item.name,\n          }}\n        >\n          {children}\n        </BffApiProvider>\n      </body>\n    </html>\n  );\n}\n```\n\n### Hooks\n\n- `usePageResource()` - Fetch resource matching current page route\n- `useBffApi()` - Access BFF configuration\n- `useBffLinks()` - Get current page links from API\n\n## JSON Forms Integration\n\n### Basic Usage\n\n```tsx\nimport { HalSchemaForm } from '@code-net/react-hal-query/jsonforms';\n\nexport function UserForm() {\n  return (\n    <HalSchemaForm<User>\n      href=\"/api/users/schema\"\n      onSuccess={(user) => console.log('Created:', user)}\n    />\n  );\n}\n```\n\n### Material-UI Support\n\n```tsx\nimport { withMuiMaterial } from '@code-net/react-hal-query/jsonforms/mui-material';\n\n// Use Material-UI components for form rendering\nexport const MuiHalSchemaForm = withMuiMaterial(HalSchemaForm);\n```\n\n## URI Templates\n\nThis package supports URI templates (RFC 6570) for dynamic resource URLs:\n\n```tsx\n// Simple variable expansion\nuseHalResource({\n  href: '/api/users/{id}',\n  params: { id: 123 },\n});\n\n// Multiple parameters\nuseHalResource({\n  href: '/api/users/{id}/posts/{postId}',\n  params: { id: 123, postId: 456 },\n});\n```\n\n## Type Safety\n\nThe package is fully typed with TypeScript:\n\n```tsx\ninterface User {\n  id: string;\n  name: string;\n  email: string;\n}\n\n// Type-safe resource fetching\nconst { data: user } = useHalResource<User>({\n  href: '/api/users/{id}',\n  params: { id: 'user-123' },\n});\n\n// user is typed as User\nuser?.name; // ✓ TypeScript knows this property exists\nuser?.invalid; // ✗ TypeScript error\n```\n\n## Caching and Invalidation\n\nQueries are automatically cached based on their URL and parameters. Invalidate caches after mutations:\n\n```tsx\nconst mutation = useHalMutation({\n  invalidates: [\n    { href: '/api/users' },\n    { href: '/api/users/{id}', params: { id: userId } },\n  ],\n  onSuccess: () => {\n    // Caches for these URLs will be refetched\n  },\n});\n```\n\nOr use dynamic invalidation:\n\n```tsx\nconst mutation = useHalMutation({\n  invalidates: () => [{ href: `/api/users/${userId}` }`\n\nOr use dynamic invalidation:\n\n```tsx\nconst mutation = useHalMutation({\n  invalidates: () => [\n    { href: `/api/users/${userId}` },\n  ],\n});\n```\n\n## License\n\nSee LICENSE in repository root.\n\n## Author\n\nBartosz Pasinski (<https://dev.pasi.pl>)\n","readmeFilename":"README.md"}