{"_id":"@afaik/remix-auth-supabase-strategy","_rev":"11-33bbb0add92785ec92da9d562e5112b4","name":"@afaik/remix-auth-supabase-strategy","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.1":{"name":"@afaik/remix-auth-supabase-strategy","version":"1.0.1","author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.120"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"6c9eb648f7f732c2e3a5fbd5465e21eaef3e11f7","description":"> Strategy for using supabase with Remix Auth","_id":"@afaik/remix-auth-supabase-strategy@1.0.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-VuamG7Fl0jMWKIZequU+m2BkCznia97H7qUSkHXvlIQ52+B3ocyg5cUjNH5J/XyioJRa8lDBRHZjl30ksAsZAw==","shasum":"80df826448f521d01b7f14184aa7b54adeb74449","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-1.0.1.tgz","fileCount":5,"unpackedSize":6230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzJj+CRA9TVsSAnZWagAA+GsP/i4Nvc6heUtaCbEvQR1d\n6e4EJuQUvVdvfBQwFRXO6+lK5ghTdulsLMzgT5EtY7UlfWx01+mVGIIqajHt\nXPbC335vB46rxll6Gea335/mVLl+je+HOgxd4Ew0tk918yAnXsTbj0os/6tY\nceBALtrfp/kMs9carVDpVPDM/ywcKQPD6cZt3wM4Knw1652lK6YaKCN7ZOog\n1zLRYy0T0EZZ3IGp4sM9V69tedk/wRrvqqRkGo34kYWxqEsK8W5jlGnpkYA+\nupx1FAlv61DuazI84mEbEhcvhS0U4KUQHuyC5bpnolqYzxLlUJLw+b8Jg2O1\nFlG+2vTEaUPFPnSq+ci6Dl3BnQK7vUaAFvYYZhqXY8BWIHaS8GoHLlf13gnS\nqoxP5f0qrKxczs5V+vQc0Bkb4aHI9mZbye3qEQRloWpfu2GFlN9QrYAa0mpW\nw/cIfkB2VnyfrnTUIMxLRvdilEo69RfhEl5eA0YB5Emxlr0WKCKUdWf1fL8Y\nkk7F/HVyUCJruNs1xj10EdFOagGbZ46w9cqLOO8XSkVp7Zu/m4Dz2zVYhMVl\nTNaAgiz7MmzQzsRWxRUDYoPODH4+vRWyOVjdZnyZ56/OMbRNDNxyPE4c34RV\nDGRn3dwwTbTM2biOy3wBDvP863DppQCRQgl0CUxcFTFzv8iu2jp7Fyof8cep\nWGQd\r\n=itgc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8YgMivUpalj61istNzDnZmdQluaQw1ulS10lhyC+8EgIhANmJJL4sfyaVBXfTGyypvWPnPZskvET6TkeXFCV0vLco"}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_1.0.1_1640798462756_0.6982889089964814"},"_hasShrinkwrap":false},"1.0.2":{"name":"@afaik/remix-auth-supabase-strategy","version":"1.0.2","author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.120"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"08f06a138ee52e554a613497063176e0a5d5265e","description":"> Strategy for using supabase with Remix Auth","_id":"@afaik/remix-auth-supabase-strategy@1.0.2","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-XIlA3d61iC9DMnUVYhiP4sT6MUXZPMuN7Masdabq7JMG7BaOlJfHdVZ5FBwlMaYgUSM9WjqKOD1qXUUnGEfv3A==","shasum":"f0ad23ed570177af7728fc27bed87c85fd5604c4","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-1.0.2.tgz","fileCount":5,"unpackedSize":7715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzJ04CRA9TVsSAnZWagAAMTYP/1JeK4slGGapT0zBZ5RK\nkuRPpmoxYJ6S+p99WpWYkZMzm4r/PjSPfytUfSw+Ga/OKqqz4ZtP1epNtP2A\nxhh7vegIpMEASFtJarurXGV1XcD97wcvh8wRtr3wOBvRRmboKkeUtrhNUJxA\n7eTLunp1OxanWiXvanizzCP+sDg/UblImpNopaTVpA3xLH43xl5KkzaP2r0v\nOU9W5oDLlGYZKTHOQk9rHFFGRvt3CFRiVUvx4kHzt/RHNYXqnCg/ffjQobOU\nTNpGTxQWrt2WD6ysApfBmELqbwY8LRd56ID7m/Kf1g0kihwkkxM0lR2XWtX3\nFCr2iG0SlmhukVZRPMvsXiuJD2nL5F/Eg91IQkdhsEbJu0Qug7m9nEkTgBox\nqz3dfqkfKMj0ziFDwHf8wQlYgUHnOZR3l1am7iLtMxBZjBZhRQWl8DA91ghi\n2SRe/lGGeou79oXqj3j16SWgPVcyZvQW0n98bc0icnIINCyb9hD4J5PtnAcf\n3di1bashP7hBbIf+O077qb6Hz2usrO/xrCnhq5EXFTdUoUJDKHSzQetssCtK\ncJ/25ClTFxnp0tq8cR6bllgytdiF9hnFJW5NJGmcXNgVJo+Cr6m9HXkrFro1\nZKnjqJ+/SHO0GHrkkSmfBJeJUNQtDMvCUSish2ZuU8CO0pLcQcWX3fwGuPcj\nRHiL\r\n=M2kb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn266RID97krYlqFY9LP14QjVMHCQVKS81OAcRO2EmhwIhAISADi6Cj51epiTHvlfW14tzpQkwd91XIhdeTHg2Be+C"}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_1.0.2_1640799544534_0.8044311407316322"},"_hasShrinkwrap":false},"1.0.3":{"name":"@afaik/remix-auth-supabase-strategy","version":"1.0.3","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.120"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"748a1728df673b8914259a31552bba4132d29a29","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@1.0.3","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-bLnJb7hl+cWa45AqUC55+njp2gQ66z2MMvyshHjjTIkoPWBVmTZxzE3k4KzE7rgVmCYcRR0MmAHXDkhaSENVyA==","shasum":"013501f67dfef5f4abb7e16dee493e4f0307ae57","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-1.0.3.tgz","fileCount":5,"unpackedSize":7863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzWHRCRA9TVsSAnZWagAAVmkP/0a7LMnucgDtCtB5yuwi\nm5jxK/6VMdXLBhBI9F95iYysX8WPLfzfWJLMRGtPvgIxzNSvO7DOI4P00F4n\nzOAHZUKQi0c31fYYSMnOqmR5wIEs/kGZtHIfZucuvtGgbdVHh9uCNS1npFQV\nrVi5FkcvimBGQwX4af7KOiKItbZk7Vy1o4CubvgVpQr8vHWnGz+gCze13PZO\n49GNaWByPBemE5r08mFi7hMB4ZZp0vMCAntv1wKLzwwi05DH86cfG2tsefCX\nPQig627nkYo9/fz7CiFDJjrwBRF7CI27n9XQW0EmcTNMAEldTyUGTWHvdS4P\nsZDEJ2YK0vgB1X9REtZzCEYc5fcVIjuZd/55bGYxUU26fX592+tTOtS+udn8\nObr/qlguy2ElbXW+SyshRlkGVFkC5lT5xkoJ7JM2HPnAxcRHb48a1o4oq5Lg\nBUSFxeDjRsfgVGRqNnl/iROjckkrbkk2lju3ZiYfw2lEanVXe6EWn3SYZ30m\nFaHimdsm5VZb9SZwNo3P5VplaFW4QxdxdenW+PApdS8q7sBtT88lh5yMZbRR\nziFXCovoH3KA3bRjPXr4HapCBfjGsTash5TWqUQuVIKIlQ4MxUiW7nXHN8VK\nYiU3JPDZ6pdoX0Xlb7YgHRaq6qICRJeWgBp3lGdEN5O1/UWGu4jJStwxPGkT\nyV8T\r\n=7Y5c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8IQ9TJzNSVxG4N4a2mmp6cwyJZzkQj4FEyyIiBVbjkAiEA8Dk02z7ouyrqkUKk/hEgjV29xUGyZPxPfnD5qP2Dq9o="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_1.0.3_1640849873419_0.5855518996524314"},"_hasShrinkwrap":false},"2.0.1":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.0.1","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@vitest/ui":"^0.0.125","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.125"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"43929b4e1d6f011fd61e8b7ddbbede64918eb63b","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.0.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-l6Q9U+d/cd3XdjYLHbjtBzVJEU7ElinKe2ThfNgcvrre0zumBgUOTZR0xVUaHQK0k2Yks97MtOM2rrz/CZVkiQ==","shasum":"2fea66d6ee4e63139e1aaf103f1d71a3f95deea7","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.0.1.tgz","fileCount":7,"unpackedSize":12842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0FH+CRA9TVsSAnZWagAA4nwP/RyU3E/4E05ZbUsDrMZL\nq7UbrXd1wLds/aP3jUB7Cc42UWd7pLQSRSbK3b66geNJQZj4F4eEWj1NEquZ\nqBFuHUcFFrp3NTpzFLZnwryhEUQM3G3hB8zHERNugg6ZB77/S6gxzEKgnja4\n+GAIIlcOpRDZBDHoLGdKDJ1gsrpi9KTimGlhyKH/cUz2UE+3dcqxm6fguRbS\nXvWuIu/vSFVVuTy5O0fPUlQlJCL1htaaJCqk8vPGGKADYbsJQdRKSjlSFO2H\nfbfEMwLNzAnKYj8/KlCkim0n5vXjXosVNHGV9I1A1cyMCpI1ISM+r81lqKr7\nNVkBNzrJqVWf/rpngwU/zPc/T7YoCfDhYY3zXP2OYKhp9bKl2Cf2xGD8pGSv\n7njLcZG5yf8BhkXjSPs7M5tL0P+qRcVhKZmOWDYDHxBAQ6PcYF/EF+9hRrcd\nQShII5nC213vVPM/a9q0IQ7l4Cpe0RgFBoUTnxWKDOGjTX5Vt7gbNOhnIesu\nT1znw5HLhDvHUU2Sn0Hch1xu+ptzhs54hhHDguq5nCts16l7btb/+ZWdH+h0\npGrC7TpIBkPpbfzmaZaxYHRCTWfcsgaB15pEHl34r9dB+5UJKESTSs8axLdQ\n1uzjFwtGITOJM27ywtcix1kduRarlxIK0ThhHm49FTWV640soGDqHI1rYlXI\nj1Di\r\n=SIs5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDk2UBy03FyvO6zvhCA9+fz7AMCSo37ZcBKwYVHTuxjlAiA+yYJ3YUr3jtu68bXZRv2xUwxNYSSvkqgzTDpMci+s+A=="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.0.1_1641042430814_0.7378854052382651"},"_hasShrinkwrap":false},"2.1.0":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.1.0","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@vitest/ui":"^0.0.125","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.125"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"61fac267346d2e210e7520665b82a41f6f18219d","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.1.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-VwLxH9qtYat2Rey8mbAhNWNx290v51CAJuVZRD/a2AIMM5S29+03i07LiKNLXX1yh8eHlRuULzXn7T0Vhxhv1Q==","shasum":"213ea9d3fb8886e3f2792c17b8ebe99576b20dbe","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.1.0.tgz","fileCount":7,"unpackedSize":13229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0GUkCRA9TVsSAnZWagAA7D8P/jUE9KN45LFDUXF9r9Cg\nqFGuOr5pp3RNE/0jERKIaFeRf39eQ4f0k5YYFJhW2BOY9B6qffVsHoKi4nR9\n3rIsmVlbVsxtqH9L2JgqqGXglmtdv/X/olxHyA2BGzAbfzA51+7gDGwhyHka\neNSq7jtLWd32HHYJ/bbWRuH0A9SheSutZ1ojfec6FGOCWFiIMH0LKAZqEwpV\nrOdyDvOsAQHK7JWyAyCotIL+2XRpRpLnUlnLq1NMUEX+4tO/F40Mu3d/dO8L\nnqLQ8kcD6BR7p2lQgM/H/yBBTobpnSikUgUScOPeVGRDuuaj9UGN6xZn9yh4\n3fAamNgzYt55Js+GLqkQp0kZ/YOIHfPFFZvTj07GqCIhTgPT28bL9KnHXt0A\n90lLIWyPEm45kjfLASXVZYumBOCcLCne0lgBOORpOtk79rd8tiFJ6rxSOkDH\nX99pFddPWYL1f0+Bf2aktQZmrtZPkwGKsOReZf8uLufzSihGOVNDekHjXLBE\noxKXNuI1Gmy0AqCp/nLdMQWYsW/gOc8oSVo0GhYAsx9NzitydXMrs+LI+/Ev\n1snFZ6RgdWpe13v0Hem/8Pb8cwdmlUFqGDwzVgRTb7j7InXpov4i3dxXqOVD\nDsBZBQoTNMuGvAyxWvDmEFkqoEj/TFXPn0VljZANaQPgLk/ukBmzS8cYd2Ai\n7ftw\r\n=Dm8p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwAbXkssYekur8gvhq+IIhPwW2QCU7ThNPaxCAxd2y0wIgTb+FZaqxyDkJnOi/aAeXW1nGY926Fyni5iDLC5CI1qI="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.1.0_1641047332529_0.1051586552753605"},"_hasShrinkwrap":false},"2.1.1":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.1.1","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@vitest/ui":"^0.0.125","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.125"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"3185b72662fccb29b3b0d151c77e90370c321e10","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.1.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-9w9Yjdm8pAnVOKlhYeTcXGuSP35QVWpSmMsrZKd9KHyhcPC8H3jaE+gPeDyQfOep5G0j80yqBDbE1pJ1OVgVBw==","shasum":"6b6401ea76cfee9b5c12e27e78fe9a882ea6094d","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.1.1.tgz","fileCount":7,"unpackedSize":13284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0GaxCRA9TVsSAnZWagAA2qEP/34YtMpJB7NWxf7t7m87\nyJD3Cp4aDbAA63XNUx9hN1NGV8d2mAXhpAC7yyqlqPYWZw8ZopZU5Ad7WzIJ\n4/RdlYmWvQtIOqjKyT1UC7SAPql3+fP+BTMC29cMaFaFNLiaEWGBlHShXIhf\n+OtbR38hUBC92JuWCKjGTkO0SE+5XtRMkl5ryzSJMdIUux35YV1ANt6qE58p\n4ptM5zTe5z104/9aUBa5eVb3/OOXWih85QlJhsHtBE7mE6qBQx1H0zafKTfn\n3GLhaz11xPU4Asl/z3PTuI3vvzigN+FxQUhzsmw2A5r7eVdbESZyEY20RiH6\nIEuYoDFV69Icl7ccK6l1cVQm/M40GJsUEA8US8hSO7MC1hJ434ocF30le1HV\nbx1ZpgPzalxowuIGzNqTzKd2XciVmGubv1fDiCk55RYyma/jXcDZUx7O5UTM\nZsTs+Jn20XD3WaVnKQUNsT6nlThp/ZBGKn3aSpicriNnj8beAUr6KoZwgAvY\nzhOIqF1t1LaNN7wWInfebw1hwWnRBcGm5PKCTCs50OxBzr9Dl+sMueYHOOSK\nFeKBqklcfILqw4Mpj1q2RoUKwmWVjPpVUPlPCKTriPNGVpgVb+b61orQAHFL\nrUDB53vByJTPiQt+asbBCsSMthRbG7GueKK1ofitoLYDZ2RJqrHSHPceJBOK\ngJFU\r\n=ZgS1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVS6BYgqYzlIk1mwQQWhfDzZHWuxynBbe3KQqC+BPIRAiEA82xUFehIsmUKaLKTzcoUt28yVDrZKAJQmsy73DYhVPA="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.1.1_1641047729089_0.2991595733612509"},"_hasShrinkwrap":false},"2.1.2":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.1.2","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@vitest/ui":"^0.0.125","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.125"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.0.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"3842678af83a0a97c31516748fafd20fac81ac0e","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.1.2","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-xjcJUDjkV6/E0FIqIxSPOyH3DN3CtYBuJv1mFXhlb/GxDOlGcWaGv2JZLscvgpBQgegA9g34Z0talQrVDKZ6AA==","shasum":"3965841a88bdaecd8d104a374ff02d3597033680","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.1.2.tgz","fileCount":7,"unpackedSize":13454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0KayCRA9TVsSAnZWagAAeXcP/3U5V0d5UBF1ne72tNdK\nh+YwNtsIyRk+7Hszj+FPcsPaznx+2HKp5CUr/3XidVt6dSu7UWtgCeFPqQz9\n+HrrrTE5oEUPSdfebsrbPG4C4YcdIdyfGEot3iTMofI/GraS7hXEFWJibSMN\nwVNIbvEToW2kJGJY+4cYnenDeDbHbmAlLiOXLmmbEfKX+AKpzE811JQGjLzJ\n6BEgkRK0a5A9CAADTrrFeAE9G7HHZs2etczj4a7Q5de+GIbX/4Nn6j1oMXll\nYfClGfqzQLzeMldHX847roMs9gPodHdPPfdKcy7SIU6c5yrtnso+qaZCBfTb\n2mj6PzM1CCZQZzNIMSOmoWAK+1eZgD9L3j9SICSut6wG7oVSpluI+3jfJdM0\nkEQ33FF6i5EekNaot64I03oz/JiAvKmzOnvylERKVBznnkGy8Od/rjSljwRg\nTRtKebgfS/7VspWABrmIM0iDvR82uw/rzQA2FE8GRpubDtidauZ1b2Jq3hNa\n//+yNTTT0g8GEgwbuza2f4X3UJi6Kt1NFGbOxhYFoREJ0D4oaxDticL4N95K\nM3j5y7fBcfCZqLRrQFpPD0SL/j5cSiBCvfJvPycMMlHt0jN6NDUPrxEFAr9Q\ndOUfdAqpSdqyDauNuuo568gGUVUVbIVNoeks3bYzpKLZ8fdUIv6dPJD3High\n6F7o\r\n=Rd7R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6wjGJzsezZvs3a7GBANxN7sQzU12Yt/Y3fETLwMIwfAiEAvgKe8MjI1ONy/jnBRIVKofAyrcoZoCgMCydq4dwwEFM="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.1.2_1641064114842_0.835853293694212"},"_hasShrinkwrap":false},"2.2.1":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.2.1","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.build.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@types/react":"^17.0.38","@vitest/ui":"^0.0.131","c8":"^7.10.0","eslint":"^7.26.0","faker":"^5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.131"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.1.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"7d389ed26df612712613a6b14ac2c32ed09fa2e6","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.2.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-QSbkE2Sg+6TsFwcI0qu1Qq6XF6y+XCz7k4KmRjgzQuMiixO2nq9BcHJwGTDPEO46UAbHAxp6N276Wd9XVybHbA==","shasum":"c5f7ec9368d36bbc0a199dd67b67d9ee90783e5d","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.2.1.tgz","fileCount":7,"unpackedSize":11769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1MaQCRA9TVsSAnZWagAAJvAP/RKdkevjFGLprxW3dO1I\n2Z7t5bC8quT9Br/ues2gntY8oB2bUp7/pyjzbgFnaLZMoteh91pbZ5TfmAM3\n1vm+cbxIIxWrvt0Xf2pJGtM3dyrO5eTOMFY8JD8ubnkPEm+OuAD4JHIQF0BP\n2aN1lxjE7J8ye2igufpybQ9EBMFq4ni31smo8BCyGepUfclo9E3F8+lGSPLJ\nkbGpsizxuexBf03dCF23m+GEsf7Ax0v8o50zniJKSfqhU4cXeeQtcB65yMwb\nOF2m6JgSqA5F1XOJk/JD35bWVZzn4e/B8jXSzOYeEv/Vy7tGsxZL9bWZjFKF\nd8k7rhFdFl4foVCGGmhHApapqV6gekqHqD2qq58wzIIUDvH8kavbIybuZc6n\ntv7FKfKLimMhFqtm6jfMjreHFSp4kflWxErBbbc7YvSZKebqSG9Dxr0/0WLI\nyom6xnsSPd7OSv7nkHUzVbjDww+JA076eCGSz4MkXDqSSDeVvD8FKHjomMOb\nkxipzWMQMeqh3goku5QyxC15pcvSkBD5jU7C3EBo5qX1h639FWNW9riWgwgs\nt33JHFAVQaNavXpYhnPkaHvrDgG9SKnUMMbwQemGlsEXIDx0DLdlC5k/ppRL\nxNxEpSU/w6CN5cQn5E56kBCrmH9L6Px/Mb/sq1BxWfuZINeoa/e+nnNQ7KqX\nMTFJ\r\n=eIRX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA3tpzoCj3YrtghmE4gNxR3XZ65ovOTl2yKfK0MDjSe7AiEA+JamxTQedmSIGvcor7gXpulEgi2C5l367HiRpNLGWxM="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.2.1_1641334416558_0.10507918171948671"},"_hasShrinkwrap":false},"2.3.0":{"name":"@afaik/remix-auth-supabase-strategy","version":"2.3.0","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.build.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@types/faker":"^5.5.9","@types/react":"^17.0.38","@vitest/ui":"^0.0.133","c8":"^7.10.0","eslint":"^7.26.0","faker":"5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.133"},"dependencies":{"@supabase/supabase-js":"^1.29.1","add":"^2.0.6","remix-auth":"^3.1.0"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"e099a0f1bec59d4721afa8cb79b98e6951e816ac","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@2.3.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-HnE7Tb74j/yD8UgbirfAkN6vAWea6E5kCtui/GtpI5omxDJgwWFs8MH2N3Jc35HB4MmyLSVvW9WVH+pBpQ9CFw==","shasum":"d4bd5fea233c45ae7d0b493838e6b569a7aad8d4","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-2.3.0.tgz","fileCount":7,"unpackedSize":12185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1fPICRA9TVsSAnZWagAAiCYP/iayJKTCpEwvNvdAiG5N\n3iuHl1N2hYQ3JvAB1Uf0uE0I8+GK5m3+rjSkHO8zLiMtPzTg6trpM+CU+pMT\nUk/3ZTgJPdbwrIKdgkXOMg1bgfdAQxhLWCPwyxEU9/DOGeUWLsRxSjXB33fN\nltfhHb+EhXDCcgNzMOyKc2SDALIWrkwhpkwoEm/tdDbZSgr6rZLn2+sQQai5\n6XCWcPM3jPsks+YKCUnJws9mac68LY7TK4subUVkTL46UrBucU6h0J0TbKFF\ntnzg89Oh8z/UP0cRVg5HeiixDXHKt+ApthbejMowaVEzuEKUfZCO/5o89MQg\nFR1cA28duvSmUjiuntcrMJQEoWwnx3kMGyBlie9968hDxjb5XcynZnGaMBWU\nxrNPp0Hdwd/FjE3Ikup+sFT66eDLbOUAO0ArUZwxfDZTT30zLkanGjQYi1jG\nFEWLSbC6gnFp0vTViT84wTxxT8CNAyilfEsOzP51LGDTWlAHCtvhuC0bqK5P\nYA/YmuFBV8xwh7PR/v/WvWFlbiPUKzaSZX8Jf6QTFOwv3A9/nQ6uNH3FnhgB\n35SmPCfz0rY2KcE1M1z560X1m2pL3jVOr4JSnAJ08eQliHo+AncRbxB+6Bfy\nYhRwZOYpSLW2n58dzLNaw5+HoXgffybPkH+HphoIwJnZx9pb6N1ZjrHn0Uj0\n8SJS\r\n=Jhpz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICTTObLrOhYeswWO5FPozFipZ4Hyk6Esx48FN8uVzOpQAiAfB+pHH/C+p7/iJadu5tvq45s8by+jH89AL4UZnWewrA=="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_2.3.0_1641411528612_0.5431387532686553"},"_hasShrinkwrap":false},"3.0.0":{"name":"@afaik/remix-auth-supabase-strategy","version":"3.0.0","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"author":{"name":"mitchelvanbever"},"main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc --project tsconfig.build.json","typecheck":"tsc --project tsconfig.json --noEmit","lint":"eslint --ext .ts,.tsx src/","test":"vitest","cov":"vitest --coverage"},"keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"license":"MIT","peerDependencies":{"@remix-run/server-runtime":"^1.0.0"},"devDependencies":{"@antfu/eslint-config":"^0.14.0","@remix-run/node":"^1.0.3","@remix-run/react":"^1.1.1","@remix-run/server-runtime":"^1.0.0","@supabase/supabase-js":"^1.29.1","@types/faker":"^5.5.9","@types/react":"^17.0.38","@vitest/ui":"^0.0.133","c8":"^7.10.0","eslint":"^7.26.0","faker":"5.5.3","formdata-polyfill":"^4.0.10","msw":"^0.36.3","react":"^17.0.2","typescript":"^4.3.5","vite":"^2.7.6","vitest":"^0.0.133"},"dependencies":{"remix-auth":"^3.2.1"},"eslintConfig":{"extends":"@antfu/eslint-config"},"gitHead":"5404ea9645e924f839e4913d3ee3a0470e7489d9","description":"> Strategy for using supabase with Remix Auth","bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"},"homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","_id":"@afaik/remix-auth-supabase-strategy@3.0.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-hXI8WZjzX1h/z0vSd5AnzvF5nZE7gfdDmZerj+hX9RcJCc5aoBZSZ3s1X4H8DXEa9a5Md/B/9Gpv2F1pGVmprg==","shasum":"314712386dc66593fc2e5a7ac785462561e76287","tarball":"https://registry.npmjs.org/@afaik/remix-auth-supabase-strategy/-/remix-auth-supabase-strategy-3.0.0.tgz","fileCount":7,"unpackedSize":16965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2bUyCRA9TVsSAnZWagAAsacP/0SnDlKklixcx1/uHIHh\nJWdvrJA9iGDkohVgtpbtQ4+um0vfS/ckJ3qFrZ5SX9AJdei4yyFim4Js8A5s\nUCT0Toy2wFatIPSXu7k3oP/Nh365AEqHRfSYsD9prVUJmBKQTv+uRshgQQ0+\nldtH34bKRN40vz3M7nBGgYcfLms3lCwO9XEM0ZmTpjU5v1/aAxc9p4xgxhyA\nRjStVAStMkdeVo8slM+sR4x691SZ0EA5U7QoBk0NZRY+GNG5uhuhTnhK3obp\n+grQArWT7eN49KowfBzcJ4jaECOcFKlV6KwfytlQF5CTZxi5t1z2aBkR9Ypz\nolr1HWxk3Qv79QtHkFAzHgDdMAoyn7X4VrTT9KoVYuAhc5bD50MRfNm43SdJ\nBkglmtz919zvckpAkzqXmhNGsLcJH17Mn/QtBqCjBzmJtjP2Plx96Ii8H0ie\nBvQ7mu7XGq8YrNZYzHQJJ0JQnPvN8kRcj+1QhoHwxUrH3jATBqY0Oiq1UW7s\n2Y0vWbJwDoR0zhLI+D6uUHEkQTSlb+8fBrdfKdkaI/N7yMSmZLdIiQtMiMmg\nisxvgYUtOIdm9AbxqJQpzKIVR91/HOkCsvxnILQvwXCncMc616MBGrModybO\nwZRg9s8BdTDkQigSmJs7+6QXRv9Tk5PlDAWVwy1ipO6///3QGG6k07+CcCTp\nDhUA\r\n=QAII\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFp+LLfeQTVtCsba7eUm1RxLgXZDEmCQy2xGouCsWjQ5AiEA/AiA84rODJC40iAFSTFGXJI69bF4ZqVKf5hgyzofmgY="}]},"_npmUser":{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"},"directories":{},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remix-auth-supabase-strategy_3.0.0_1641657649873_0.42709703952652234"},"_hasShrinkwrap":false,"deprecated":"WARNING: This project has been renamed to remix-auth-supabase. Install using 'remix-auth-supabase' instead."}},"time":{"created":"2021-12-29T17:21:02.701Z","1.0.1":"2021-12-29T17:21:02.873Z","modified":"2022-04-04T11:50:08.271Z","1.0.2":"2021-12-29T17:39:04.651Z","1.0.3":"2021-12-30T07:37:53.588Z","2.0.1":"2022-01-01T13:07:10.941Z","2.1.0":"2022-01-01T14:28:52.685Z","2.1.1":"2022-01-01T14:35:29.222Z","2.1.2":"2022-01-01T19:08:34.973Z","2.2.1":"2022-01-04T22:13:36.681Z","2.3.0":"2022-01-05T19:38:48.812Z","3.0.0":"2022-01-08T16:00:50.055Z"},"maintainers":[{"name":"ghostethedev","email":"mitchelvanbeverjr@gmail.com"}],"description":"> Strategy for using supabase with Remix Auth","keywords":["remix","remix-auth","auth","authentication","strategy","vitest"],"author":{"name":"mitchelvanbever"},"license":"MIT","readme":"# Remix Auth - Supabase Strategy\n\n> Strategy for using supabase with Remix Auth\n\nThis strategy aims to provide an easy way to start using supabase authentication on [Remix.run](https://remix.run/) with [remix-auth](https://github.com/sergiodxa/remix-auth) bootstrapped with [remix-auth-template](https://github.com/sergiodxa/remix-auth-strategy-template)) (thanks [@sergiodxa](https://github.com/sergiodxa) 🚀).\n\n## Supported runtimes\n\n| Runtime    | Has Support |\n| ---------- | ----------- |\n| Node.js    | ✅          |\n| Cloudflare | ✅          |\n\n* Cloudflare works but it does require to supply fetch to the supabase-client as an option\n\n## Introduction\nThe way remix-auth (and it's templates) are designed was not a direct fit for what I had in mind for a seamless authentication strategy with supabase. After some back and forth between and playing around with [vitest](https://vitest.dev/) as my test suite ⚡ I've settled on the following auth-flow.\n\nIt Supports the following:\n* Multiple authentication strategies thanks to remix-auth and the verify method (more on this later)\n* User object, access_tokens and refresh_tokens are stored in a cookie\n* `checkSession` method to protect routes (like `authenticator.isAuthenticated`) and **handle refreshing of tokens** (if expired)\n\n## How to use\n\n### Install the package (and remix-auth)\n* `yarn add remix-auth @afaik/remix-auth-supabase-strategy`\n* `pnpm install remix-auth @afaik/remix-auth-supabase-strategy`\n* `npm install remix-auth @afaik/remix-auth-supabase-strategy`\n\n### Breaking change v2 to v3\nTo allow for more freedom and support some of the different authentication types the verify no longer just sends the form, \nbut it now sends the entire request. See [Setup authenticator & strategy](#setup-authenticator-&-strategy)\n\n### Setup sessionStorage\n```js\n// app/session.server.ts\nimport { createCookieSessionStorage } from 'remix'\n\nexport const sessionStorage = createCookieSessionStorage({\n  cookie: {\n    name: 'sb',\n    sameSite: 'lax',\n    path: '/',\n    httpOnly: true,\n    secrets: [SESSION_SECRET],\n    // 1 hour resembles access_token expiration\n    // set it to 1 hour if you want to user to re-log every hour\n    // 24 hours refreshes_token if the user visits every 24 hours\n    maxAge: 60 * 60 * 24,\n    secure: process.env.NODE_ENV === 'production',\n  },\n})\n```\n\n### Setup authenticator & strategy\n```js\n// app/auth.server.ts\nimport type { Session } from '@supabase/supabase-js'\nimport { Authenticator } from 'remix-auth'\nimport { SupabaseStrategy } from '@afaik/remix-auth-supabase-strategy'\nimport { supabase } from '~/utils/supabase'\nimport { sessionStorage } from '~/session.server'\n\nexport const supabaseStrategy = new SupabaseStrategy(\n  {\n      supabaseClient: supabase,\n      sessionStorage,\n      sessionKey: 'sb:session', // if not set, default is sb:session\n      sessionErrorKey: 'sb:error', // if not set, default is sb:error\n  },\n  async ({ req, supabaseClient }) => {\n    // simple verify example for email/password auth\n    const form = await req.formData()\n    const email = form?.get('email')\n    const password = form?.get('password')\n    if (!email || typeof email !== 'string' || !password || typeof password !== 'string')\n      throw new Error('Need a valid email and/or password')\n\n    return supabaseClient.auth.api.signInWithEmail(email, password).then((res) => {\n      if (res?.error || !res.data)\n        throw new Error(res?.error?.message ?? 'No user found')\n\n      return res?.data\n    })\n  },\n)\n\nexport const authenticator = new Authenticator<Session>(\n  sessionStorage,\n  {\n      sessionKey: supabaseStrategy.sessionKey, // keep in sync\n      sessionErrorKey: supabaseStrategy.sessionErrorKey, // keep in sync\n  })\n\nauthenticator.use(supabaseStrategy)\n```\n\n### Using the authenticator & strategy 🚀\n> `checkSession` works like `authenticator.isAuthenticated` but **handles token refresh**\n\n```js\n// app/routes/login.ts\nexport const loader: LoaderFunction = async({ request }) => \n    supabaseStrategy.checkSession(request, {\n        successRedirect: '/profile'\n    })\n\nexport const action: ActionFunction = async({ request }) =>\n  authenticator.authenticate('sb', request, {\n    successRedirect: '/profile',\n    failureRedirect: '/login',\n  })\n\nexport default function LoginPage() {\n    return (\n        <Form method=\"post\">\n            <input type=\"email\" name=\"email\" />\n            <input type=\"password\" name=\"password\" />\n            <button>Sign In</button>\n        </Form>\n    );\n}\n```\n\n```js\n// app/routes/profile.ts\nexport const loader: LoaderFunction = async({ request }) => {\n    // If token refresh and successRedirect not set, reload the current route\n    const session = await supabaseStrategy.checkSession(request);\n\n    if (!session) {\n        // If the user is not authenticated, you can do something or nothing\n        // ⚠️ If you do nothing, /profile page is display\n    }\n}\n\n// Handle logout action\nexport const action: ActionFunction = async({ request }) => {\n    await authenticator.logout(request, { redirectTo: \"/login\" });\n}\n```\n\n##### Refresh token or redirect\n```js\n// If token is refreshing and successRedirect not set, it reloads the current route\nawait supabaseStrategy.checkSession(request, {\n    failureRedirect: \"/login\",\n});\n```\n\n##### Redirect if authenticated\n```js\n// If the user is authenticated, redirect to /profile\nawait supabaseStrategy.checkSession(request, {\n    successRedirect: \"/profile\",\n});\n```\n\n##### Get session or null : decide what to do\n```js\n// Get the session or null, and do different things in your loader/action based on\n// the result\nconst session = await supabaseStrategy.checkSession(request);\nif (session) {\n    // Here the user is authenticated\n} else {\n    // Here the user is not authenticated\n}\n```\n\n\n### Tips\n#### Prevent infinite loop 😱\n```js\n// app/routes/login.ts\nexport const loader: LoaderFunction = async({ request }) => {\n    // Beware, never set failureRedirect equals to the current route\n    const session = supabaseStrategy.checkSession(request, {\n        successRedirect: '/profile',\n        failureRedirect: \"/login\", // ❌ DONT'T : infinite loop\n    });\n    \n    // In this example, session is always null otherwise it would have been redirected\n}\n```\n\n#### Redirect to\n> With Remix.run it's easy to add super UX\n```js\n// app/routes/profile.ts\nexport const loader: LoaderFunction = async({ request }) =>\n    // If checkSession fails, redirect to login and go back here when authenticated\n    supabaseStrategy.checkSession(request, {\n        failureRedirect: `/login?redirectTo=/profile`\n    });\n```\n```js\n// app/routes/login.ts\nexport const loader = async ({ request }) => {\n    const redirectTo = new URL(request.url).searchParams.get(\"redirectTo\") ?? \"/dashboard\";\n\n    return supabaseStrategy.checkSession(request, {\n        successRedirect: redirectTo,\n    });\n};\n\nexport const action: ActionFunction = async({ request }) =>{\n    // Always clone request when access formData() in action/loader with authenticator\n    // 💡 request.formData() can't be called twice\n    const data = await request.clone().formData();\n    // If authenticate success, redirectTo what found in searchParams \n    // Or where you want\n    const redirectTo = data.get(\"redirectTo\") ?? \"/dashboard\";\n    \n    return authenticator.authenticate('sb', request, {\n        successRedirect: redirectTo,\n        failureRedirect: '/login',\n    })\n}\n\nexport default function LoginPage() {\n    const [searchParams] = useSearchParams();\n\n    return (\n        <Form method=\"post\">\n            <input\n                name=\"redirectTo\"\n                value={searchParams.get(\"redirectTo\") ?? undefined}\n                hidden\n                readOnly\n            />\n            <input type=\"email\" name=\"email\" required />\n            <input\n                type=\"password\"\n                name=\"password\"\n            />\n            <button>Sign In</button>\n        </Form>\n    );\n}\n```","readmeFilename":"README.md","homepage":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy#readme","repository":{"url":"git+https://github.com/mitchelvanbever/remix-auth-supabase-strategy.git"},"bugs":{"url":"https://github.com/mitchelvanbever/remix-auth-supabase-strategy/issues"}}