{"_id":"@dopomogai/supabase-client","_rev":"8-32fd50b9ec4411fa95acc55aa365414b","name":"@dopomogai/supabase-client","dist-tags":{"latest":"5.2.0"},"versions":{"1.0.0":{"name":"@dopomogai/supabase-client","version":"1.0.0","_id":"@dopomogai/supabase-client@1.0.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"04a89c9daa81457dd44def841d8fc75919839192","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-1.0.0.tgz","fileCount":6,"integrity":"sha512-my9P+zR9taXozPQhAexXuqNRl/+vQyD+iTfTDWGaM7vavLNV5xG0Aa8sEaTXleZbktLjvdTk2h1+fzoEspUz8A==","signatures":[{"sig":"MEUCIGqj0MD8ERQwjr5sy1kUbxi2xRMxUrM3etPBX0xaSPyyAiEAx1Qx2rZj9D69KA8Ighi1OIycsWBB5cSt95RYr1SZPsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27376},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","private":false,"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch --onSuccess \"echo @dopomogai/supabase-client dev build complete\"","lint":"eslint \"src/**/*.ts*\"","build":"tsup src/index.ts --format esm,cjs --dts","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","actor":{"name":"dopomogai","type":"user","email":"solovei.andrew@gmail.com"},"email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/7039afb2f74ae7abaa90660cbca98430/dopomogai-supabase-client-1.0.0.tgz","_integrity":"sha512-my9P+zR9taXozPQhAexXuqNRl/+vQyD+iTfTDWGaM7vavLNV5xG0Aa8sEaTXleZbktLjvdTk2h1+fzoEspUz8A==","_npmVersion":"10.9.2","description":"A convenient wrapper around the official Supabase JavaScript client (`@supabase/supabase-js`) designed to simplify common Supabase interactions, particularly authentication. This package provides a singleton Supabase client instance and a structured `auth","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","rimraf":"^5.0.5","typescript":"^5.4.5","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.0_1751098049618_0.4342874426017862","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@dopomogai/supabase-client","version":"2.0.0","_id":"@dopomogai/supabase-client@2.0.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"64ea06d30a974c4645a8a78927207ac1580e3c73","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-2.0.0.tgz","fileCount":14,"integrity":"sha512-je1pD3YIyvPV28lsgqmn9NlLRFAkympJF15vyYt/YIVBMT+4H7W1O2ZI6hCeKz0AQIl87E//Qs2vh8sbbgyN8A==","signatures":[{"sig":"MEUCICLWUbGgurWjBR7G8z9htrtXyiHad1b+gPTAnS9h9/tzAiEA1Nu7yPmQPpSjlV4U5lxgaTPrY1XYYIo+tViYu76JzjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76274},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","actor":{"name":"dopomogai","type":"user","email":"solovei.andrew@gmail.com"},"email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/a67599c21d31207846ecb501b5b67a39/dopomogai-supabase-client-2.0.0.tgz","_integrity":"sha512-je1pD3YIyvPV28lsgqmn9NlLRFAkympJF15vyYt/YIVBMT+4H7W1O2ZI6hCeKz0AQIl87E//Qs2vh8sbbgyN8A==","_npmVersion":"10.9.2","description":"A convenient wrapper around the official Supabase JavaScript client (`@supabase/supabase-js`) designed to simplify common Supabase interactions. This package provides a singleton Supabase client, a structured `authService`, and first-class React support w","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","react":"^18.3.1","rimraf":"^5.0.5","typescript":"^5.4.5","@types/react":"^18.3.3","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_2.0.0_1751247612959_0.0886191349678509","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@dopomogai/supabase-client","version":"2.0.1","_id":"@dopomogai/supabase-client@2.0.1","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"cd6494652cde4511e3f62dfb1d9dd610c79fdce3","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-2.0.1.tgz","fileCount":14,"integrity":"sha512-enDydVFejSYMMHTOi65ZwMdMyR48nhpVR6Wh57mgh22AKvNw7AOvaflEpAFb1ydl44znnZH1kSU9VtiBY0OJDA==","signatures":[{"sig":"MEYCIQDJ2z/qtb/aDGMgqlkbXWyB6bunoBgIaQeqFMc7BcqwYQIhALRCrJZ54va9oTdH/PNwQDXxX3ob+znFLixiYH7on8Bs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77788},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-2.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","actor":{"name":"dopomogai","type":"user","email":"solovei.andrew@gmail.com"},"email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/05a75ff8f4608c594fc65dae002738ad/dopomogai-supabase-client-2.0.1.tgz","_integrity":"sha512-enDydVFejSYMMHTOi65ZwMdMyR48nhpVR6Wh57mgh22AKvNw7AOvaflEpAFb1ydl44znnZH1kSU9VtiBY0OJDA==","_npmVersion":"10.9.2","description":"A convenient wrapper around the official Supabase JavaScript client (`@supabase/supabase-js`) designed to simplify common Supabase interactions. This package provides a singleton Supabase client, a structured `authService`, and first-class React support w","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","react":"^18.3.1","rimraf":"^5.0.5","typescript":"^5.4.5","@types/react":"^18.3.3","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_2.0.1_1751261809480_0.99881605842571","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@dopomogai/supabase-client","version":"2.1.0","_id":"@dopomogai/supabase-client@2.1.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"b768a2549708584dffa9583454a18349de6a2b7d","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-2.1.0.tgz","fileCount":22,"integrity":"sha512-7WnDTLq64J4IFoAArYPwXQlqm7Oxv781xcd/9KEl3w53tf1hRbpXKksxHxRYz2tdVbHT+WlGFvthNS2jTLUWeA==","signatures":[{"sig":"MEYCIQDB/g4UBQzo9Dw8qwpqKjkHniF/ZHRzWwdefE/SeJo16gIhAK/ESTMVPxu/IySPfQNMGi9HtVzG6n5KZk6mkjumtSyg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430091},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-2.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/abf324e002ed69542b4b4e04ee0906f9/dopomogai-supabase-client-2.1.0.tgz","_integrity":"sha512-7WnDTLq64J4IFoAArYPwXQlqm7Oxv781xcd/9KEl3w53tf1hRbpXKksxHxRYz2tdVbHT+WlGFvthNS2jTLUWeA==","_npmVersion":"10.9.2","description":"A Supabase helper library with core auth services and optional React UI pages.","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","react":"^18.3.1","rimraf":"^5.0.5","typescript":"^5.4.5","@types/react":"^18.3.3","lucide-react":"^0.395.0","@dopomogai/ui":"1.1.1","framer-motion":"^11.2.10","react-i18next":"^14.1.2","react-router-dom":"^6.23.1","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","lucide-react":">=0.300.0","@dopomogai/ui":"1.1.1","framer-motion":">=10.0.0","react-i18next":">=14.0.0","react-router-dom":">=6.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true},"@dopomogai/ui":{"optional":true},"framer-motion":{"optional":true},"react-i18next":{"optional":true},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_2.1.0_1760383652386_0.1438271867384766","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@dopomogai/supabase-client","version":"3.0.0","_id":"@dopomogai/supabase-client@3.0.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"d48575b003a27a06d1f35271860df8c8a58fd359","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-3.0.0.tgz","fileCount":22,"integrity":"sha512-opI4nZuZjjHDlh7AlQWhuj+y0s/HkTcg3gzpsAHDngy5EW1A5LXRqPFNyDkXaQJ8cmHLnysOb6yEifAHpqSmgQ==","signatures":[{"sig":"MEUCIGuEvspzt/JjfQVjjdKCBnZplquqxx2vfYps1fGOnKkbAiEA64jqa3g14Yg9FD096Dv7B5YpFOnMdJYun7C8rwWRVtg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430091},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-3.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/9f177c6f24fc1ac183bcbf13e54513ae/dopomogai-supabase-client-3.0.0.tgz","_integrity":"sha512-opI4nZuZjjHDlh7AlQWhuj+y0s/HkTcg3gzpsAHDngy5EW1A5LXRqPFNyDkXaQJ8cmHLnysOb6yEifAHpqSmgQ==","_npmVersion":"10.9.2","description":"A Supabase helper library with core auth services and optional React UI pages.","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","react":"^18.3.1","rimraf":"^5.0.5","typescript":"^5.4.5","@types/react":"^18.3.3","lucide-react":"^0.395.0","@dopomogai/ui":"2.0.0","framer-motion":"^11.2.10","react-i18next":"^14.1.2","react-router-dom":"^6.23.1","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","lucide-react":">=0.300.0","@dopomogai/ui":"2.0.0","framer-motion":">=10.0.0","react-i18next":">=14.0.0","react-router-dom":">=6.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true},"@dopomogai/ui":{"optional":true},"framer-motion":{"optional":true},"react-i18next":{"optional":true},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_3.0.0_1760617968431_0.14385752957983278","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@dopomogai/supabase-client","version":"4.0.0","_id":"@dopomogai/supabase-client@4.0.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"0da35040bc5e2616695940497b4beb3ae6bff9a4","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-4.0.0.tgz","fileCount":22,"integrity":"sha512-7ao/uQo+0O/NgoGIWL20wvVrjvCn1p9Zj3qw3OSzvAb1IwtwXHrJZBlliVqSIQTSkSPLSCI0pKDNiqc6lCE3kw==","signatures":[{"sig":"MEUCIA8SIkTRpEJZn3jQRP6GUMW/bN4v5K+JwHEKoRIU83qxAiEA7YSYQoP2Vl4UD1mMnDPNvTgwG2DRRb/ZeRd1/org+gw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430091},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-4.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/b487a65559a3b20ec795f38083a95faf/dopomogai-supabase-client-4.0.0.tgz","_integrity":"sha512-7ao/uQo+0O/NgoGIWL20wvVrjvCn1p9Zj3qw3OSzvAb1IwtwXHrJZBlliVqSIQTSkSPLSCI0pKDNiqc6lCE3kw==","_npmVersion":"10.9.2","description":"A Supabase helper library with core auth services and optional React UI pages.","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","react":"^18.3.1","rimraf":"^5.0.5","typescript":"^5.4.5","@types/react":"^18.3.3","lucide-react":"^0.395.0","@dopomogai/ui":"2.1.0","framer-motion":"^11.2.10","react-i18next":"^14.1.2","react-router-dom":"^6.23.1","tsconfig-dopomogai":"2.0.0","eslint-config-dopomogai":"2.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","lucide-react":">=0.300.0","@dopomogai/ui":"2.1.0","framer-motion":">=10.0.0","react-i18next":">=14.0.0","react-router-dom":">=6.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true},"@dopomogai/ui":{"optional":true},"framer-motion":{"optional":true},"react-i18next":{"optional":true},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_4.0.0_1760623579559_0.657559614554899","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@dopomogai/supabase-client","version":"5.1.0","_id":"@dopomogai/supabase-client@5.1.0","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"dist":{"shasum":"04727b47f181760e4a6908ed4d42538480b7885e","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-5.1.0.tgz","fileCount":22,"integrity":"sha512-6UR9gE23mKv73AWMd0xz/VpZTJWNBt3cUcs4azv7jo1XMqZRHCM3SWtfsVM/wPEpIECsLNUBYLSf/AeNgeX2wQ==","signatures":[{"sig":"MEYCIQCRHEgroL8IsUV5qwH0u04rdjp/UqwYL9XZotHYi4oWOgIhAIWfOhUxnAsSDpf2FJDfjETqJVewYPJst1X0Hc9TSK/A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":700846},"main":"./dist/index.js","_from":"file:dopomogai-supabase-client-5.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./pages":{"types":"./dist/react/pages/index.d.ts","import":"./dist/react/pages/index.mjs","require":"./dist/react/pages/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","test":"vitest run","build":"tsup","clean":"rimraf dist .turbo node_modules"},"_npmUser":{"name":"dopomogai","email":"solovei.andrew@gmail.com"},"_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/7e7ded6deea30687c83705298b390a40/dopomogai-supabase-client-5.1.0.tgz","_integrity":"sha512-6UR9gE23mKv73AWMd0xz/VpZTJWNBt3cUcs4azv7jo1XMqZRHCM3SWtfsVM/wPEpIECsLNUBYLSf/AeNgeX2wQ==","_npmVersion":"10.9.2","description":"A Supabase helper library with core auth services and optional React UI pages.","directories":{},"sideEffects":false,"_nodeVersion":"23.10.0","dependencies":{"@supabase/supabase-js":"^2.39.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","jsdom":"^24.1.0","react":"^18.3.1","rimraf":"^5.0.5","vitest":"^1.6.0","typescript":"^5.4.5","@types/react":"^18.3.3","lucide-react":"^0.395.0","@dopomogai/ui":"2.2.0","framer-motion":"^11.2.10","react-i18next":"^14.1.2","react-router-dom":"^6.23.1","tsconfig-dopomogai":"2.0.0","@testing-library/react":"^15.0.7","eslint-config-dopomogai":"2.0.0","@testing-library/jest-dom":"^6.4.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","lucide-react":">=0.300.0","@dopomogai/ui":"2.2.0","framer-motion":">=10.0.0","react-i18next":">=14.0.0","react-router-dom":">=6.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true},"@dopomogai/ui":{"optional":true},"framer-motion":{"optional":true},"react-i18next":{"optional":true},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_5.1.0_1769863012438_0.8483734839457266","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@dopomogai/supabase-client","version":"5.2.0","private":false,"description":"A Supabase helper library with core auth services and optional React UI pages.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./pages":{"types":"./dist/react/pages/index.d.ts","import":"./dist/react/pages/index.mjs","require":"./dist/react/pages/index.js"},"./ssr":{"types":"./dist/ssr/index.d.ts","import":"./dist/ssr/index.mjs","require":"./dist/ssr/index.js"}},"sideEffects":false,"dependencies":{"@supabase/supabase-js":"^2.39.8"},"peerDependencies":{"@supabase/ssr":">=0.5.0","framer-motion":">=10.0.0","lucide-react":">=0.300.0","react":"^18.0.0","react-dom":"^18.0.0","react-i18next":">=14.0.0","react-router-dom":">=6.0.0","@dopomogai/ui":"2.2.0"},"peerDependenciesMeta":{"@supabase/ssr":{"optional":true},"@dopomogai/ui":{"optional":true},"framer-motion":{"optional":true},"lucide-react":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"react-i18next":{"optional":true},"react-router-dom":{"optional":true}},"devDependencies":{"@supabase/ssr":"^0.5.1","@types/react":"^18.3.3","@testing-library/jest-dom":"^6.4.2","@testing-library/react":"^15.0.7","@testing-library/user-event":"^14.5.2","framer-motion":"^11.2.10","jsdom":"^24.1.0","lucide-react":"^0.395.0","react":"^18.3.1","react-i18next":"^14.1.2","react-router-dom":"^6.23.1","rimraf":"^5.0.5","tsup":"^8.0.2","typescript":"^5.4.5","vitest":"^1.6.0","tsconfig-dopomogai":"2.0.0","@dopomogai/ui":"2.2.0","eslint-config-dopomogai":"2.0.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","lint":"eslint \"src/**/*.ts*\"","test":"vitest run","clean":"rimraf dist .turbo node_modules"},"_id":"@dopomogai/supabase-client@5.2.0","_integrity":"sha512-WFKic9ECl8ww7JjjmJhSA9eYIkCnKi34LsSWEvHcPlBegUgSGhDzg5LodkSb+4/qvZpSO4P3QkhvWzciozx2sg==","_resolved":"/private/var/folders/bp/fmcvq87x32l9d9cxx4n2h1hr0000gn/T/396e94cbbf3595018d52e83640c04fb6/dopomogai-supabase-client-5.2.0.tgz","_from":"file:dopomogai-supabase-client-5.2.0.tgz","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-WFKic9ECl8ww7JjjmJhSA9eYIkCnKi34LsSWEvHcPlBegUgSGhDzg5LodkSb+4/qvZpSO4P3QkhvWzciozx2sg==","shasum":"74fff07eb75c800394add89c0eaa7beedac4d134","tarball":"https://registry.npmjs.org/@dopomogai/supabase-client/-/supabase-client-5.2.0.tgz","fileCount":18,"unpackedSize":972745,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDWC/YJcRi3pkk8rXE7lMVDR4qV/jG/lF3VrZDKpaIPWAiEA9xhoKuA9ALucgHOM+18OsRUp0EIRmhs8loE0a5JRMV8="}]},"_npmUser":{"name":"dopomogai","email":"solovei.andrew@gmail.com"},"directories":{},"maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/supabase-client_5.2.0_1769869159242_0.9844290196041234"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-28T08:07:29.559Z","modified":"2026-01-31T14:19:19.524Z","1.0.0":"2025-06-28T08:07:29.796Z","2.0.0":"2025-06-30T01:40:13.132Z","2.0.1":"2025-06-30T05:36:49.644Z","2.1.0":"2025-10-13T19:27:32.566Z","3.0.0":"2025-10-16T12:32:48.621Z","4.0.0":"2025-10-16T14:06:19.791Z","5.1.0":"2026-01-31T12:36:52.634Z","5.2.0":"2026-01-31T14:19:19.416Z"},"description":"A Supabase helper library with core auth services and optional React UI pages.","maintainers":[{"name":"dopomogai","email":"solovei.andrew@gmail.com"}],"readme":"# @dopomogai/supabase-client\n\nUnified Supabase auth layer for DopomogAI apps: typed service, React provider + hooks, and prebuilt pages with a polished UX.\n\n## What you get\n\n- Prebuilt UI pages for login, sign-up, magic links, password recovery, and password updates.\n- A structured `AuthService` with consistent error mapping and typed responses.\n- React hooks for auth state, flow state, and UI text resolution.\n- UI configuration for text overrides, routing, branding, OAuth providers, and redirects.\n- Modular entry points so you can import only the core, React hooks, or full pages.\n\n## Installation\n\n### Core only\n\n```bash\nnpm install @dopomogai/supabase-client\n# or\npnpm add @dopomogai/supabase-client\n```\n\n### Full UI (recommended)\n\n```bash\nnpm install @dopomogai/supabase-client @dopomogai/ui react-router-dom react-i18next framer-motion lucide-react\n# or\npnpm add @dopomogai/supabase-client @dopomogai/ui react-router-dom react-i18next framer-motion lucide-react\n```\n\n## Quick start (UI pages)\n\n### 1) Initialize Supabase once\n\n```tsx\nimport { initSupabase } from '@dopomogai/supabase-client';\n\nconst supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;\nconst supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;\n\nif (!supabaseUrl || !supabaseAnonKey) {\n  throw new Error('Supabase URL and anon key are required.');\n}\n\nexport const supabase = initSupabase(supabaseUrl, supabaseAnonKey);\n```\n\n### 2) Add Tailwind content paths\n\nThese pages rely on Tailwind classes from this package and `@dopomogai/ui`.\n\n```js\n// tailwind.config.js\nmodule.exports = {\n  content: [\n    './src/**/*.{js,ts,jsx,tsx}',\n    './node_modules/@dopomogai/supabase-client/dist/**/*.mjs',\n    './node_modules/@dopomogai/ui/dist/**/*.mjs',\n  ],\n};\n```\n\n### 3) Add provider and routes\n\n```tsx\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport { SupabaseAuthProvider } from '@dopomogai/supabase-client/react';\nimport {\n  LoginPage,\n  RegisterPage,\n  ForgotPasswordPage,\n  UpdatePasswordPage,\n} from '@dopomogai/supabase-client/pages';\nimport { supabase } from './supabase';\n\nexport function App() {\n  return (\n    <BrowserRouter>\n      <SupabaseAuthProvider supabaseClient={supabase}>\n        <Routes>\n          <Route path=\"/auth/login\" element={<LoginPage />} />\n          <Route path=\"/auth/register\" element={<RegisterPage />} />\n          <Route path=\"/auth/forgot-password\" element={<ForgotPasswordPage />} />\n          <Route path=\"/auth/update-password\" element={<UpdatePasswordPage />} />\n        </Routes>\n      </SupabaseAuthProvider>\n    </BrowserRouter>\n  );\n}\n```\n\n## UI configuration\n\nUse the `ui` prop on `SupabaseAuthProvider` to override text, routes, branding, layout, OAuth providers, and redirects.\n\n```tsx\nimport type { AuthUIConfig } from '@dopomogai/supabase-client/react';\n\nconst authUI: AuthUIConfig = {\n  text: {\n    signInTitle: 'Welcome back',\n    emailPlaceholder: 'you@company.com',\n    brandingSubtitle: 'Your hiring OS',\n    errors: {\n      invalidCredentials: 'Check your email and password and try again.',\n    },\n  },\n  routes: {\n    login: '/login',\n    register: '/sign-up',\n    forgotPassword: '/forgot',\n    updatePassword: '/reset',\n    appHome: '/app',\n  },\n  branding: {\n    showBrandPanel: false,\n  },\n  providers: [\n    { id: 'google' },\n    { id: 'github', label: 'Continue with GitHub' },\n  ],\n  redirects: {\n    passwordResetRedirectTo: 'https://app.example.com/auth/update-password',\n  },\n  layout: {\n    variant: 'stacked',\n    cardClassName: 'shadow-xl',\n  },\n};\n\n<SupabaseAuthProvider supabaseClient={supabase} ui={authUI}>\n  {/* routes */}\n</SupabaseAuthProvider>\n```\n\n### Text overrides and i18n\n\n- Every text override accepts a `ReactNode` so you can supply rich content.\n- When no override exists, the package falls back to `react-i18next` using the `auth` and `common` namespaces.\n- Use `useAuthText()` to resolve overrides or i18n keys in custom components.\n\n### Redirects and password recovery\n\n- `redirects.passwordResetRedirectTo` is used for reset emails.\n- `redirects.magicLinkRedirectTo` is used for magic link sign-in.\n- `redirects.oauthRedirectTo` is used for OAuth providers.\n\nMake sure the URLs are allowed in your Supabase project settings.\n\n### Layout variants\n\nUse `layout.variant` to switch between layouts:\n- `split` (default): brand panel on the left (desktop).\n- `stacked`: brand panel on top, form below.\n- `embedded`: minimal padding and lighter card for modals/embeds.\n\n## Error handling and flow state\n\n- `mapAuthError` normalizes Supabase errors into a small set of codes.\n- `useAuthErrorMessage` turns errors into UX-safe messages (with overrides).\n- `AuthAlert` displays standardized alerts.\n- `useAuthFlow` gives you `status`, `isPending`, and `isSuccess` for button and success states.\n\n```tsx\nimport type { AuthError } from '@supabase/supabase-js';\nimport { AuthAlert, useAuthErrorMessage, useAuthFlow } from '@dopomogai/supabase-client/react';\n\nconst flow = useAuthFlow();\nconst { resolveErrorMessage } = useAuthErrorMessage();\n\nconst handleError = (error: AuthError | null) => {\n  flow.fail(resolveErrorMessage(error));\n};\n\n{flow.isError ? <AuthAlert message={flow.error} /> : null}\n```\n\n## Organizations and account status (foundations)\n\nUse these optional helpers to start modeling orgs and account states without custom glue code.\n\n```tsx\nimport type { AccountStatusConfig, OrgServiceConfig } from '@dopomogai/supabase-client';\nimport { AccountStatusProvider, OrgProvider } from '@dopomogai/supabase-client/react';\n\nconst accountStatusConfig: AccountStatusConfig = {\n  statusField: 'account_status',\n  profile: { table: 'profiles', statusColumn: 'account_status' },\n};\n\nconst orgConfig: OrgServiceConfig = {\n  organizationsTable: 'organizations',\n  membershipsTable: 'memberships',\n  invitesTable: 'invites',\n};\n\n<SupabaseAuthProvider supabaseClient={supabase}>\n  <AccountStatusProvider config={accountStatusConfig}>\n    <OrgProvider config={orgConfig}>{/* app */}</OrgProvider>\n  </AccountStatusProvider>\n</SupabaseAuthProvider>\n```\n\n## SSR helpers\n\nFor server-side auth, use the SSR entrypoint (requires `@supabase/ssr`).\n\n```ts\nimport { createServerSupabaseClient } from '@dopomogai/supabase-client/ssr';\n\nconst supabase = createServerSupabaseClient({\n  supabaseUrl,\n  supabaseKey,\n  cookies: {\n    getAll: () => cookieStore.getAll(),\n    setAll: (cookies) => cookies.forEach(({ name, value, options }) => cookieStore.set(name, value, options)),\n  },\n});\n```\n\n## Core usage (non-React)\n\n```ts\nimport { initSupabase, AuthService } from '@dopomogai/supabase-client';\n\nconst supabase = initSupabase('url', 'key');\nconst authService = new AuthService(supabase);\n\nawait authService.signInWithEmailPassword('user@example.com', 'password');\n```\n\n## API exports\n\n### Core (`@dopomogai/supabase-client`)\n\n- `initSupabase(url, key)`\n- `AuthService`\n- `AccountStatusService`\n- `OrgService`\n- `AuthOperationResponse`, `LogoutResponse`, and related types\n- `AuthErrorCode`, `mapAuthError`, `defaultAuthErrorMessages`\n\n### React (`@dopomogai/supabase-client/react`)\n\n- `SupabaseAuthProvider`\n- `useSupabaseClient`, `useSession`, `useUser`, `useIsLoading`\n- `useAuthService`, `useAuth`, `useAuthFlow`\n- `useAuthText`, `useAuthErrorMessage`, `useAuthUI`\n- `AuthLayout`, `AuthAlert`, `OAuthProviders`, `OrgSwitcher`\n- `AccountStatusProvider`, `RequireAccountStatus`, `useAccountStatus`\n- `OrgProvider`, `useOrganization`, `useOrganizations`, `useOrgSwitcher`\n- `AuthUIConfig` and related types\n\n### Pages (`@dopomogai/supabase-client/pages`)\n\n- `LoginPage`, `RegisterPage`, `ForgotPasswordPage`, `UpdatePasswordPage`, `InviteAcceptPage`\n\n### SSR (`@dopomogai/supabase-client/ssr`)\n\n- `createServerSupabaseClient`\n- `getServerSession`, `getServerUser`, `requireServerSession`, `requireServerUser`\n\n## Package docs\n\nInternal project docs live in `docs/` (findings, improvement plan, tasks, QA checklist).\n","readmeFilename":"README.md"}