{"_id":"@pankod/refine-ui-tests","_rev":"30-98c85475db805214adf62d28f7074bdc","name":"@pankod/refine-ui-tests","dist-tags":{"next":"0.12.0","latest":"0.13.0"},"versions":{"0.2.0":{"name":"@pankod/refine-ui-tests","version":"0.2.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --dts --format esm,cjs,iife --legacy-output","build":"tsup --dts --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.2.0","@pankod/refine-core":"^3.36.0","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.2.0","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Ep9R2H0CLxwczzPq32tZ4AmaQrY4z5zHpykhmRcYVgTgnpz4FO6uuQoFfO4Hi+lKV5MLv4fuM/awQM9hAyfDDw==","shasum":"7e7df48c5ac56862fdab3b93ad86195942a124d1","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.2.0.tgz","fileCount":59,"unpackedSize":1291110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZmSk4Ycxlbi/bQOzkvjwnxB/D/ebl2zt9Kl1MksX3KAiEAw19W1WtpatfBfxI/a5nOSFaaG6VbxxgWEz5OZywwjgA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi640yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1bA//RcUnDuZ5m8jEAjneOEh+mIVvRolbK93FD8ZKPQnenfRUy6GB\r\nCEa7i6AAE/g4bjvQ8VF74gvfAZDtz6FrT2ZDsunjiKHDXbQmKAsx8yHfDNsQ\r\nIumU5xL6hheFIvSiOaGHLOkFNLqV5Y5XY09WPKe1AS1tbHWmXvI4Oyve/Q7g\r\n+u8MUTgMq1aNCVsguVI11Xg6c7ZgadkDtMlIzHjhvUwd9kAVfXBeC+0ibXEY\r\niPgkGRoldHBG5f4z/XnDtitQynXD0aECKiaLdY/znHwQbiHc2u83noY0ys/i\r\nVavTVaqVaIFoAKNU+7wTFccH462ZuxhR24CesNyrpMxa4DEvHa7klB7CY+XS\r\nPDPdMDK+wbGr0q9WXIeP5IS40/2YIdznuisFjYgeHwBy1+tXKQmQtM71Kycj\r\nnx6Rcg77SprsAr7VjvJlgY/CJmUXNHfLAokFwwszBYlNFKp9Ia+Ldr0y8EXC\r\neTet2xqCWkYhQXY3pWYJ5iVy5Di/6RN4plRpxGFrBmcS8jrBCF+zFj9R+xEx\r\nes/H7YqNliOpOxGIhU1LoSnzDGvOksgfL2n6IJ0hIA51hX0JWTN+mNf1jcRE\r\nUA4J0LQZlq+Kh/2JPGQOkj9AOfS6hT/EDb4z7G3j/wUbIYWStOstlgoYXM5W\r\nxgJ7ZQLZUGrbEqcJbGfvH9kLnpTGbxu/CCQ=\r\n=Be5m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.2.0_1659604274118_0.10381568917071093"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.3.0":{"name":"@pankod/refine-ui-tests","version":"0.3.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --dts --format esm,cjs,iife --legacy-output","build":"tsup --dts --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.3.0","@pankod/refine-core":"^3.56.2","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.3.0","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-3qnd8aMUQxSszXtz4j4KRj15NfqaGtGDMrmbKPW098IxemnhgJ6Yko2ydajbC5LTG+bT5soHmm8hd2eTk4NGDg==","shasum":"1af937abe87696f42d28ff97b2f250a061e1f58f","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.3.0.tgz","fileCount":59,"unpackedSize":1291558,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLo2LBgIF4beLkMTdLOOp2sWi/dxez/DZSaOpaxKVGmAIgUI9AHwnYZoV4g8/n48h8zboh5MReiojNKNYWiT7mrR4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi68L9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZag/+MqDS/qJ+AibDrWUR8n8AlBKhaoaYV9O43MoQKkmU3Ir5duyU\r\n8aQjF+WVbMD2flWp04QBeOiJtOWEZIOntqvJhN4Z/ovkb45sU8KefoNFxNzj\r\nrdGKVibIpAfsOXUGYB6K8bnR64J85ijTeAkhQirB6qiorDAutjQcG82X9WRg\r\nrYDqIvKRctMfQWBuWzyHFaWIC5QePMvcynCrWbuJ4VzdfUQ8I2kjdj+Fm1LO\r\nShmNO1d5O+O9/9Vl6GZXaShbMchtnePtG4kpwdVMczmqIdkaR34+65AQ8yz/\r\n119dQA1nAwWm6p1tsv2NAenQahAEf5vF3T3HGAjZFeo/9jDlCY+aUtOojvAr\r\nLDrMtye/cCbIcdizx7v1lSwUQasfsXCJnWielXHBYLPfo5KJ8BS8OrhK6iKT\r\nXHfZGGaFauEeUV17yCfuRvg8fC6uJcYXIFPezCGI9NOpu/EdBrNLqcPETNNb\r\nakL7mAZ1sCl6vBz7JuU4ZY9MXAoTD6wGL4jaIUkO9tH8oryXKDH94soy4Z8P\r\nrJzQY0WM4XoKO7ZUiSoMrGw2jk5PB78GM9HNIuCe55UZevIzO7fqp72M1W80\r\nFb2x1dPuYXRQcvfVSy25zdLuenyfXII+abj0Ab5cQhdcHVsubuMFqWpBMGHJ\r\niuwrslIgO0cENvfyjP1uaS4lVLvMYdjRtyo=\r\n=zy1Q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.3.0_1659618044803_0.016503415100793006"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.3.1":{"name":"@pankod/refine-ui-tests","version":"0.3.1","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --dts --format esm,cjs,iife --legacy-output","build":"tsup --dts --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.3.0","@pankod/refine-core":"^3.56.5","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n- Customization & Extensibility -  UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n- Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n- Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a> \n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.3.1","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-zAaJGsfG4+h0J/XPte1jFquU84IKs5eC4u+67dUZ41bc5ZsbFTu8Ja367XOMXY5UfubU3jLeeK/heBh0eo8Glw==","shasum":"f619ff7e3481e79b1bb5c52ed9b561681112ba0a","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.3.1.tgz","fileCount":59,"unpackedSize":1245337,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHg1kDiG/02jt7hn6SACXR6l20dooxp9rcokiZ2FNCiiAiBHl6gEGrBS+bZcXMbxPyOxFR8b9pb+MjW3nIprE6tbKA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7QcpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk6Q//YXyuzN/BNeJD3T91XXfFFEOJUu4xaKK+vAUcLDVfyVfW/Tmy\r\nT6HYuZzhHSj8ukABbAydx3SfRemkeGPAXSCDFsBpGE2W7S2iGH2js+tnnZwx\r\nLwL0Mht/dKyuRSmlaBiq9Vj5UUpyJ9oHdV/U0Ju19EbfJfNzu7CAVWcudyrR\r\nZb404UJwjs2uWew+xb9vj7eoai12sIu46/jdZT2h82XXmLbPQ3C4btrEKeMP\r\nYOyOmGtmg0nbck2l84gD2ZICwEfsalxSADGTdEi7F4w7mXP+1I6SK1HEHclw\r\ndEIXMwPCD+5++ZMKpi7EtaUJummV2hCOfNHGANjn5iPSFuA2F4WpxLrew9Zm\r\nsW7iTAe86UjLg8t8h8+yWMZm1iVD9zc+eyVpXAg386nmtH5UDGfIpcGLgHAk\r\nr+W/DoJqGGFT6wcB97EOgQPAWJjO3uVVRl7VbzVIDwMeg2ALnHmMD+NyIMWp\r\nOOT4qx5dA0GPaBSVUI9xmSHnRualtfVfcpZxaHr301jhWst3Uy4LIxFlk2hS\r\njkKU169iUtQHsOLxiVaWv9RMRrEkXNXmHZfIvUKMdJTioPWBK/rr4X8v3rgF\r\nwwjVehEinJpTrpyH7RxQCsq6fXAmN9oOFC/NQbVxbv4xiLH4HfKCGgHipSsV\r\nxWCzCIE06dkPhfN8w5x/doKdaTLj5O8J0Uc=\r\n=c/Yz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.3.1_1659701032692_0.006206821041268018"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.3.2":{"name":"@pankod/refine-ui-tests","version":"0.3.2","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --dts --format esm,cjs,iife --legacy-output","build":"tsup --dts --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.3.0","@pankod/refine-core":"^3.56.6","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.3.2","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-kQfHE/KhWUehB1NfoAP5M5U5iFytIHAd7ncSvgfwgll+tBAr6FmuoUFNgu4j+nhJ0zEk8JB+VWPXa/JYLkU40g==","shasum":"a8e345caea9df5077e5810348f7246da596dcf2f","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.3.2.tgz","fileCount":59,"unpackedSize":1245496,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgMMvGNmLzbl6wxoskh3YQ4kvtc0ISY+n5WMimrNEfiwIhANATdouTNaZzDBL84iuhr1L4jWiDDApLS7Ns0xlaRc60"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8KlhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJVQ//bLhGP8Fh/JXID1SKLZ2quwDAASMHhwXIAux0ghy9ViOCNO37\r\n3t9rkPYMTfoR6f4V9nOMDkJDl1xQ99JzJMk2gXqRyDut/bPEspYFcnrff3pi\r\nf42x3rw/GTy7x8S5YOSkTPK6QpXaB6tGk0dVkAWIvFxbxAW+L7jZTOCvkgr5\r\n12oVV6AMKeh5mgIqe4IfVrVM1xRNGq+im4poeg1KHlqVQqR0PDJkeJS4twHd\r\nZ/3E4JoYFld0fvtdWsiT2vx4nppA+70iVkJ+oEDeyf5ggiYgqHjpFPNhjrO9\r\nHYrWqjuQgag/tr9zu40OTpJ3k5eeQisZX8YFO3b92YSkZoNS8ANcbdiCB9y4\r\ng93insEU8+dJ5pUpWII1eOUKUkEd9VOrfQ9aIwFjJY5kyJcYDmAnL2d3KAz2\r\n5j3VFXXzPLadOzMn6bb1eEEcUWFhOhA4ssvJ281Z+oxa4R6lF7YXxhnDoLUi\r\n0CSDzyuO9w14hG8ZcGTHiaPidkOvDRFJqvuG6IiNNBoWIVZPkHs+ZwMjklO4\r\nH0HPOR5Plu5amzdSxdLbgVyu28TgRI9fXJ9xPzkRSt2X70fB000zXk9hhyUo\r\nftC2jTM8DIMVGmfhU60q8kghG+CCHPSkIDmQlzlcCtUfHxMmRUDvYuaZLObk\r\nmiZUXiWleSci99a5jbVTE51I4RCDX2eHgZU=\r\n=sHBq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.3.2_1659939168925_0.10912470389180995"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.4.0":{"name":"@pankod/refine-ui-tests","version":"0.4.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.4.0","@pankod/refine-core":"^3.66.0","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.4.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-Wn/6/Evhg+LP8/Wv7GkSLOMjBV0W+YS+tj6VaTkm5s76KTCLqNM4iB6+/5sO9r+g7lflLQP2IauQXDwe0scMWw==","shasum":"34a5b1e33adda975cea31dbbbab89de7305483ff","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.4.0.tgz","fileCount":144,"unpackedSize":1325177,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEKN8lFFQuyfua9RCmG/Ep4jEDsLEgr1wUnjmBNHuwbgIgQB4YCur/2WFU8bpkClzmii3d/Bf2KnuX5EfKl9N/wdU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF0mBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJZA//TYo/oijUfuNJaFB2SYASr2S6wSH4xlXGIjXNjYYIqQzT5qtI\r\nI5YPj3x3+WqP/d7nTC6UsbiuJ3boD0BVUlguuhJsOcbMYAzsLNUoBKzxk7sF\r\n5UvX/FlBW8HbPZlqkJJYzXa7v0HP2ZxFbMzX2GELvdvFhao8IemnMcmRScpR\r\nV+61b1DlQRGDQCd3UqCq0S8VgEP9q24aU3UNUxO8OtW4ctY/4wf5xJ9/dTTu\r\nD7CS3a7VvDlSvnazLC1MjJTOQHubDEBFuYM064v2SxThbCnSIh1/XtE5pMBx\r\n77f9ijTUPQtK8TrzWgoj1fkIoqto0bETqjJtud2hW91vig7W1s7VTQlUXfu0\r\nMguewnZDy+KzzLCpmiVp9pH8DCpFMrf8KjklvsletbOd05jllfCjbeXnoUig\r\n8jlFMu0tb9c5vmM9ahYaABH1CkxRi/ko5iagifdgPx9HLwixYZ8J6tdfE+yR\r\nAx5SDHLv6Bt2nMYuPPvofGDHHi0GMwNKSCFh5ZSuIuHNSvzcjPdy01NkblGz\r\n2fQK3j6xZD/blCZniQh6OaJHcjd2ijelnc0Txk+VfmPpV6vCTcEeKQoNLzo0\r\ndL6uL5Ozy3XwHLnB1qGNZhqsSfZK1SgFbNrSoaXPhnehCNID2cZ9o015MDB0\r\nX7tRpEWGI51q3i//6EUBb7ZpJeXcC4x9FZA=\r\n=jHYk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.4.0_1662470528792_0.5355163845829451"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.5.0":{"name":"@pankod/refine-ui-tests","version":"0.5.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.5.0","@pankod/refine-core":"^3.67.0","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.5.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-VbUOG+YB/OSAiETZQZMpjQGBd8YfRZL32WYWPxGFP0yn1ctaNdn5MDiTLI29TEVVw2Gn97k3hLUePvKSIkbjNQ==","shasum":"c16631baa232cbc57e522e3b05c597ea6337bfb5","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.5.0.tgz","fileCount":143,"unpackedSize":1323358,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSlh1YebTVMrt2+PxGM5XEUFsxph8TdlDYuYwSkl2r7gIhAPo/m8/eci2aRCnN6HLI+lJJioGirF2p8SQT6PX2KX5I"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGFZYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmprLA/9HnUzgAiISYsfuV+4F7wtqs/7blWrszM8vlZVrfF3JTLjK6A8\r\ngp9/hzwSA5UICiLnaGmDb7nNkFZScuN+ZA0MA7WY7GpKv2CBwnLZPs13EJHh\r\nVzlY1a1E+Vyq2iVhsvqjXed0owjgv1DJmKugz6bhUB1NDOD9v5EA4Z9//4ux\r\neTavo7bBgGNkOabEFhGTe2l3Ro1Z2vddFbaDKXeBcFS7w4OhG91n5/ucweza\r\nxHmIKRNgv6eJewnnvK/IAON9lou8rjqBO9jM2sphmXEWktFRMGpJn4BVCJSC\r\neDg1t4tsfNWeb3lN6d2gz7QNCqtRLQ9LOLGjVefQn2n6bWDLhkNnv38/zRo1\r\nZK9cGwukt83A1aRaeSe9abA8WUed84fQcDJZ14egH8F+sxkqlSW6M/5lZxMc\r\nbx+7dOvz0K2qVXGc8cmTifzN0vrzk+EK9EMy/LlBkOPyAj0bixco6EkB4BNF\r\nmjULYJdq3ZoQFIXipiLbddoF7GN+MQVyW0KAx/HcAgy3U4phJTdxxSzCLvPa\r\nSSFN5n1URGThCwg8AwqMQM0aAW9Z733duMRB8rAsuVgRjxa68OvOWwLZf6m/\r\n+R7RCapWrReUYHXHjV8OsEdxt48zuFABMJTPeTcvTW/+Ct0x8FVtX1UdarJm\r\nr5uvssXkedaUn40dt4KKJy5u/Rh9CU+Hg2A=\r\n=j3Kr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.5.0_1662539352447_0.5403677650934371"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.6.0":{"name":"@pankod/refine-ui-tests","version":"0.6.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"^6.0.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.6.0","@pankod/refine-core":"^3.67.0","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.6.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-G7dCW/oauOuSTz98nqNzbfKH4Dcm2NT+NbQmLhX8Cr3Nu0DgjWSlvLUtTSyzmDX+RkLGO+tfQPsQJiGman9McQ==","shasum":"85adc1272efe5a08d090aa999ba97f436c248594","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.6.0.tgz","fileCount":143,"unpackedSize":1333710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaCYJkGhXUn6pqdRjccTi3mOvb+2MUrW9xt93tX6ZTcAIgfLGWMixwJINkN2rkXlVlJT/SvsWmS3FXe90Wi4EH+k0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHvvQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqyvhAAmvVe+UXpYQ4u0gDyilKwT/HNB0RHU2RqPqVsmhmaWKR6mlfu\r\n+jkdwadlkYtDMz9h7IsAf+WHGFEFk1XaSLYZgq2Uq9uMJrEM7YPhRCuYWkJm\r\nZ913qD/1fqs8iXQfNML9aRpdF4f96CR0ieP+o4iHYvS7WtUukLLMRA9ZIIJq\r\nFehjes4t2gPWCoFJUkSf6rR9IynZb2XVL3nfobcIr4RnDNtQcKTxOUa1Gs5O\r\nlAw+YuuyVP4AbpCGyts9ULRjXdjmWqZk+eithsynNMxiQRtV2mXa2DqSYRz9\r\n7x61VlGr83Gj11mtuoQmU9f0BuO+t66SCub5pbBFoIryeOAPEpWGOcGXwfui\r\nk4HZm89OAJGxBD6IX8kd33X3a1qhXEqkVYBTNIZaLMBQuTyz8I4huOzTmRKo\r\nOXda3c2BssdVOF+j0mTbaLE2ye6xHA8+61YT897ONAndbBUjEPeVyL4gLQ/3\r\nC31CofBIcyZsBoRcx4mS1WuKdJMzaJealN6QIjq+WB0QwWvjDoHNWTtKnlIw\r\nDjrJ9Fi5Go2DvKZZ03I1bfcwaESku1mjVtClXdCUEfZqidHe7jMs+P45XwiS\r\nadBnMv5vy9T/4MLDTMWsuKn4tu6wzlyBRD3Ghw3III4xw4c/0Kf/e4fXxgcL\r\nTw9RAMorWsN7/YmVpKPi/MtcBw0AxxDZ12w=\r\n=ZYv7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.6.0_1662974927944_0.7655897461993346"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.6.1":{"name":"@pankod/refine-ui-tests","version":"0.6.1","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.6.0","@pankod/refine-core":"^3.69.8","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.6.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-i06W6a2Dj6oUanL6u2Ixsmm3NZzoW1dneJ91qdWjdal41XtF3RX3OvrdwpNje6iAf2+jGhyFq8h7tM1Plhzytg==","shasum":"824b4ffc766dffc08e85cb02205672e32e3a5a89","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.6.1.tgz","fileCount":143,"unpackedSize":1335181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1RiPeyZK/NRjem8jWP8F2JSa4i55KaFlLPDL3Zk/e9AiAso3NcIP05fzxOu+hPaXloSKGTXc1J2AYS40LhcNBObA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIcypACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5hA/7BNJB6EY/LmKOfkGelLhgwPlP4YOKHw9RLM/lz/bGFbVaXnTV\r\niidMQy1dCHa7JNEKOfrQc0esEutRXMfvMNYn6TPN6VcOerilZsHbRLXvFki/\r\nsNKMoRHWbVS/B5A8Ayow5AjG/JH6a1dPFssYgK0Hj2gdT4xTJ/OVXNIk48op\r\nETTYJV/VxmYlrmJ/zdy4C+wAPY54KHXk8uc07yFEFNNeGAwu4bWM381t4R9q\r\nT6QUk2iChi//l02WSGeuofiJ2noy6txrJXjBpJV4aSRw5HmgbvQq3sQt8ZNN\r\nbchmjujZ+3hNHY6xUAkrXMAVsFuSI5jZuTHhyMB1N2zqxM/bQxCZLlgKujP2\r\npwl4gBF1wpgS2YU1DD1sKxUswuNq8L7yWVdkW3GRg/ofTbUbxjyzjorXvFl6\r\n8irOgJfvaVO4TFMpvIJ0iui4sayaPnmIlWdBwccAnsjC3m/aMuamQiw1O7UV\r\nroa4ep6H0g04Nmdb3M104iG55w3CKG8XwGS8QzxWeSk+oxwTWZaGvwktnom9\r\nPxSqH+5x2LjEEyAP/xFfmXdd3msKI2qiK824YXi24q9kdwx/0M5epXjjOEnO\r\nM+eNiN4RbUhSN+5D0OaCy7ulOvCAkjkaqIcyH/DxyfsmY7qASNV8uhRnrHA7\r\nY83T9FSrvBVFhhrMeJ8sVf5tU57L6LodQ2o=\r\n=+7dg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.6.1_1663159465703_0.14185565475803474"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.7.0":{"name":"@pankod/refine-ui-tests","version":"0.7.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.7.0","@pankod/refine-core":"^3.69.9","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.7.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-NJzJqJWoUcZmoHabENu4G6/VDbSQ7aSPmmyg+RN+H/pL/8hDd2eEow2T00JGYn9MUk5kRxvQZUvOy0YA377YfQ==","shasum":"b54d8d27f592bae8d16de7b0ee4d969c33a87b58","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.7.0.tgz","fileCount":143,"unpackedSize":1335424,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGtvtNFXRoXKW4wAyEYOEKZSuHojZ21+uXzg09SkXQSbAiEAwRiSDVEzvqUxvR8LBQ0sQGW/J8nR/h+mvp4moSf4v7A="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIeA3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9TRAAoye51sTdJ+XutX/YASWGz6oEbhwGhbN74/Bpd6R413rxIYww\r\nlrjHbhs0qk1pBLYwzUa7UMkkG16yNJNKk8v3o9R1iJPcDSe59NaHhBmvBErI\r\nEmavLxmbucZPOWgiZXtRoh/ZveUwRU5JG7mA5v/S7m5q89ZIOqb8gqE2AG4M\r\nP+vPuxy/BDzPOPnRQLzlFtfZ2Ux3DHYbz1zTeVjqpunVcZ03rBp9QpSGFy00\r\nBFe63+QZRWJhseZU89+djGqeauj+sXBO48hXqsxGXzMc3k6iDWMaXYokw0df\r\nn1+id6hDToELKj3eoYDby50oWVnhq4QQAa3Ci3M0/Hig+5W9REAZvxvJMARz\r\nMEZDLzzScZ55YbrBRYXIbkvIc2QjhudUL25DCaDHlsAE8Fqb6Ycy9QRxWPCh\r\nTvAu3ve7Kwl7rJv+W68ekmxFsMD0fH6tQjN/BHXVFvS8caebSplUORuZdLHz\r\nCK8ZM+IPUY+w4waftj/WlkEkBo6iTN/g1vrVC3CfO0zQlp/mGDaWMYqZsCRS\r\nQujB3zB6R1V0giVUV/qsw44dVLvdnuKDc636n8i1IpB5guUbElDVA+Qg8J0x\r\nNcPmp9E6iDXHlLlaJRhSU2ElANEQvraf70jPOJz7/pG1YHpIst/lQglRZ3xe\r\nwOhyiD4BBd1yFN7V1LxoiCLiD9YQlf35Smk=\r\n=9ySD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.7.0_1663164471492_0.23497190049909356"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.7.1":{"name":"@pankod/refine-ui-tests","version":"0.7.1","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.8.0","@pankod/refine-core":"^3.69.9","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.7.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-VlpSSY0EiAiHissnEwSyRNqSdc1Ol2r4QMQ7iAV4HOgzk47lH/QcDiR7wK0A+QdxuJrtY2D2fmcQKvXKGe5cGg==","shasum":"10c8050270d5ecbd8ff3560d78515d61c777b078","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.7.1.tgz","fileCount":143,"unpackedSize":1335617,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA6lcduZjfA7h7tde7fKnJ4rpn96S6t+sDknQqf4vugvAiAfgS87voESu6TXB9aNHJgE4fwOJoll0FgS4vEQrAmWHQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIvdTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJlQ/+LNQKs3ff2RIi9sLa1iWMsNGJTqPsmErygx4sZGBeG/h4vDjR\r\nq2YC6tP8Z1jz2sIVbZ3e9QTzJveeXqqE5gJmiYXBMJXe5FCnvLyKgLSK5YkZ\r\nA2PLH7OmjffR4XqT5whtezN3PYEz56S23onzr/6O498mLjEYQ/Ng9cDECcAS\r\nqmTRbM/399pxp+f9p00bJfZl8iSLbt2D6ao2f94GULJn3bri2MVCl08GxMGJ\r\ndLy6LVR5+YyB/9k5tWMKIbZw+TkwlQF7CejStpcwDjDNrCcBmoTqM4ovpvS7\r\n2I1IsYqyVzOO523lcnCnbVvSijg4mYBIbTDVa39+Qg78cBgZPHUgrhG/rxUR\r\nX4Ea+ehBQJaEuf/lf8CsV/KioNkmc2o2k8qqOz8lNdW7jigh7/XFtVxLK9NY\r\nksZc3iUHEzQdciAbFPE0bKMSByqBhTKjv+tI4vUTnVTjz8d6owhN7n5WXW6h\r\nCBlJH7q0mOHv/sTqFTBYvF9KacqjQl3NNmWFcbskmWHqmAswnwLMl3vDDG9N\r\npTXYVUmpLF2aeVWpZSDiXlqhbsUmpdeOKLTTdvSGrko+L9HKUaBNHBuNhtpk\r\nqgPc5dn8hX4UURXJd9WvdxppvsQLlQFCneIu/rVUCuiAfrEoexTfOR2RGYfX\r\n7tSQUC7MidwBxZ4touVBSncKNBxqZIZRweM=\r\n=Ngkp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.7.1_1663235923321_0.5195227029039493"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.7.2":{"name":"@pankod/refine-ui-tests","version":"0.7.2","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.9.0","@pankod/refine-core":"^3.69.9","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.7.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-wgpsL39RsfAZtsSNEQnWBHJhizmq+ipPI6ZWPANhlhSk5RXPeKk6BX7ezwlpetEOLm0fgS0CYSh6QC2ExTgRhg==","shasum":"af2414a80a5d07daaa390d5328545fe86e52a573","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.7.2.tgz","fileCount":143,"unpackedSize":1335714,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElNUZgOCEnbrNG5sJzr3dD5BUXzTdrQ8uvifLmlshblAiEAsCqtnZ/p90Yf47GbavjAr3v6F6Oe9KxEymE5WT93Eqg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIvx+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo25Q//TgGYhW7XYGe/RL40nszgdslRGxMiAvDLqKshrsaOWYijbSR5\r\nJDde5yJVO77K0IWn7YNlrSRNBdU9gsvhY1EMZ9pKpiPTaUtxxytOu1FXTsIM\r\nldwPRfYLXOxcE5JsycIr3VFqOkpkOoyEhc9stPFMAM2WRUdcCKYTPmhz+INj\r\nj2Xr34ONmkbRN6CmMSPJJQ57SO61m8C7tT1oWyeGnw7YyFJ48tp/xcWtl4Ey\r\nbugtshCzKtDXl+fFHRcwjRMwgCWzE/Yk+XOWpOfJ5L1zE/Lprycr8dncstYm\r\n5Cta1HyVUQRiJkBveDDcq9PhDykkKLqFAkcgRH+nN3DMxv17MDmKEZ8TBanS\r\nklOFRrKJFGZ/2TlwZvjxpgGttTBb7wos6hZ5jWcLa/MZ7ZC5d/Ng2zgd8KOl\r\nra/iSGM9H8bJsCqnVIm/aamsUUFl9BYdadAQWdxVZvTj5dKY70x++RKg/BZX\r\nT0C7XWikTmTYq+FCvaKZn5DBIvUEP3iqPfFs5WJdH+0BGXaXN2T4Teq/D300\r\n+VSmCOe0W48PK43g7WqxV+uhjtaAoJpQhQNM8HwEzkaCZlg85UPZYjtmcQln\r\ngJWPDNpV5s/I0rf7ftfaxQ7hHdQlpXuQjWvxMgNQf2ToBP1UgnejMO6ARVRF\r\nbAKaLkO2EYLEDMDY7zsI/WyUuIncdnI3zmM=\r\n=hweH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.7.2_1663237246410_0.025550874206703433"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.7.3":{"name":"@pankod/refine-ui-tests","version":"0.7.3","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.10.0","@pankod/refine-core":"^3.69.9","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.7.3","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-k9lG4DDRKgAtG0y60IvcWd/NoaIZkfU2SENpeKnPOmg/26u8pRuFrjmc/flXjaMwez/NZ0A7gUhfUI8J4gWmrA==","shasum":"5aeea390a77b70031324e531403cc5aa4dc2f66e","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.7.3.tgz","fileCount":143,"unpackedSize":1335969,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOBa6nlzCvEBd1FjLNkKj8S1ZgUtNre7OlJNo6jiHzngIgU83f4G7IxK4G+mepbwhWKPzFvAe150vwz8+eLlbgMWA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKtU8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqfjg/8CzVTgig3sQeQObXlXYKAjd5y4krYmU6MaocE4fTqHCuP5K/2\r\nGpKT+ug0aOV2a9fZsktr+r+dJIRTUU9joluCdgspNTtloBg70oC2UBNqFaOE\r\nfeZwxzYTJ9wL5U6iHohYY3c6qe9+jnbEnB3NGOl7mMss1pmAnYpOdnQ8yk/1\r\nYLkQtg3NGFERwaN/xo6F0jiCOsyC50tgRqCoUPw4JahqnseSmsjnWIAFoiaG\r\nOytUoVD9xebYgF/apI4NdRcnRYTqv0Oo47wAibfWy3SdnaWyp0D0VqD/4J/M\r\nvKIoOuiQFwa6sZgYEaqJuPEM9TkSUWORBLhDapSIM/02ZzQArioblyt/yBIg\r\nXQHgdYrKISTYe9Xoy7hnvOMgUMWsn0FvMC1ojSTF6GhxCX+ML+EywHgq7+iO\r\noDq2OfrrVmAATjx9+LXO3/GBqmuOXH57x+XSNmmYzFbX2yyHNvhbQpPl3XqS\r\nOcrws1S9Ord8DtYkyzZniVrOM6maKv9mWu5xuOmuXBnUu0RvEwbau1FgR+mh\r\n23FSy9TJGatRrZMgDnlc+ImYjtcWXIQwQqK6eIwqX3MRsU+bdui53tCI4b+6\r\ny7MHikxIXadc1jkrLwDkZPOwog+UQ5VJWwnPOu4F0okjOoWYlobtOlUuU4wx\r\ngy5i9isdziKxx0pa2zwBkKbZAT8DvwE5yOw=\r\n=mtDn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.7.3_1663751484040_0.9229603731374498"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.7.4":{"name":"@pankod/refine-ui-tests","version":"0.7.4","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.11.0","@pankod/refine-core":"^3.69.9","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.7.4","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-HEw2ISI8NYDTQTZdE8y6wdKc8v3JOWg3pZLncv4MSWKRvF2xapaFW7Ir/yLOnQ8j6c7nooFL9HxQ5VGypJJQYg==","shasum":"d9b5f5be6eca34b5b1e43bd1f6f39f4d1aea3d70","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.7.4.tgz","fileCount":143,"unpackedSize":1336067,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0GFC5ks4nUl4oADoAT4WAfA5tMwFKRgRQSHcgwHTh1AiAXuOVuZliVCCOdXgcBve8E5FE5xMrlyn+seOlEe62Bpg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKtzJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoaKw/+Pi75fEghIWbRq1fEg+4N8bAifd3jaxrnm0zxKAckqV2sOGvL\r\nYyqR9qmnGBwTcZMUBjwraunVeIxd1wWCuIvzL59ov8T5jDVCsJ49+/nV2JGU\r\nu3milviG3wTzZx6rJnYxkp8dLy8dKg1UPcC7bSLrJ54uXpVOForjc654lJHg\r\njMacEcc+bwBQ72o30YYxfwBzrOzc8uYjTWZ9Um38cMUW0gguiZj3UEeYSMPS\r\naZR7nmKwsxAJbVwZ5rS2kHHbJEXxkjDDPib0dM4XkS2IVHovHo7LXVvizkvE\r\ndc7/prlRSPGma+2g4CPYck2Ie+K86WwuWNpntBA1o7hwSi+3LFv6SD9B+ETQ\r\neuUZRVauGolRf6OgXOEUpwhAipoH1qxVVuTIw+wa2piHRQ5AU3MePMR/llDS\r\nRZBZ5b7G5WxeRoxZE8yKdZwqM7Gs6QWXuM3GYRj7QjR6DeTf14v1rW0o/m+5\r\n3GC+qyNE6JeE9lVvauXqKINmCvuqMASEKWsqmQeo+7Wn+oHlM1IQgafi1Ekh\r\nk/LbW2bYmhrY7i1TQ9NF+B4mXpBSqG1+P7Mzf0zsf1Er+A+kR89Fluwr2ri8\r\naMgG8ROAVRFgpBT2DpCx6Wz6KpibY0pMe8dN49ozzxLJ1krP8zQ6vmNz42wW\r\nyG/2nD8SyW3l2LVJwPYcU+IKqwHI567mdRA=\r\n=d1vR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"aydinakyol","email":"aydinakyol11@gmail.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.7.4_1663753417516_0.3823290483242363"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.8.0":{"name":"@pankod/refine-ui-tests","version":"0.8.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.11.0","@pankod/refine-core":"^3.74.5","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/pankod/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://refine.dev/demo/\">Demo</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/pankod/refine/projects/1\">Roadmap</a> | \n    <a href=\"https://refine.dev/docs/examples/tutorial/\">Examples</a> | \n    <a href=\"https://refine.dev/enterprise/\">Enterprise</a> | \n    <a href=\"https://discord.gg/UuU3XCc3J5\">Discord</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-open-source-react-framework?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-refine-open-source-react-framework\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=319164&theme=light\" alt=\"refine: Open Source React Framework - Focus your business logic. refine will do the rest. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Meercode CI Score](https://meercode.io/badge/pankod/refine?type=ci-score&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Meercode CI Success Rate](https://meercode.io/badge/pankod/refine?type=ci-success-rate&branch=master&token=2ZiT8YsoJgt57JB23NYwXrFY3rJHZboT&lastDay=31)](https://meercode.io/)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://www.pankod.com\">Pankod</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/pankod/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/pankod/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/pankod/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/pankod/refine/tree/master/packages/airtable), [Strapi](https://github.com/pankod/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/pankod/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/pankod/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/pankod/refine/tree/master/packages/supabase), [Hasura](https://github.com/pankod/refine/tree/master/packages/hasura), [Appwrite](https://github.com/pankod/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/pankod/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/pankod/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/pankod/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for pankod/refine](https://reporoster.com/stars/pankod/refine)](https://github.com/pankod/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present Pankod\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.8.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-Kx8XtQU1IE/EQc+U1wdfemuhUcT/wWYsWrk+OtBJ1U1ZWNuj7Z8muZeufmjPDPajnRIdLo3Uwfh+vzc5WyEIhg==","shasum":"59765f4a7f4d27c7e551d63d1366e5db45551683","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.8.0.tgz","fileCount":143,"unpackedSize":1270040,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDormZGbe8T0PQVWKup0HDwhrPpdW1qPXwuP3DiR+fYXwIgeIWzWzb7SUyICbB8R7Nbts3qgiTnfF2x+rc8td2APFg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNvYdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrXw/+LllsD+XTZHYsJZPX2lYJpTNDcU/A0VwNYS76EvExkllmjukR\r\n9lQMW8D5g4T9bvGBw8RXQyDgJSbqHNiksOISfOGR21Qy2ff2fIZmvVTQgtUb\r\nr2Q9dyPr/IipL7szIqRVLkwc9zYHdVc9edqVXEinl8X69Mf3RJPzKRISLeTB\r\nuvEiw3vqdnC4aitNX6QBb0RKGu2UWBeT05jb36rS987aiODwAn99Kjpxa9Gd\r\n7ja99bX8/CTVc82IMWDivVlO8zSsgZLR7Vh94R8bpDeMgOxKsIfTEM0DFsoA\r\nFZx7taGTjYNLfSwoT3sbzaPU4riYZrMqlKSpi1ct7ny92f17npnOrejWwDsa\r\nTEGxvyMHMBIbPmY/F4ocLUZgckW8K+tWRFra7kRijzSZx03fq+K9jdLU5nVr\r\nTbbENebAbAob4xYquZQ6x4DlXya97VQbqe2n/xb8sjJWV8cah40rJUZy0y3Q\r\n6tbfrS13St+CnmFfTl5J3u4xKt8COT8YWU247VVR2oBfJx273VkdAdF9HDiK\r\nVFsVtFpYQID2tKGb5z2ri+Z6cuihV0AVIWGLtXk8XPqKkUuSKjuTomgBzKoW\r\nCdm0PhkpKu4efe5lZuFmCwQpBNkhlfQxl9YkFAtUiUae5CEJAtCiQomrEs5h\r\nL0Ay2aULBCOOfoTgsBHO+l9+Aum1Ej2O+8o=\r\n=nLM2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.8.0_1664546333056_0.865699908732461"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.9.0":{"name":"@pankod/refine-ui-tests","version":"0.9.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.11.0","@pankod/refine-core":"^3.74.6","tslib":"^2.3.1"},"author":{"name":"Pankod"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.9.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-QtUyu5B2ZWCz72lYMfN+XDXgV8AbwjjYy2zC5OSSxC6w7ZQQmrdOtv0x2O3KPXTFQCVDc5PFtPrknjhZ9UMpGw==","shasum":"d278690b78ad29c9f42f9707699d9ef644fa30b8","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.9.0.tgz","fileCount":143,"unpackedSize":1270196,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzNnUxLXZwdj4hdCEC9+xZ0wd8OIq1Cr9IOz60Je+0NQIgYQ48gEzgJ42qEBy+R3Gm1UFeB2IkPUDgjCd0flQ0Jeg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNvnYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoX3g/5AQQnLopGiYzRZLPApj8KS+HmU8tVUph+8DX0rlx4st/ZFHq4\r\ni6zi0N32LArxv5qh7C800aJykZ4HVqb5iSvsmZmyT7R7255hV7aZflXSkbR2\r\nCjJmvXCVp+wo3ubEUaHhjkCVOcYFoFB/EbQ9SHf5DRqP//InS3ywIfCFOUa0\r\nDhdWUOGHJt77tJBaSJCNs0csnnfEH+38sT3RbEkp/xYOLV1hKqyjBBU8O+b0\r\nBDO3fxWa+1ZWfcvX74yuh5DdOJQ6uvBAip6jLClys1zlTDWQ3Rr/Eok8f0XR\r\nyXhbN/KILLQGgF0c6/cJgywVgo+ksiq3dPOMSqP2lhztnAeyCeF2WJPs4w2e\r\n8iu84485j4XE/0qcfXNOOsoYxoIBvtVLV9WPNMjVsiZpktRiMlRbOWx5jZ6W\r\n2vmy8xvo8F+g6dLw8PSgkIoKChkjz3ZsS80QEk/5D6iYaxRd92IU7Mb1MQdP\r\nxs6YuDeJdDy8W94bvzBEZ6qXbFl98giONkrWC/e7t9H+p5z7YEQDmFUJXNSE\r\nbcqj14J+pbaiOWJCzZpGdbH/FCjaZvXoh9KwdzhGywKG7uWl9GC4qE8ON+O1\r\n1aDYPspPHWIGfPxGIxXKDABe1g7bfHEimWXEdRkxFLRvD+RcCQwv6DMPqc2g\r\nfX89tZdjtPzLtlpkWP/nKejqrW93gL+sZgA=\r\n=Q4yd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.9.0_1664547288427_0.5581433827547255"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.10.0":{"name":"@pankod/refine-ui-tests","version":"0.10.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.13.0","@pankod/refine-core":"^3.86.1","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/refinedev/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.10.0","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-pASuTYI4xvjsDb5bja+iSyUwIFmZIaoDYhLi/a4LpiSkG3ZgWBaSwVb6lgqvDPAqIPE5VvGY3Vuxh6o5mCuWPw==","shasum":"479e0aee584de8c7ab94e12e91e65629df075fe3","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.10.0.tgz","fileCount":143,"unpackedSize":1307111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/hA9tbbwc/GgM3H5Pv/BvBV39VwAyjQeJSmg05HXj2AiEA2nRBpsxxP/lsr6FDz8aX1Mf/CpK345qfa9sjkC8ZveA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUFrMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtUQ/+MCWH9dui3VFtu+u+ZTol6kRFHtGMyVc/jt2zvYPjeoMYxY6Y\r\nTiLsEc5347IJ5zmitFkMfD6/37c11yawNJifh0XXa7Z57FOkeZhBJdUoRz02\r\nHVMC2ryNubQbFQF7iXEV3B2aWCcaJ7JnWwRTLzjMzSh+xpXQ7u7vN6qrgg2C\r\nJgzyZ7O0m7IaEJ5jnAuTArvaR/uWDK8Wyqyjw2xzUMf6gWCyAGliKr4L4s9z\r\nZbdYV4e6VXG27cy2Qvbp0wVfY2tzaWcCRl3LN37yI5YfePFrdZaq0m4WgIl2\r\nyOCd+0ZCYc3XaE5haSVQNenyBy5fCCryisZoyXvf86X5AQ99Y1cEgyCRPvQj\r\nq5MhhfOOdz+JI4oRh31JtR9O4h+35uKiaBuYMCAyLScrQJ/jyBIwUcEz5tkh\r\n6RAAS4M8bOezeMZs3biBHQ5nnYL4kzyD1X/bP0InEXTeXlKx0J93Nq/4cALL\r\nUoI9e1XZY9nLv39XJsojS5NfaJykTZ+Q89bbCfvCoGiizhBOszCd3MjMyREz\r\n40JCikpHlc9bS73Y17cfDV6KVhJZ5o8DmR6ADTj7YiFId6o6dON0Togb0L1t\r\nBmOu3mCWiwHCs7HAi7Vf4b+HA4+Q904VP3ycTg51Bjh+AXydXxgevXrX0jRc\r\nqlMaBtcvCK4AwEVRg1oI118n2PGoHWWELKA=\r\n=XzxF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.10.0_1666210508697_0.29916323589946625"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.0":{"name":"@pankod/refine-ui-tests","version":"0.11.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.0","@pankod/refine-core":"^3.86.2","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.11.0","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-C8QGgJQJFYZVJZg1uoPxRA5kURvmm74NMIQFNfkpDZP29xrGMbXTCUTTzgw3jKhKHt2aWrH5Fqn3Z950eGYwZQ==","shasum":"21bcd3ca26ccbb4b624edb16ddededd4bea230ae","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.0.tgz","fileCount":143,"unpackedSize":1308052,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSXVVgN2zZ4+W+g3OA0k65YKkTQ0bcRc7UMWbWmjCGGAiEA/ypu4ge3ZqGEVEkuDLrUpPrX613Fl2FimfjiK5HobQc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUQIPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0vA/+PbCCH9tqO+CLb604LR0ro+dKAU697kpi9xQu538jyh4SXW/F\r\nCb3D+qCW9iDb7HMan2ApAzQJOjpP+u/n0ZdmB7aKC86370I+zoRKNs5FAMnV\r\nNMmSDKO48NQEusQV6NVZiQkyqcOn/XU3ckVK/YyN+VvgE7OcR10HlfdP3k7W\r\nf9pgJhxb69e0yGqu8/iITeRF43TtJm5BfsjUot4z1xn+/p7LqvP+KPF73Y1q\r\nXYs4oESQBu2N5PZtWA1foijoG+t2V/+vwt+JSh321X9+RlnF/zr5i+zrMt51\r\niPPGwcwSrJd2FrnikjUBj586b1BS9pp1P1ciqBu767uwehmmYqQXJ48NpnHe\r\nEGCk8UR/sclEjUZI0r8KdH/cjylun6liMhhGhGt9ye4pQCTSva9eOyIohx3M\r\nOsM6Ay4LFn4SmtMZz1FWykrvKv7z+LNCusYujJ+qcYWKL16bAVzwagicBu0y\r\nrkY6v9npTwnpJvYwBF2UkPjQILKUutSC9pTAL1YIC3OSlW3aP9wLY+gakp+2\r\nU3MTHDc+n57Sd06YE6Y3iiwpDpC5GOYZg2y8vxScnw3jpvNE3UEJq8vsQl9D\r\nPS3LjeIOTXwZb+ZXb+4b46XVF4AmcJvmM4vqUNjk94pIvqyesPxzF0z+1tHN\r\n+dorWQ3mysaXXZIvyZeePB+KenBgrBckn04=\r\n=qP9j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.0_1666253326917_0.6339475677421642"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.1":{"name":"@pankod/refine-ui-tests","version":"0.11.1","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.0","@pankod/refine-core":"^3.86.2","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Awesome](https://github.com/refinedev/awesome-refine/raw/main/images/badge.svg)](https://github.com/refinedev/awesome-refine)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/refinedev/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.11.1","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-+ClgL0nMPwa3y3ktRRkuU9By9aI1gCIk+k5943kwZQ5fAIWffihvs2PtArUMx/DudbYU2PobJm+oAaYP9u4xJQ==","shasum":"9170d3ca34b495d34a44dabd59dc240749b75328","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.1.tgz","fileCount":143,"unpackedSize":1308012,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/NJBF5Us1GTJwRoQzlqMaTzLkL9L0PQl1oiEnrBNV4QIhAKSIbPWA0o6DZWITYVexRYZAbwosY+uLgoyjr2JzzGTW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX8AvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPpRAAnZLUApPTm5eu80UFNmQhI2safzxU6/i9yiIHXGpuGH0DHqYg\r\nFdUErm1q3YG0PkWcOQRoKuwJsQrhfG8tX/42Wru8Cz46aYOby9V4/u44kFCC\r\n5Qyp6DHS/iXl9B+KskU/xl30I/ddEEnUaQE44sBVEapj10eFregJqwZhWzJl\r\nm2JIaPsZLCMsKM4NKC3mpnOWktnvkSi/YefrFu/mq0kmfbA+BPrNdFJPMT+D\r\nUhzVb43UC4loIUy9zpuAscysNpCjYdzbUvMk61ePdXgPPgxftMtvkwHiZa/Y\r\nNIBkeuiRPEyn4wZX9sWW42Ks5OOaFkurj56T55DwDarxe//6r0PjvTw/M2qD\r\nY7ND1JMCzDuZJj7ghP4sqXKkIWDVxHb+64vF30HC0jh2Po94cy/RQPtWDNy6\r\nA4mwR3mTsPmIAjHg0vF7A+BFr3R1Sqpr9GfhHqGsegoMJ3y+j2Mqa+Kqu2DN\r\nxCy60mKwjD49or9VXh4x1G5cxIZX4yE+hNsx56xJmc0QRDRiew3n5Rl6SlCf\r\n23cHbpCyUpIRyKENUiK/HOqlzTpyabL1Mdtn2ecoCqMzEiRlUeY3IMVz50ud\r\nqCQisYcLyxQdE2AzE1btk7fRUuQuNVfmBHaWZMmdB4dHethUIgYTX0y5j7GC\r\n01Q+LleTpLgpPLdUN5e3YCvOi+zBwrFxirk=\r\n=Q4R3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.1_1667219502992_0.26501200512346124"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.2":{"name":"@pankod/refine-ui-tests","version":"0.11.2","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.0","@pankod/refine-core":"^3.86.2","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.11.2","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-h/1Vb6ID13pgw+mQMwQyH1qIteguH+QnR0W1DHIfHtPbPwlo7/Xc7gsppTin7rKvmm+RCa/rpRiUzs8kBwlSjg==","shasum":"0405e2c864f55277f9d88ecc871c7fe800b27406","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.2.tgz","fileCount":143,"unpackedSize":1308330,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9rPOatAf1uvwlAuKlyDJhq3JnHOmk+ymbCf0cvdRSPAiEA5FZo7MUHao9Sxy+gJoGxoTZB/Sl2ic/x2aYWWU2NrNg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX8PUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSWQ/+IZ09Obb+UsdgqWjSrXkOYK8uzLgoHVZpqFlUSfi6VLgAi5OK\r\nElsZ/4F0vp/JStkI1N+rTiAd0/A95BxdMO1vgVQ2R2AYcnEPXBCfjaMoEdYq\r\nvzVKp4O7wCPz0zAL87ZGrDD6y/5TWl7Fegk4oHGuxhSm6UFsHk3gscoslbCn\r\n9d+YODjq2i11D4cY/HISAyvh1OMONHRpnWuKbUgqDeUt1s1q/R2MNFAUmDZH\r\nmt9IIbZqvlV39Hz4Xu1ljmvFz65q5Yvo5ldOTpjyHFajv/h/f4kbJOvFYAuu\r\nDqnzEAnRx3gHVP9yNFgZH1J9vr1iZZ2r7MzAkQqq4shRVTjLgbgfxVtJp2RI\r\n3ZG7dJDbMSwLGddqfitY87THNbNAgNfiQYkdCUbiojN48HHv9S2/+FQOdBVr\r\nmD9fGtYWrJlitOmvWx9EDw1kp5UbRSlQ/r8TiiLBYr6fYMtQeBS13pVLsd5J\r\nT2BfkP7GpFN/n6cu68MHLF2oDHto3sVxAFm+07u5nl5uNMKqi7NNGvHDSVP9\r\ne7BUbKgHZtO0LyHx4/kfLXjKLcHtPh+ZhBTbfF5GzQIbl5vadLXJwTl0GXIJ\r\nIKAfRNFv/ZOkcGooxCZ7QqIOiKOXKMelk3jkPk2KCTI6Oa0QYBNqHu+hGacD\r\nBLzb8RuA5QMG5jpyRNi3N37bDTJp7VUvZUw=\r\n=ILbr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.2_1667220436527_0.23090095120871235"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.3":{"name":"@pankod/refine-ui-tests","version":"0.11.3","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.0","@pankod/refine-core":"^3.86.2","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Awesome](https://github.com/refinedev/awesome-refine/raw/main/images/badge.svg)](https://github.com/refinedev/awesome-refine)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/refinedev/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **superplate** tool with the following command:\n\n```\nnpx superplate-cli -p refine-react tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.11.3","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-SBpgmwbHHiWOarqx+fTcJnqaIPG4cIuzYHZ0kmIrDLoz+MZK1kQsGi/ojWogdBfitRKtDEvHGVYxduG9NM1yDg==","shasum":"6c109c12caad42bbb0fd885f3a9a7d9c65be3507","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.3.tgz","fileCount":143,"unpackedSize":1309901,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNGJyGiRzciejCcqCSeXYTNsjiTQQdU3FKiIAN6o6exAiAGIIc1d+apdE+0wiIVCZFeSsrfeyiZbng1UKPxXQox5Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfg58ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7Ww//ZALHxmlxJ+PY/J2xod9hCILk7/GEfGmT/e8cru/JXFbw5NIg\r\nu+bHUqH8LBr2dfSy0/MwG8QIhl4MkwLqPP2HVbdQ3xZQpXzARidcA9VzHB3W\r\n1W3OxCqgYO2M+qI2Wwv5WWL2Je53lP1pzdzVlhxXsjlVr36aUidY2Y/yUlMU\r\nB8Q+cb4W6oVN4iZMk43pKp72bxfrHMOKXNHoNUtOT8++idoCQF5Y6u2+eSN6\r\nhzXkmHQnyLTi/KOoEQ5nS7SGTt2c3eHCVhAxBsnVwpzOy/f818eIeC3NY3g8\r\nQPQZRFGLFWC7tXNRrQN2TbJYhe1S8uvfvtAHlElycFLq8J7Fz1Q/GEIW88qX\r\nO0Jt1cbU09Pos9+EQaWvFwkDDBrg/dzD46OtSjhM8mcow8suJu6ly1brFWPQ\r\nIP03G5kjkVifveexmMPdiJHv1Q9yRLqldjOYc69gRCKTE2aUJNQM7/btOYcZ\r\nxNMyTeNLHOap2DIXNrnakT7sndjCPOYobDlDzbc1hxKcbogqesm+Jk4ZTiF4\r\nYr6heB+Fg57WkJTnCJNerlkxbkU9Je59Cx8uhK64sedpLgZDocWRtpk1bwPN\r\ncghhX90JLhTY60R3mdfR9DqnUdAKc4JF58TIjLKP7YJ/Rp/7BOD3/eFGucsl\r\nvBsevCwtOThrGypV+1djs4NA9f7m2Y//09s=\r\n=M/j9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.3_1669205628106_0.24865676902027434"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.4":{"name":"@pankod/refine-ui-tests","version":"0.11.4","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.0","@pankod/refine-core":"^3.86.2","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.11.4","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-i1LnNxb0/ok0qdQDJoojUTxqtTvA4eOHlHlLzdB8JvNngrJBryg2cnrfWoOrjAowJsJdOKTY05CQ+RIf8/0IRg==","shasum":"35e86e4e8f6f6a783d44e770635e18e213255a3b","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.4.tgz","fileCount":143,"unpackedSize":1310198,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqblYk3udZKTCjusGFSI8DqvvKXOT7GwWs3kEiAx6M7AiEAkNQPajMc16x/RWMkFfMjlPOmqoVCGMdnNkyIh0/EXLA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgLdPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQMQ/9E67ugYDs80E6wY3+Kl/IsbZ9xuHt0jfZcg1XOvarhDW/YCqG\r\nOip7QGq9s7GIY3HRoR5hVcI2+a8pTiebcI4kkDk2WeV0RSfmlj+UnW7N/d4E\r\nES+27C1kN5PhR2gnka32AbmB0/3huLJXwESIzFcz4gTcvkQngC8jdNTGSTUn\r\nJ7JDlJsHK/zquaJJ6Y+Ehu1/R4eVZ6CZilnRxAchC2iRrRrtNL7ghQzgNcJo\r\nPE7v1EIkbDW8kjQOOmD6MeHzsjsao/+dNLUYGiqKvzXlXctKGbE5lOabREzi\r\n9kERD9kGvpkiNJo+jiYBX8aQrsanGRs1ZtSdYvn/4C+DLSCYLuJrbcD81WXR\r\nrssV3pLFsgKw613+5YdE5XC+rvxh5Q7DRzJlxnBK98mqxUcJitYDj9i+BSyr\r\nNx5y8JQqrAXhaqw7Te6gz5oot+lvceccJXLUZzFdkXy2pbe8dWoxPBV95L3f\r\nSsJRgKZ2AAvnUHhQkiv6fkchHDjiWwNQ9h0LLiwL2TpzWY49HX2FlB7XOvX7\r\nNUgKBZgGS84aiyFuo4vZW07givfugleyjOvOvK8j+YQqxGPPn0G1N1o/F7BP\r\nXaUKr8wnIFCu7sWY7bo/pG1ND46iEZyrEIIh+BtSMwfvx7V2vDn9vCEgA0ix\r\nv/8MND/rCSbdFLkrOCsWRnm9BjF5kSK6F28=\r\n=xdEJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.4_1669379919473_0.14421310312988145"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.5":{"name":"@pankod/refine-ui-tests","version":"0.11.5","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.1","@pankod/refine-core":"^3.90.5","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://refine.ams3.cdn.digitaloceanspaces.com/refine_logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Awesome](https://github.com/refinedev/awesome-refine/raw/main/images/badge.svg)](https://github.com/refinedev/awesome-refine)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 **Backend Agnostic** : Connects to any custom backend. Built-in support for [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), [Directus](https://directus.io/) and [Altogic](https://github.com/refinedev/refine/tree/master/packages/altogic).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **create refine-app** CLI tool with the following command:\n\n```\nnpm create refine-app tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.11.5","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-KdSW1b1LCjKOweA9oDBgD/6Dy9CrLubsEDXkr+dWqJPosPDtgWB3pOWWtn5xfgI6o3gPwN7pLAADuj7QBRb0rw==","shasum":"cdcd4f8fe2786f5afc662e0a146b64ff010eea17","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.5.tgz","fileCount":143,"unpackedSize":1311110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDS1fKcyNwuteeJALx6TbS8eLAnfUlskgQmBEEoxv9BbAIhAKXk7HsctwhL18wpFlWw9Al+dEzXn8qpgMDH1cl6A9f+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmaaZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEzg//RWZSgLDDHvBSI0OscHJnwtNWlq+ijnGmopZAossl2IQBtsWQ\r\nswjEb7BnHfZuC1J7e4XuObBTqsvozlwLwkZuR7aLAArJhr64s8MA2vU9Ruei\r\n741jSHIrDZ9EoOOdLz8so/RtF4eYKA8lhAv8F38vhPSouWbhNwzr8+il0/Bz\r\nvpuiCZtUE8P9XNybPRLAhkNrs3V8JwkyOGBcHORrNdzd/9jTwgin50Mx00GU\r\nV0HdzKkDWQ09cnNJ6Y6+8FvISb6U7NjC7A3qlJPfiEtDg8yMuaoOlbaKgUGs\r\nHwKswrlNDHOP4oJqPFYramqmiCHWhI9RA9T0uuw747Kq4gT3vZ0GRNVM8Cl3\r\no6UBngLji1iOPf55IFOn9MjPtfcb9kx9fUNSjNYXYTAal11sqpjtDOpNjWTl\r\n4QhtAV51ml404NZQL+qw8CfC+qWpa9BbTkPCb/FoIKp+GD7z8m/BVK5Jdy/R\r\n7zX8vOzZahmgIBTgdt9iEjQtDV7VsIrN2vwfTPY/Y5KR7k8DfP/NYL095BdC\r\nAVaAjkiV4pnxbk/yUEj8ezq71gQD88KNAhy85Cs1EiQQo5QpLMwftKlWIfeG\r\nCI/QQNELh6X9yzKlwgpvF8dAh2FDK5mMTHhAj9RmDWZPPlF53W8CWr4Kt8pw\r\nXlLtK4ri6epglQZ6X8squ2rYBYJBzEWBuQE=\r\n=zNWO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.5_1671014041411_0.8014196362460813"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.11.6":{"name":"@pankod/refine-ui-tests","version":"0.11.6","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build"},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^26.0.24","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^27.5.1","ts-jest":"^27.1.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.14.2","@pankod/refine-core":"^3.90.6","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.11.6","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-nCJjnFvbcXdTAXW/tWP2ExrEgqJrHAz1jIK5xUTmh2/dNSQeaJa1PdWFL6+AziUmfmTEJRhoKZ+w+0dyxtOfYA==","shasum":"34744651f69a4fe9e045fe9ab02dc4b89090504b","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.11.6.tgz","fileCount":143,"unpackedSize":1311802,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJSGL0kaXgSAPVfyvNjeUnJE4OhKnjL7cGwtwBcFKFbAiEAjFyqtWzrKr4w3SqE54tPJKQcvR0Q51v1/OI7wCZ9drs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmbm6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZAg/+K/lAEMtx/9R8BNuctK1vJRxwgIG1TErBxjZrj0e5qNvpZnjC\r\n6V63TCG6XRAYdG5JwlWkHH80346xBprwh87eeBt7E56FRWKtShyBYIcnHafF\r\nknxWbT5IrozlE2Nmxr9lXpX+l1wNeHDiAjUVCxPpocVSqynzejdYjipDtiMR\r\nmyk3Fb2lS+sPPNshqMbWOnM4yiDd5NrydUTv93tmwzPejC1Swykd0B/Iisfn\r\n+Q0Wer3I8ifrbdQjxLaP/MtIgAms+T9GWUqsH5N0FJCNZU2aGEgefdvNsbwG\r\nbW/KX2tFtV+DmP1/IYbINKkSv9Sn+/tS4XAAAMCnA6m0w3iuNlsZ/A2A9tz7\r\nTVrbwdhSRZX8QveN+FNbTAjPZZV63AKTMabZe8Otm/nbyfds79wnGTkO6diS\r\nLtaQfO/q9KRAuP5rIW0ctv02hODidRH32tQcVCvoC5Itw2J012GFjiIkPeSw\r\n/OF3Oxo8eE85V+u4+TCWOGY71C12BU4FgpvJTe2lwvwcJU8m01f9kOduLewV\r\nlxthJgnR95Xmuarc4wUVW7P+VvCvyi2tfS+b+yDX8LpBjFSkhT7zh1cLCx/J\r\nAzqM+K9/MAGTd1Wve0bk1w0yOK7cuvbmbr3BIGEgfHA8OZ7AkKEbsM8H+iIV\r\nwPB8DCgTkSzIbZTRaPdRbNr0QQ3tT5YWnSc=\r\n=oahP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.11.6_1671018938249_0.6868630738692727"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.12.0":{"name":"@pankod/refine-ui-tests","version":"0.12.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build","postinstall":"echo \"refine v4 is released 🎉 \nThe new version is 100% backward compatible. You can upgrade to v4 with a single command! \nSee the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x \n\""},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^29.2.4","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^29.3.1","jest-environment-jsdom":"^29.3.1","ts-jest":"^29.0.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.15.0","@pankod/refine-core":"^3.102.0","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://refine.ams3.cdn.digitaloceanspaces.com/refine_logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Awesome](https://github.com/refinedev/awesome-refine/raw/main/images/badge.svg)](https://github.com/refinedev/awesome-refine)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 Connectors for **15+ backend services** including [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), and [Directus](https://directus.io/).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **create refine-app** CLI tool with the following command:\n\n```\nnpm create refine-app@latest tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md","_id":"@pankod/refine-ui-tests@0.12.0","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-aHC6JoYah2WK5xcf67NUFmFEviJKVUZe39FLki4zEdwQOxCGPf0E+DA5OHUJXuWoVl2QGuwJ/06mvtHLF/127A==","shasum":"8ea870a33b226e01b5b36f36aea7c26288d2f285","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.12.0.tgz","fileCount":143,"unpackedSize":1342258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbwZjJAlg1pT4JeEdmyL+5A5RFml7djFxhAsQ+n54EEAiEAmWOHA0/6Yk34RYWTnAsr9AYoTyNvHxC/D+WNu6CiBXg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkDzKNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWcw/+MkS/Msb/GWY23atOHrB9Kj0Bfg6GWwvUJBo1yK7hV/63HsRE\r\ncMlblDVbkd4MV3wVTyDbvuI0gCwUke5jRK8xXEXD6vV6LEGjHtaFcQTPQI/E\r\nOfscD0C9JvWZJVJ3WTZ9gY005snmbP3fgeY9BeRYovHltCVpj2pnmstjKEY/\r\nNWaEurrzYmnhPpadibbhxRQATKSNI6ELnIV2KriEbvlfKn0nR2M75b0lpFqM\r\nTuYx/k3BR4pu92Zhge8DiIlhou1K6g1ceO6eq4eEEVMfj9+Y1aLDGjTmRpfv\r\nD1wTkMUytrsxcUAavqBpUBs0AXaE/9+Zi2slHDrsQSkomJV5k3zpPURvvxpe\r\n1WhjlWfof60yiSysjKHXzAqWzNCh+j5/kunt82BVIyrFzF15e6NMlcv9ToZt\r\niyBYmySFVVQXlMnhPpXpQgmQQ6iDDzBg0NxOax1K6nIGm5GoU/vTyaIUohi5\r\nQEUVjUTNLUnkFnklVFQ95Gw9HXk41BWuTB0KT1oWZ+NRQ9GpLMxG2Cr75Cdz\r\nnffufmddnXe1XyfqASwhWF0tS0Ipoe1p+IU1PvOYzhiJu1XGSYnozIZIslOG\r\n3fKzFUAbeYBZcXDxaIggm4Y9a4JZMPw/ihGAvJRM/t7SANzBJ98KI9SKdl4d\r\nUZdjyqRvRwXKXpN2ZXagrD9MwBJY0cMWCcc=\r\n=hyjH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"willico","email":"batuhanwilhelm@gmail.com"},{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.12.0_1678717581481_0.8845274220444377"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"},"0.13.0":{"name":"@pankod/refine-ui-tests","version":"0.13.0","description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","private":false,"main":"dist/index.js","module":"dist/esm/index.js","typings":"dist/index.d.ts","scripts":{"start":"tsup --watch --format esm,cjs,iife --legacy-output","build":"tsup --format esm,cjs,iife --minify --legacy-output","test":"jest --passWithNoTests --runInBand","prepare":"npm run build","postinstall":"echo \"refine v4 is released 🎉 \nThe new version is 100% backward compatible. You can upgrade to v4 with a single command! \nSee the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x \n\""},"peerDependencies":{"@pankod/refine-core":"^3.36.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.1.4","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.1.1","@testing-library/react-hooks":"^8.0.0","@testing-library/user-event":"^14.1.1","@types/jest":"^29.2.4","@types/lodash":"^4.14.171","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/testing-library__jest-dom":"^5.14.3","react-router-dom":"6.3.0","jest":"^29.3.1","jest-environment-jsdom":"^29.3.1","ts-jest":"^29.0.3","tsup":"^5.11.13","typescript":"^4.7.4"},"dependencies":{"@pankod/refine-ui-types":"^0.16.0","@pankod/refine-core":"^3.103.0","tslib":"^2.3.1"},"author":{"name":"refine"},"license":"MIT","gitHead":"829f5a516f98c06f666d6be3e6e6099c75c07719","publishConfig":{"access":"public"},"_id":"@pankod/refine-ui-tests@0.13.0","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-me1AzkAy/C1oHtpBOLWcg5gKPNbpDAMaDy7veWJkSxX1z5FHMqUpjmalK9RzGmIV+jFIjP0MbM3HKXuosvDAyw==","shasum":"a4ad5f7ac2a15044d317bcc97adc6405e381b2f2","tarball":"https://registry.npmjs.org/@pankod/refine-ui-tests/-/refine-ui-tests-0.13.0.tgz","fileCount":143,"unpackedSize":1342979,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFLnQMxuMp56ZGZHNya/WG2Cj9vO+I0d9S3oRIgdxh48AiEA52GXv3DMkJ6Pw7cZPenTdTGMo1Ar5DEveoJHFLxlszs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEB39ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolZQ//V9T5aD7phqd12KI0jG7SlMxjmMdtceMk9ucCIgHPoTWR37+n\r\nby7v1S7bBNGEvtkkW3LYYYjsSkRazc39eYi6blbaiI8VeuED16q6y/SO3EIU\r\njp1+YxVwjtuheObJfhZmA0+omTxkyQHKNt5y1JogIdKKaTqwX+CqHcpjM8Xx\r\njXD1G84dAJzMZAOTEJBDMP5B3qoddTlTZaDB1PBHKorN8fp71BQ4pDtW3CT8\r\nzcOS/OE5FWwJUX6+Cn1WGn473AcCOc9m9i+/L1oJJXg1N7wfFjw+0ttQqM8k\r\n7AFGXwIZX9LL2F10KYzceWDelCswCxWEis5x1aaLxt8vD/9u3o/ki7YLr9xV\r\nOq9G2NTkUANC0XWhOhMXm4IWRg3XFamzsQJ6WtzgBLNduW7U644ZtSntQKmk\r\nOCdA2+3Oce4q6LtHVrDtpJZZKsnZ5lqB7vYrOhHu5tYTpZcHEwbK3geE0I9j\r\nhePdbybmU9LKOnZ46J17sAonnbdP773ozXAougfGcnPlCPsQuTqfSQ4AVitl\r\ng9+QgkfzwxegSFQEJCsRNR2RVPBDDidWKopyr4FscmPTQFMLEvmKLIG2zGnm\r\ngBddBYiQcdWcnE7SyXydS86YHuUhYeBbjh7gWrgD9pnUwYAi/piqTAei5ilI\r\npvlRLIYq6+AtK8Z1E/1Eivbi4jSncQLXPzI=\r\n=87+m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"omerfarukaplak","email":"omer@pankod.com"},"directories":{},"maintainers":[{"name":"willico","email":"batuhanwilhelm@gmail.com"},{"name":"alicanerdurmaz","email":"alicanerdurmaz@gmail.com"},{"name":"salihozdmr","email":"salihozdemir94@gmail.com"},{"name":"omerfarukaplak","email":"omer@pankod.com"},{"name":"pankodbot","email":"bot@pankod.com"},{"name":"yildirayyunlu","email":"yildirayyunlu@gmail.com"},{"name":"aliemirsen","email":"senaliemir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/refine-ui-tests_0.13.0_1678777853494_0.5702917559833698"},"_hasShrinkwrap":false,"deprecated":"refine v4 is released 🎉 The new version is 100% backward compatible. You can upgrade to v4 with a single command! See the migration guide here: https://refine.dev/docs/migration-guide/3x-to-4x"}},"time":{"created":"2022-08-04T09:11:14.040Z","0.2.0":"2022-08-04T09:11:14.322Z","modified":"2023-11-02T07:54:30.422Z","0.3.0":"2022-08-04T13:00:45.011Z","0.3.1":"2022-08-05T12:03:53.006Z","0.3.2":"2022-08-08T06:12:49.177Z","0.4.0":"2022-09-06T13:22:08.986Z","0.5.0":"2022-09-07T08:29:12.728Z","0.6.0":"2022-09-12T09:28:48.155Z","0.6.1":"2022-09-14T12:44:25.924Z","0.7.0":"2022-09-14T14:07:51.727Z","0.7.1":"2022-09-15T09:58:43.545Z","0.7.2":"2022-09-15T10:20:46.650Z","0.7.3":"2022-09-21T09:11:24.337Z","0.7.4":"2022-09-21T09:43:37.746Z","0.8.0":"2022-09-30T13:58:53.262Z","0.9.0":"2022-09-30T14:14:48.596Z","0.10.0":"2022-10-19T20:15:08.911Z","0.11.0":"2022-10-20T08:08:47.190Z","0.11.1":"2022-10-31T12:31:43.179Z","0.11.2":"2022-10-31T12:47:16.757Z","0.11.3":"2022-11-23T12:13:48.299Z","0.11.4":"2022-11-25T12:38:39.678Z","0.11.5":"2022-12-14T10:34:01.659Z","0.11.6":"2022-12-14T11:55:38.518Z","0.12.0":"2023-03-13T14:26:21.665Z","0.13.0":"2023-03-14T07:10:53.687Z"},"maintainers":[{"email":"batuhanwilhelm@gmail.com","name":"willico"},{"email":"alicanerdurmaz@gmail.com","name":"alicanerdurmaz"},{"email":"omer@pankod.com","name":"omerfarukaplak"},{"email":"bot@pankod.com","name":"pankodbot"},{"email":"senaliemir@gmail.com","name":"aliemirsen"}],"description":"refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.","author":{"name":"refine"},"license":"MIT","readme":"<div align=\"center\" style=\"margin: 30px;\">\n<a href=\"https://refine.dev/\">\n  <img src=\"https://refine.ams3.cdn.digitaloceanspaces.com/refine_logo.png\"   style=\"width:250px;\" align=\"center\" />\n</a>\n<br />\n<br />\n\n<div align=\"center\">\n    <a href=\"https://refine.dev\">Home Page</a> |\n    <a href=\"https://discord.gg/refine\">Discord</a> |\n    <a href=\"https://refine.dev/examples/\">Examples</a> | \n    <a href=\"https://refine.dev/blog/\">Blog</a> | \n    <a href=\"https://refine.dev/docs/\">Documentation</a> | \n    <a href=\"https://github.com/refinedev/refine/projects/1\">Roadmap</a>\n</div>\n\n</div>\n<br/>\n\n<div align=\"center\"><strong>refine</strong> is a <a href=\"https://reactjs.org/\">React</a>-based framework for building internal tools, rapidly. ✨ It ships with <a href=\"https://ant.design/\">Ant Design System</a>, an enterprise-level UI toolkit.</div>\n\n<br />\n\n<div align=\"center\">\n\n[![Discord](https://img.shields.io/discord/837692625737613362.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/UuU3XCc3J5)\n![Twitter Follow](https://img.shields.io/twitter/follow/refine_dev?style=social)\n\n<a href=\"https://www.producthunt.com/posts/refine-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-refine&#0045;3\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=362220&theme=light&period=daily\" alt=\"refine - 100&#0037;&#0032;open&#0032;source&#0032;React&#0032;framework&#0032;to&#0032;build&#0032;web&#0032;apps&#0032;3x&#0032;faster | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n\n[![Awesome](https://github.com/refinedev/awesome-refine/raw/main/images/badge.svg)](https://github.com/refinedev/awesome-refine)\n[![Maintainability](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/maintainability)](https://codeclimate.com/github/pankod/refine/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/99a65a191bdd26f4601c/test_coverage)](https://codeclimate.com/github/pankod/refine/test_coverage)\n[![npm version](https://img.shields.io/npm/v/@pankod/refine-mui.svg)](https://www.npmjs.com/package/@pankod/refine-mui)\n[![npm](https://img.shields.io/npm/dm/@pankod/refine-mui)](https://www.npmjs.com/package/@pankod/refine-antd)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n\n</div>\n\n<div align=\"center\">\n  <sub>Created by <a href=\"https://refine.dev\">refine</a></sub>\n</div>\n\n## About\n\n[**refine**](https://refine.dev/) offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## Documentation\n\nFor more detailed information and usage, refer to the [refine documentation](https://refine.dev/docs/).\n\n## What is refine?\n\n**refine** is a [React](https://reactjs.org/)-based framework for building internal tools, rapidly. :sparkles: It ships with [Ant Design System](https://ant.design/), an enterprise-level UI toolkit.\n\nRefine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. Use-cases include, but are not limited to _admin panels_, _B2B applications_ and _dashboards_.\n\n## What is a \"headless\" Framework?\n\n**refine** is a **headless** React framework, which means all out-of-the-box features(**Routing**, **Networking**, **Authentication**, **Authorization**, **State Management**, **Realtime**, **i18n**, etc.), it can be used without being tied to any UI elements or framework. Also, Ant Design as out-of-the-box is supported.\n\n-   Customization & Extensibility - UI is a completely customizable area and each developer uses different solutions. **refine** features does not restrict or interfere with your UI structure. **refine** allows the you to design and customizable the UI based on their unique use case.\n\n-   Separation of Concerns - **refine** as a framework, is not responsible for your UI and is independent.\n\n-   Maintenance - By removing the API surface to support every UI use case, **refine** easy to use and update/maintain is simple.\n\n###\n\n## Key features\n\n🔥 **Headless** : Works with any UI framework\n\n⚙️ **Zero-configuration**: One-line setup with [superplate](https://github.com/pankod/superplate). It takes less than a minute to start a project.\n\n📦 **Out-of-the-box** : Routing, networking, authentication, state management, i18n and UI.\n\n🔌 Connectors for **15+ backend services** including [REST API](https://github.com/refinedev/refine/tree/master/packages/simple-rest), [GraphQL](https://github.com/refinedev/refine/tree/master/packages/graphql), [NestJs CRUD](https://github.com/refinedev/refine/tree/master/packages/nestjsx-crud), [Airtable](https://github.com/refinedev/refine/tree/master/packages/airtable), [Strapi](https://github.com/refinedev/refine/tree/master/packages/strapi), [Strapi v4](https://github.com/refinedev/refine/tree/master/packages/strapi-v4), [Strapi GraphQL](https://github.com/refinedev/refine/tree/master/packages/strapi-graphql), [Supabase](https://github.com/refinedev/refine/tree/master/packages/supabase), [Hasura](https://github.com/refinedev/refine/tree/master/packages/hasura), [Appwrite](https://github.com/refinedev/refine/tree/master/packages/appwrite), [Firebase](https://firebase.google.com/), and [Directus](https://directus.io/).\n\n📝 **Native Typescript Core** : You can always opt out for plain JavaScript.\n\n🐜 **Enterprise UI** : Works seamlessly with Ant Design System. (Support for multiple UI frameworks is on the Roadmap)\n\n📝 **Boilerplate-free Code** : Keeps your codebase clean and readable.\n\n## Motivation\n\nHigher-level frontend frameworks can save you a lot time, but they typically offer you a trade-off between speed and flexibility.\n\nAfter many years of experience in developing B2B frontend applications and working with popular frameworks, we came up with a new approach to tackle this dilemma. This is how **refine** is born.\n\n**refine** is a collection of helper `hooks`, `components` and `providers`. They are all decoupled from your UI components and business logic, so they never keep you from customizing your UI or coding your own flow.\n\nAs **refine** is totally _unopinionated_ about UI and logic, it's strongly _opinionated_ about three parts of your application:\n\n1. **API Networking**\n2. **State Management**\n3. **Authentication & Authorization**\n\nWe believe, these are the most important components of a data-intensive frontend application and should be handled in a robust way by leveraging industry best practices.\n\n**refine** guarantees you a perfect implementation of these building blocks in your project, so you can focus on your development.\n\n## Architecture\n\n**refine** makes extensive use of [hooks](https://reactjs.org/docs/hooks-reference.html#gatsby-focus-wrapper) as a default way for interacting with your components.\nUnder the hood, **refine** relies heavily to [React Query](https://react-query.tanstack.com/) for data handling, caching and state management.\nAccess to external sources and API's happen via providers which are basically plug-in type components for extendibility.\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/refine_architecture.png\" width=\"400px\" />\n</div>\n\n## Benchmark\n\nAfter releasing the first internal versions, we had the chance to migrate some of our _React_ projects to **refine**.\nIn addition to **shorter development** times and **overall performance gains**, we've measured significant reduction in project size.\n\n**refine** makes your codebase significantly smaller, by eliminating redundant code such as _reducers_, _actions_ and _unit tests_. Below is a size comparison for an example project:\n\n<br/>\n\n<div align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/refinedev/refine/master/documentation/static/img/getting-started/benchmark.png\" width=\"400px\" align=\"center\" />\n</div>\n\n## Quick Start\n\nRun the **create refine-app** CLI tool with the following command:\n\n```\nnpm create refine-app@latest tutorial\n```\n\nFollow the _CLI wizard_ to select options and start creating your project.\n\nAfter setup is complete, navigate to the project folder and start your project with:\n\n```\nnpm run dev\n```\n\nYour **refine** application will be accessible at [http://localhost:3000](http://localhost:3000).\n\nReplace the contents of `App.tsx` with the following code:\n\n```tsx title=\"App.tsx\"\nimport React from \"react\";\nimport { Refine, useOne } from \"@pankod/refine-core\";\nimport {\n    Layout,\n    ErrorComponent,\n    LightTheme,\n    ThemeProvider,\n    notificationProvider,\n    RefineSnackbarProvider,\n    CssBaseline,\n    GlobalStyles,\n} from \"@pankod/refine-mui\";\nimport routerProvider from \"@pankod/refine-react-router-v6\";\nimport dataProvider from \"@pankod/refine-simple-rest\";\n\nconst App: React.FC = () => {\n    return (\n        <ThemeProvider theme={LightTheme}>\n            <CssBaseline />\n            <GlobalStyles styles={{ html: { WebkitFontSmoothing: \"auto\" } }} />\n            <RefineSnackbarProvider>\n                <Refine\n                    routerProvider={routerProvider}\n                    dataProvider={dataProvider(\n                        \"https://api.fake-rest.refine.dev\",\n                    )}\n                    notificationProvider={notificationProvider}\n                    Layout={Layout}\n                    catchAll={<ErrorComponent />}\n                    resources={[{ name: \"posts\", list: PostList }]}\n                />\n            </RefineSnackbarProvider>\n        </ThemeProvider>\n    );\n};\n\nexport const PostList: React.FC = () => {\n    const getOne = React.useCallback(useOne, []);\n    const columns = React.useMemo<GridColumns<IPost>>(\n        () => [\n            {\n                field: \"id\",\n                headerName: \"ID\",\n                type: \"number\",\n                width: 50,\n            },\n            { field: \"title\", headerName: \"Title\", minWidth: 400, flex: 1 },\n            {\n                field: \"category.id\",\n                headerName: \"Category\",\n                type: \"number\",\n                headerAlign: \"left\",\n                align: \"left\",\n                minWidth: 250,\n                flex: 0.5,\n                valueGetter: ({ row }) => {\n                    const { data } = getOne<ICategory>({\n                        resource: \"categories\",\n                        id: row.category.id,\n                    });\n                    return data?.data.title;\n                },\n            },\n            { field: \"status\", headerName: \"Status\", minWidth: 120, flex: 0.3 },\n            {\n                field: \"actions\",\n                headerName: \"Actions\",\n                renderCell: function render({ row }) {\n                    return <EditButton hideText recordItemId={row.id} />;\n                },\n                align: \"center\",\n                headerAlign: \"center\",\n                minWidth: 80,\n            },\n        ],\n        [getOne],\n    );\n\n    const { dataGridProps } = useDataGrid<IPost>({\n        columns,\n    });\n\n    return (\n        <List>\n            <DataGrid {...dataGridProps} autoHeight />\n        </List>\n    );\n};\n\nexport default App;\n```\n\n```tsx title=\"interfaces.d.ts\"\ninterface IPost {\n    title: string;\n    createdAt: string;\n    category: { id: number };\n}\n\ninterface ICategory {\n    id: number;\n    title: string;\n}\n```\n\n## Roadmap\n\nYou can find Refine's <a href=\"https://github.com/refinedev/refine/projects/1\">Public Roadmap here!</a>\n\n## Stargazers\n\n[![Stargazers repo roster for refinedev/refine](https://reporoster.com/stars/refinedev/refine)](https://github.com/refinedev/refine/stargazers)\n\n## Contribution\n\nIf you have a bug to report, do not hesitate to file an issue.\n\nIf you are willing to fix an issue or propose a feature; all PRs with clear explanations are welcome and encouraged.\n\n## License\n\nLicensed under the MIT License, Copyright © 2021-present refine\n\n## Special Thanks\n\n[React Admin](https://marmelab.com/react-admin/) has been a great source of ideas and inspiration for refine. Big thanks to friends at [Marmelab](https://marmelab.com) for the amazing work they are doing.\n","readmeFilename":"README.md"}