{"_id":"@bernierllc/supabase-client","_rev":"14-2b3fa05af5da822f2d0d6870749f8e68","name":"@bernierllc/supabase-client","dist-tags":{"latest":"1.5.1"},"versions":{"1.0.0":{"name":"@bernierllc/supabase-client","version":"1.0.0","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"c6611f90ea528c0b52c338b55791465e2c224c56","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.0.0.tgz","fileCount":15,"integrity":"sha512-PQ9OxDgsUyzqnULFM3C3REojNEpzv9EcRCPRq6fEeTdZRyZ/nSArDOPlSWwvi9yUWgOeWVoPsk1MbzqwkoIcwA==","signatures":[{"sig":"MEUCIQC+ojHwncxbRMQhQ2n3F8cDeGjkr+5FafBDOV93R9/6nAIgeFe7B/WALQT5/AzfaB0jEP/uYJKEzFTWzjWdKGsmeAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83342},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f2aca939edc165605ab19f4d6c5ea57aea1d5175","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@bernierllc/logger":"^1.0.1","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"^0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.0_1762723931979_0.4677044584147503","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/supabase-client","version":"1.0.1","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"99ad84ed263d2a2135a2eec6980fd15e9600088c","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.0.1.tgz","fileCount":27,"integrity":"sha512-RiAXbuppBF3cxoA+OXPEK+RMzx9jjXRa0NaYWkntDh39yQqWo2zDxnVpkwYrqsbje/CWw6l9uR30pXuPn37Ixw==","signatures":[{"sig":"MEUCIDbi/GQpU+7lEuVoqFLbMfpEsaeCbDHT6vUacJXFgS68AiEAoGi6XU3f1msuGaaocwvuX1wp8h8HmirT5DYZBxAv3YQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246408},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/ee98a283ee3ff42f1912dfea7bbbe35d/bernierllc-supabase-client-1.0.1.tgz","_integrity":"sha512-RiAXbuppBF3cxoA+OXPEK+RMzx9jjXRa0NaYWkntDh39yQqWo2zDxnVpkwYrqsbje/CWw6l9uR30pXuPn37Ixw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@bernierllc/logger":"^1.0.1","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"^0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.1_1762732367540_0.16155804316941014","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/supabase-client","version":"1.0.2","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"4d9bc72f207419705a48d95b2209a65f3f2d600f","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.0.2.tgz","fileCount":27,"integrity":"sha512-GBeNb1RaHBiapOz5S4tUKJwQhyGlFRmD4/nJwusVYvKkRNHns0q0z0PLOIqKOkg9yAqSIWsylC0AjraJCCqkmw==","signatures":[{"sig":"MEUCIQCW6v+rfqttRq+VRlezRXQF+Z9cr9GIoZuEtqf7/DiEbQIgJMvjrGNXl58AwFsi5dMWobh8XO/VSs6iybmI2BpzNFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247364},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/f4cff1190f928e2a00cf35514a8b434d/bernierllc-supabase-client-1.0.2.tgz","_integrity":"sha512-GBeNb1RaHBiapOz5S4tUKJwQhyGlFRmD4/nJwusVYvKkRNHns0q0z0PLOIqKOkg9yAqSIWsylC0AjraJCCqkmw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@bernierllc/logger":"^1.0.1","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"^0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.2_1764635968806_0.7071892957238304","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/supabase-client","version":"1.0.3","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"461ae2b558bd538375af429ac1df929e4724bd0f","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.0.3.tgz","fileCount":16,"integrity":"sha512-Dg5AyOIG6avX3hajcrIaKsu0GQasggq+gnnYQy2YgUM18quJvq4dWgBbvywSuCJfGgg6LQU9gUO3DA24w0iGqw==","signatures":[{"sig":"MEYCIQCHcA0FSGpbhEYy7Vgw5VAFaPIPJhthAHRgfe3Y7W7qgQIhANdPgHxXKAqfHIODFE+nB9Mai5ESUkwUs7dzOgiF5VqI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84587},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/tmp/c875d8e7b840bb228e7d3df8d8050517/bernierllc-supabase-client-1.0.3.tgz","_integrity":"sha512-Dg5AyOIG6avX3hajcrIaKsu0GQasggq+gnnYQy2YgUM18quJvq4dWgBbvywSuCJfGgg6LQU9gUO3DA24w0iGqw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.7.0","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.4","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.3_1766437798190_0.5558802103886458","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/supabase-client","version":"1.0.4","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"d412f51483d65474c41597d7d9bc64fd79b8f2a0","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.0.4.tgz","fileCount":16,"integrity":"sha512-eWRZzo3zQHXeZUhTIuwp1aNQAk8G8FIW13NWb037kQkWJJD5lQCtKoV0T/2yG1dboODxUbsQ2E0RWOZGw5gApA==","signatures":[{"sig":"MEUCIAaDshoS8GsLFfLmDqRA1yXnUwrf91JWoknd35UNyuOtAiEA2BitAF+z7MCFf8nEmvHsmTINq57pJC+mHaM0TDukQig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84769},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/tmp/65ededf97f0a911b20cbeeccb5762492/bernierllc-supabase-client-1.0.4.tgz","_integrity":"sha512-eWRZzo3zQHXeZUhTIuwp1aNQAk8G8FIW13NWb037kQkWJJD5lQCtKoV0T/2yG1dboODxUbsQ2E0RWOZGw5gApA==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.7.0","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.1.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.0.4_1766454427945_0.08142821590230742","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/supabase-client","version":"1.2.0","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"23da2432981db8eb552b2df235126bc11abc47a0","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.2.0.tgz","fileCount":16,"integrity":"sha512-vMjalug3dyWGqlt9pgBHPGbhKPQfbySD/V3Jz5fsJ385/VpU4tBk1nno12KHv5S9D6B3ogp4tUt9IWVT63kZ8g==","signatures":[{"sig":"MEUCIQDQ1KHLWu63wkRHbes9UlOCydZ0xzo7y4ML4OwuFU754QIgN19a53+zKvNjclRj2SBKSJOmAZ1TUj5YeoaUorj1h40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86854},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.3.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.2.0_1767642447583_0.9743140263482513","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/supabase-client","version":"1.2.2","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"26a832aaf4fb01c755be0884e4b5fae6eb8f9216","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.2.2.tgz","fileCount":16,"integrity":"sha512-0T60NzJGIRXwL4qMH3L6pfW/+OplNVWNye5es4ZEssEOnRgpFbOpvacxpnQdKe47uz7IN+VC6EU9sU1CHk+dgg==","signatures":[{"sig":"MEUCIQD0YR0ULzTKb03J6FebZTMxPDwlfMeqJYbkkuf35BXOWwIgdRvjws7RwlvK8gUsWJJkH5+1sHlvYs7mHG1PPdWwk9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87224},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.2.2.tgz","_integrity":"sha512-0T60NzJGIRXwL4qMH3L6pfW/+OplNVWNye5es4ZEssEOnRgpFbOpvacxpnQdKe47uz7IN+VC6EU9sU1CHk+dgg==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.2","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.3.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.2.2_1773163327145_0.14085069387192228","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/supabase-client","version":"1.2.3","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"cf91d66b9e8fdb022a7016a9d7f4b2c128fd1454","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.2.3.tgz","fileCount":16,"integrity":"sha512-fVmhc+jJ+dRmrvZRE6M10+VqTyd6eazKvPt4YU8xxwvXZtLz/kdyMmmhdeDkz8bQDImS9C58UlqGKESX0GKuvw==","signatures":[{"sig":"MEQCIF0MEfu/ed5HC6n7tz/YmbBaiky4ymVHK/DDhd0XHtfEAiAf9My4IYY7I41q3UlVBFiRMtiaGNDlUPx+TpQbl12NWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87438},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.2.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.2.3.tgz","_integrity":"sha512-fVmhc+jJ+dRmrvZRE6M10+VqTyd6eazKvPt4YU8xxwvXZtLz/kdyMmmhdeDkz8bQDImS9C58UlqGKESX0GKuvw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.2.3_1779133618026_0.22419536138219964","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/supabase-client","version":"1.2.4","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"f09fa626be994abeb3937eaca83cc0c6461ea243","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.2.4.tgz","fileCount":16,"integrity":"sha512-/be4PlGqSi2lZAAw95DnGdPQyAZsn0l3uSGKEFKNblv3VmtORcxOpzAOSw5kn7Dp41qWvjFmuXLZrA2mVkYQ6A==","signatures":[{"sig":"MEYCIQC0WI0Q//rjV5ePFo+lNm8JBsW5a/JwmaNUkD4Rl161/gIhAObmW8YgSlw802lXZKJTOUFzTxyJTJl75qdgVs4jXKpz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87652},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.2.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.2.4.tgz","_integrity":"sha512-/be4PlGqSi2lZAAw95DnGdPQyAZsn0l3uSGKEFKNblv3VmtORcxOpzAOSw5kn7Dp41qWvjFmuXLZrA2mVkYQ6A==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.2","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.2.4_1779157316757_0.7680635524472712","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/supabase-client","version":"1.2.5","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"62a99b280d7585d597b1dcb5bb9077734859506f","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.2.5.tgz","fileCount":16,"integrity":"sha512-kF/t1o8Bt3dGOqY0V/Or8/OJuSr0m5F0R3NiZ/UNxVeYiUEW1+SBW8AF8eOKsP3LgE11Bju7vbGgJbbGzaN/tw==","signatures":[{"sig":"MEUCIDfa+Hqirh6B7v/h32ymENkOfd/58dWOz01WXhaMzwA+AiEA3bN1ATw+FnuEpwl1xylqwaE9lCbmUTgZcUsb+HetI0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87866},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.2.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.2.5.tgz","_integrity":"sha512-kF/t1o8Bt3dGOqY0V/Or8/OJuSr0m5F0R3NiZ/UNxVeYiUEW1+SBW8AF8eOKsP3LgE11Bju7vbGgJbbGzaN/tw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.2.5_1779221459247_0.40654713103634466","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/supabase-client","version":"1.3.0","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"aacf3182f8736514e9a5d9fc4e7286683a733ef3","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.3.0.tgz","fileCount":16,"integrity":"sha512-4TD/zkDszX5JsOOp/xWZRSQBL9MACjVMejt9z+u5i6eFzQg95SiNYYMnb9mEz87CO2UuOQ11WrpNGQXx7b++nQ==","signatures":[{"sig":"MEUCICIj6j+cgWAg6lPgwrUImuYC7K4NjHDDMcyKSBEPZJ0vAiEAmcuyQp/i7I/xcytznF1J0AdAcfjuKZQTJE54nPEXEg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88065},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.3.0.tgz","_integrity":"sha512-4TD/zkDszX5JsOOp/xWZRSQBL9MACjVMejt9z+u5i6eFzQg95SiNYYMnb9mEz87CO2UuOQ11WrpNGQXx7b++nQ==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.3.0_1779241447431_0.3458976349490668","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/supabase-client","version":"1.4.0","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"d1bad350b9e830119616afc41c0c2831d6ae765c","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.4.0.tgz","fileCount":10,"integrity":"sha512-Wh41eBJeeV6AV4TfaLEjxdM6XbC3hoR4I76BjrTwAPz8zgqW6mzChVbyJz5xwSlDfLKWmcm9P0FgpWJqQ5XUHw==","signatures":[{"sig":"MEUCIQD5NMBxV+dYNcsy5FRAVGcNQu7oHc+0Tifz4R9cBf2e+gIgOFi4DXHxWPRpX3EvCNKOVtsw8pjeb1kAoXi9/zFeCvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38521},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.4.0.tgz","_integrity":"sha512-Wh41eBJeeV6AV4TfaLEjxdM6XbC3hoR4I76BjrTwAPz8zgqW6mzChVbyJz5xwSlDfLKWmcm9P0FgpWJqQ5XUHw==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.4.0_1779243326987_0.6436180032822472","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/supabase-client","version":"1.5.0","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/supabase-client@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"7e058e76768a92c001d2eb0c8856846c3f55cfe4","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.5.0.tgz","fileCount":10,"integrity":"sha512-bOIlyjAn3o51w4uFTWwIpduuCIRqROiEUzVZ0/+Ey0OgpwI8pWq8F7guhuzgY5RjM4as3JKzfuZ+SG2tNYYlDA==","signatures":[{"sig":"MEUCIQDYsDs/+Tz9dyIc+N5i4qzthZCeNYrZkSKDQj3oX5HJtwIgKFqmz/7/UNIzZrRQn4/If+aodxv+EkqBReRnlkj+MeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38521},"main":"dist/index.js","_from":"file:bernierllc-supabase-client-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.5.0.tgz","_integrity":"sha512-bOIlyjAn3o51w4uFTWwIpduuCIRqROiEUzVZ0/+Ey0OgpwI8pWq8F7guhuzgY5RjM4as3JKzfuZ+SG2tNYYlDA==","bernierllc":{"tags":["core","database","supabase","postgresql","rls"],"category":"core","integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0","@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/supabase-client_1.5.0_1779250194411_0.2917450845812979","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@bernierllc/supabase-client","version":"1.5.1","description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","main":"dist/index.js","types":"dist/index.d.ts","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@supabase/supabase-js":"^2.39.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/logger":"1.7.1"},"devDependencies":{"@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/eslint-plugin":"^6.17.0","@typescript-eslint/parser":"^6.17.0","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3"},"bernierllc":{"category":"core","tags":["core","database","supabase","postgresql","rls"],"integration":{"neverhub":"optional"}},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest --coverage --no-cache","test:coverage":"jest --coverage --no-cache","lint":"eslint src --ext .ts,.tsx","clean":"rm -rf dist"},"_id":"@bernierllc/supabase-client@1.5.1","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","_integrity":"sha512-luh0GtaiEoxlNulTjZhhIlcQGwtvfUWhbU92+Zs5zOKFvBB0WUmL5/NWLp4Z3EpkMiuB6sxYC3VgdT3ui4L4sA==","_resolved":"/home/runner/work/tools/tools/packages/core/supabase-client/bernierllc-supabase-client-1.5.1.tgz","_from":"file:bernierllc-supabase-client-1.5.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-luh0GtaiEoxlNulTjZhhIlcQGwtvfUWhbU92+Zs5zOKFvBB0WUmL5/NWLp4Z3EpkMiuB6sxYC3VgdT3ui4L4sA==","shasum":"907aa4aa8bd9572c52901a4f1db9484db418c6e9","tarball":"https://registry.npmjs.org/@bernierllc/supabase-client/-/supabase-client-1.5.1.tgz","fileCount":10,"unpackedSize":38521,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICJA1ZcpqlvD9NB0+aELkruBdSek7K8vF5jU9qgMZdLGAiEAsvn/Ph8V2AuoW6GC67uSuBvsagwW3bSweayR1wbfMNY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f4625dfb-d731-419f-b3dc-238037958f01"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/supabase-client_1.5.1_1784015724281_0.4627988476253342"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-09T21:32:11.875Z","modified":"2026-07-14T07:55:24.541Z","1.0.0":"2025-11-09T21:32:12.183Z","1.0.1":"2025-11-09T23:52:47.748Z","1.0.2":"2025-12-02T00:39:29.069Z","1.0.3":"2025-12-22T21:09:58.344Z","1.0.4":"2025-12-23T01:47:08.110Z","1.2.0":"2026-01-05T19:47:27.734Z","1.2.2":"2026-03-10T17:22:07.298Z","1.2.3":"2026-05-18T19:46:58.168Z","1.2.4":"2026-05-19T02:21:56.905Z","1.2.5":"2026-05-19T20:10:59.412Z","1.3.0":"2026-05-20T01:44:07.574Z","1.4.0":"2026-05-20T02:15:27.279Z","1.5.0":"2026-05-20T04:09:54.547Z","1.5.1":"2026-07-14T07:55:24.413Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["supabase","database","postgresql","rls","auth","storage","client"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"description":"Supabase client wrapper with Row Level Security, authentication integration, and type-safe queries","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/supabase-client\n\nSupabase client wrapper with Row Level Security, authentication integration, retry logic, and type-safe queries.\n\n## Installation\n\n```bash\nnpm install @bernierllc/supabase-client\n```\n\n## Features\n\n- **Supabase Client Wrapper** - Clean API around Supabase JavaScript SDK\n- **Retry Logic** - Automatic retry for transient failures using `@bernierllc/retry-policy`\n- **Structured Error Handling** - Consistent `SupabaseResult` interface for all operations\n- **Logger Integration** - Built-in logging with `@bernierllc/logger`\n- **Type Safety** - Full TypeScript support with strict typing\n- **CRUD Operations** - Query, insert, update, delete with filters\n- **RPC Support** - Call Supabase RPC functions\n- **Storage Operations** - Upload, download, and manage files\n- **Auth Operations** - Sign in, sign up, sign out, session management\n- **Query Builder** - Flexible query building with filters, ordering, pagination\n\n## Usage\n\n### Basic Setup\n\n```typescript\nimport { SupabaseClient } from '@bernierllc/supabase-client';\n\nconst client = new SupabaseClient({\n  url: process.env.SUPABASE_URL!,\n  anonKey: process.env.SUPABASE_ANON_KEY!,\n  enableRetry: true,\n  maxRetries: 3,\n  debug: false,\n});\n```\n\n### Query Data\n\n```typescript\n// Simple query\nconst result = await client.query('users', {\n  select: '*',\n  limit: 10,\n});\n\nif (result.success) {\n  console.log('Users:', result.data);\n  console.log('Count:', result.count);\n} else {\n  console.error('Error:', result.error);\n}\n\n// Query with filters\nconst activeUsers = await client.query('users', {\n  select: 'id, name, email',\n  filters: [\n    { column: 'status', operator: 'eq', value: 'active' },\n    { column: 'created_at', operator: 'gt', value: '2024-01-01' },\n  ],\n  orderBy: { column: 'created_at', ascending: false },\n  limit: 20,\n  offset: 0,\n});\n\n// Get single record\nconst user = await client.query('users', {\n  filters: [{ column: 'id', operator: 'eq', value: 123 }],\n  single: true,\n});\n```\n\n### Insert Data\n\n```typescript\n// Insert single record\nconst result = await client.insert('users', {\n  name: 'John Doe',\n  email: 'john@example.com',\n  status: 'active',\n});\n\nif (result.success) {\n  console.log('Inserted:', result.data);\n}\n\n// Insert multiple records\nconst bulkResult = await client.insert('users', [\n  { name: 'User 1', email: 'user1@example.com' },\n  { name: 'User 2', email: 'user2@example.com' },\n]);\n\n// Upsert (insert or update)\nconst upsertResult = await client.insert(\n  'users',\n  { id: 123, name: 'Updated Name' },\n  { upsert: true }\n);\n```\n\n### Update Data\n\n```typescript\nconst result = await client.update(\n  'users',\n  { status: 'inactive', updated_at: new Date().toISOString() },\n  [{ column: 'id', operator: 'eq', value: 123 }]\n);\n\nif (result.success) {\n  console.log('Updated:', result.data);\n}\n```\n\n### Delete Data\n\n```typescript\nconst result = await client.delete('users', [\n  { column: 'status', operator: 'eq', value: 'deleted' },\n]);\n\nif (result.success) {\n  console.log('Deleted:', result.data);\n}\n```\n\n### RPC Functions\n\n```typescript\nconst result = await client.rpc('calculate_user_stats', {\n  params: {\n    user_id: 123,\n    start_date: '2024-01-01',\n  },\n});\n\nif (result.success) {\n  console.log('Stats:', result.data);\n}\n```\n\n### Storage Operations\n\n```typescript\n// Upload file\nconst file = new File(['content'], 'document.pdf', { type: 'application/pdf' });\nconst uploadResult = await client.storageUpload('documents', 'user123/document.pdf', file, {\n  contentType: 'application/pdf',\n  cacheControl: '3600',\n  upsert: false,\n});\n\nif (uploadResult.success) {\n  console.log('Uploaded to:', uploadResult.data?.path);\n}\n\n// Download file\nconst downloadResult = await client.storageDownload('documents', 'user123/document.pdf');\n\nif (downloadResult.success) {\n  const blob = downloadResult.data;\n  // Use blob...\n}\n\n// Get public URL\nconst urlResult = client.getStoragePublicUrl('avatars', 'user123/avatar.jpg');\n\nif (urlResult.success) {\n  console.log('Public URL:', urlResult.data);\n}\n```\n\n### Auth Operations\n\n```typescript\n// Sign in\nconst signInResult = await client.authSignIn({\n  email: 'user@example.com',\n  password: 'password123',\n});\n\nif (signInResult.success) {\n  console.log('User:', signInResult.data?.user);\n  console.log('Session:', signInResult.data?.session);\n}\n\n// Sign up\nconst signUpResult = await client.authSignUp({\n  email: 'newuser@example.com',\n  password: 'password123',\n  options: {\n    data: { name: 'New User' },\n    emailRedirectTo: 'https://app.example.com/welcome',\n  },\n});\n\n// Sign out\nawait client.authSignOut();\n\n// Get current session\nconst sessionResult = await client.authGetSession();\n\nif (sessionResult.success && sessionResult.data?.session) {\n  console.log('Active session:', sessionResult.data.session);\n}\n```\n\n### Advanced Usage\n\n```typescript\n// Access underlying Supabase client for advanced features\nconst supabaseClient = client.getClient();\n\n// Use Supabase realtime subscriptions\nconst channel = supabaseClient\n  .channel('users-changes')\n  .on('postgres_changes', { event: '*', schema: 'public', table: 'users' }, (payload) => {\n    console.log('Change received!', payload);\n  })\n  .subscribe();\n```\n\n## Configuration\n\n### SupabaseClientConfig\n\n```typescript\ninterface SupabaseClientConfig {\n  /** Supabase project URL */\n  url: string;\n  /** Supabase anonymous key */\n  anonKey: string;\n  /** Service role key (optional, for admin operations) */\n  serviceRoleKey?: string;\n  /** Enable retry logic for transient failures (default: true) */\n  enableRetry?: boolean;\n  /** Maximum number of retry attempts (default: 3) */\n  maxRetries?: number;\n  /** Enable debug logging (default: false) */\n  debug?: boolean;\n}\n```\n\n### Filter Operators\n\n```typescript\ntype FilterOperator =\n  | 'eq'      // equals\n  | 'neq'     // not equals\n  | 'gt'      // greater than\n  | 'gte'     // greater than or equal\n  | 'lt'      // less than\n  | 'lte'     // less than or equal\n  | 'like'    // pattern match (case-sensitive)\n  | 'ilike'   // pattern match (case-insensitive)\n  | 'in'      // in array\n  | 'is';     // is null/not null\n```\n\n## API Reference\n\n### Query Operations\n\n- `query<T>(table: string, options?: QueryOptions): Promise<SupabaseResult<T[]>>`\n\n### Insert Operations\n\n- `insert<T>(table: string, data: Partial<T> | Partial<T>[], options?: InsertOptions): Promise<SupabaseResult<T[]>>`\n\n### Update Operations\n\n- `update<T>(table: string, data: Partial<T>, filters: QueryFilter[], options?: UpdateOptions): Promise<SupabaseResult<T[]>>`\n\n### Delete Operations\n\n- `delete<T>(table: string, filters: QueryFilter[], options?: DeleteOptions): Promise<SupabaseResult<T[]>>`\n\n### RPC Operations\n\n- `rpc<T>(functionName: string, options?: RPCOptions): Promise<SupabaseResult<T>>`\n\n### Storage Operations\n\n- `storageUpload(bucket: string, path: string, file: File | Blob | Buffer, options?: StorageUploadOptions): Promise<SupabaseResult<{ path: string }>>`\n- `storageDownload(bucket: string, path: string, options?: StorageDownloadOptions): Promise<SupabaseResult<Blob>>`\n- `getStoragePublicUrl(bucket: string, path: string): SupabaseResult<string>`\n\n### Auth Operations\n\n- `authSignIn(options: AuthSignInOptions): Promise<SupabaseResult<{ user: unknown; session: unknown }>>`\n- `authSignUp(options: AuthSignUpOptions): Promise<SupabaseResult<{ user: unknown; session: unknown }>>`\n- `authSignOut(): Promise<SupabaseResult<void>>`\n- `authGetSession(): Promise<SupabaseResult<{ session: unknown }>>`\n\n### Utility\n\n- `getClient(): SupabaseClient` - Get underlying Supabase client for advanced usage\n\n## Error Handling\n\nAll methods return a `SupabaseResult<T>` with consistent structure:\n\n```typescript\ninterface SupabaseResult<T = unknown> {\n  success: boolean;\n  data?: T;\n  error?: string;\n  count?: number;\n}\n```\n\nAlways check `success` before accessing `data`:\n\n```typescript\nconst result = await client.query('users');\n\nif (result.success) {\n  // Safe to access result.data\n  console.log(result.data);\n} else {\n  // Handle error\n  console.error(result.error);\n}\n```\n\n## Retry Logic\n\nThe client automatically retries transient failures using exponential backoff:\n\n- Initial delay: 1000ms\n- Max delay: 10000ms\n- Jitter: enabled\n- Default max retries: 3\n\nDisable retry for specific operations:\n\n```typescript\nconst client = new SupabaseClient({\n  url: process.env.SUPABASE_URL!,\n  anonKey: process.env.SUPABASE_ANON_KEY!,\n  enableRetry: false, // Disable retry\n});\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Integrated\n\n**Justification**: This package uses `@bernierllc/logger` for structured logging of all database operations. Logs include query execution, authentication events, retry attempts, and error details to help with debugging and monitoring.\n\n**Pattern**: Direct integration - logger is a required dependency for this package.\n\n### NeverHub Integration\n**Status**: Not applicable\n\n**Justification**: This is a core database client package that provides Supabase connectivity. It does not participate in service discovery, event publishing, or service mesh operations. Database clients are infrastructure utilities that don't require service registration or discovery.\n\n**Pattern**: Core utility - no service mesh integration needed. Service-level packages that use this client can integrate with NeverHub if needed.\n\n### Docs-Suite Integration\n**Status**: Ready\n\n**Format**: TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.\n\n## Dependencies\n\n- `@supabase/supabase-js` - Official Supabase JavaScript client\n- `@bernierllc/logger` - Structured logging\n- `@bernierllc/retry-policy` - Retry logic and backoff calculation\n\n## Testing\n\n```bash\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests once (no watch)\nnpm run test:run\n```\n\n## Building\n\n```bash\n# Build TypeScript\nnpm run build\n\n# Clean build artifacts\nnpm run clean\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## See Also\n\n- [@bernierllc/logger](../logger) - Structured logging\n- [@bernierllc/retry-policy](../retry-policy) - Retry logic\n- [Supabase Documentation](https://supabase.com/docs) - Official Supabase docs\n","readmeFilename":"README.md"}