{"_id":"@alpacacloud/js","_rev":"8-3fe3701dfbc05a44cef510946dfc1e8d","name":"@alpacacloud/js","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"@alpacacloud/js","version":"0.1.0","keywords":["alpacacloud","database","supabase","postgres","backend","sdk"],"author":{"name":"AlpacaCloud"},"license":"MIT","_id":"@alpacacloud/js@0.1.0","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/alpacacloud/js/issues"},"dist":{"shasum":"10097ac01f1022b7ab6d89502bcca9a374867e79","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-0.1.0.tgz","fileCount":18,"integrity":"sha512-aLagyNsBMl40mmHWghpaPhdiUL1ZUk723OCMo9bEHPNppi2l+W80e9sf9Etj88WaRKyAtVcphdUZcDOBOoj9Gw==","signatures":[{"sig":"MEYCIQCDiKcrbNzbTtERb4HZlwVSBIvoDqRUOAcclWRmYxnNKwIhAL5RerJhUUIDC129aR+Am8PFuaOSLVOPUnya7aeLMHVv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155260},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ff97a32e2feb00f992b1c419ae998c5e53e0a159","scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/alpacacloud/js.git","type":"git"},"_npmVersion":"10.8.2","description":"The official JavaScript/TypeScript client for AlpacaCloud","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_0.1.0_1774938513911_0.5451108491305496","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alpacacloud/js","version":"0.1.1","keywords":["alpacabase","database","realtime","auth","postgres"],"license":"MIT","_id":"@alpacacloud/js@0.1.1","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://docs.alpaca-cloud.com","bugs":{"url":"https://github.com/alpacabase/js/issues"},"dist":{"shasum":"f93f28564869a3b3ff34423ac9f14ff25f8ce2d0","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-0.1.1.tgz","fileCount":6,"integrity":"sha512-r5OcKJG4QbWd+9AQ7U5ffg0qSZeArhb+OZum8Qm4Sp8bW26sznjs4qTI5rx1sbgfhZEXF0PqyWG8ZUOuZpgXXA==","signatures":[{"sig":"MEUCICLZholRoOlyssBWA92Z87HizdFs2iFHSZyTfgsd2kRBAiEA1AUHuCS21ctTaljSXMiUn4j9PPFDaFjJaodv4APaGKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45470},"main":"dist/alpacabase.js","types":"dist/alpacabase.d.ts","module":"dist/alpacabase.mjs","exports":{".":{"types":"./dist/alpacabase.d.ts","import":"./dist/alpacabase.mjs","require":"./dist/alpacabase.js"}},"gitHead":"4b7a7736a22f571dcb93ddf2d9b7ad7968ceb066","scripts":{"dev":"tsup src/alpacabase.ts --watch","build":"tsup src/alpacabase.ts --format cjs,esm --dts --out-dir dist"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/alpacabase/js.git","type":"git"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for AlpacaBase (alpaca-cloud.com)","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_0.1.1_1775680904788_0.21978449736853944","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@alpacacloud/js","version":"1.0.0","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","_id":"@alpacacloud/js@1.0.0","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"dist":{"shasum":"dae0db2f3b950e6ba5e75d1568978f46143fcd94","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.0.0.tgz","fileCount":6,"integrity":"sha512-YW6O0cvcjLZmhGBV+xNDIcgGr6oiF2q+K8Z8WCM1wTRYRwJCdLR1FTxXzkszY+ZtDOfRELW0Q94lN3jWg3edCw==","signatures":[{"sig":"MEUCICH53CqG5j8yHvACHFC2rqW1FTX5S+Cap0cBkTtlPP2zAiEAtKhpPTrUsxgUjAMFoIpUL9ZsuYo6a9D88qZzuLZM+Fs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104990},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"gitHead":"7f051813b4428b58659f23c0780a965bbb810cc2","scripts":{"dev":"tsup src/alpacabase.ts --watch","build":"tsup src/alpacabase.ts --format cjs,esm --dts --out-dir dist --clean"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/Melgencer/alpaca-cloud.git","type":"git","directory":"sdk"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_1.0.0_1775696359324_0.976050199901612","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alpacacloud/js","version":"1.0.1","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","_id":"@alpacacloud/js@1.0.1","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"dist":{"shasum":"b220c742b2516ab689c9cfa3562cf9abff4a9a2e","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.0.1.tgz","fileCount":6,"integrity":"sha512-EMf8i+VcEd7R4CFYelg4zlM2VrgEUfsUgc7G8UdEmvudus+FwYczyBCfUf3ADfleTnVILmrJ9am/qSSfhBd2dQ==","signatures":[{"sig":"MEUCIQDpoNG7aHlGpU5PjD++52jmSubcQiJmdQMS4ZdcXrTADwIgAjEZjVQH+VfvZyXbjmkRF73iZ/LtHV/ArFwcIN64qlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104643},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1555e13e5217310bf698fb1c3c182fa3b28558bc","scripts":{"dev":"tsup src/index.ts --watch","build":"tsup src/index.ts --format cjs,esm --dts --out-dir dist --clean"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/Melgencer/alpaca-cloud.git","type":"git","directory":"sdk"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_1.0.1_1776133853235_0.9858923729931506","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alpacacloud/js","version":"1.0.2","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","_id":"@alpacacloud/js@1.0.2","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"dist":{"shasum":"965b8413ba93f6e192aed8ce9f51a759ff3f2622","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.0.2.tgz","fileCount":6,"integrity":"sha512-v/H0ifTOkOIsHAfiTzjI7w0akLKzHgeTotXl16JfMlOPSOP4wk7yCwGPej5KbVdRQ9OdSi1OL79eFJyKWYl7pw==","signatures":[{"sig":"MEUCICb9K52jibgcB9XS7ulxC7UlUJ1DWtAIoW+jbCplqYSBAiEA1JVAIaCrH4esoINvsEgdhHfAIjRej49TeyOD+eL70TY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104987},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"39f0398a498d600a1410dbbe57fc531467b8613d","scripts":{"dev":"tsup src/index.ts --watch","build":"tsup src/index.ts --format cjs,esm --dts --out-dir dist --clean"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/Melgencer/alpaca-cloud.git","type":"git","directory":"sdk"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_1.0.2_1776927697993_0.15062781055688523","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alpacacloud/js","version":"1.0.3","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","_id":"@alpacacloud/js@1.0.3","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"dist":{"shasum":"233dd05fa969c7883c38ee6c2e7ae0c60d0559b7","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.0.3.tgz","fileCount":6,"integrity":"sha512-9ZWTuAYRh4MCqNrDRD7KG0rI/+jFFtC6iTWEEcDHXjhNjtwX1K7IBEWEpTjY3yb5+wb33gm1o8Wre7tFmo+pGA==","signatures":[{"sig":"MEUCIFLUVNPqsd2d5Jrafrwg1ELT+EnH0/Emj+dxQg8nOczhAiEAsMjqp/181gljFrltUd0h97yATpuAMuxxJ11CkL4awAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108179},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"080bf45eadaf60cf5958dd2212c3b79452ba2b15","scripts":{"dev":"tsup src/index.ts --watch","build":"tsup src/index.ts --format cjs,esm --dts --out-dir dist --clean"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/Melgencer/alpaca-cloud.git","type":"git","directory":"sdk"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_1.0.3_1777026307088_0.9319925575248542","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@alpacacloud/js","version":"1.0.4","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","_id":"@alpacacloud/js@1.0.4","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"dist":{"shasum":"d9ab1a9baf8e65ee9cb25eb38ee7cb1d98d4443a","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.0.4.tgz","fileCount":6,"integrity":"sha512-t2l6XCq0OnFsMZU2DWgXMxHPamMl42HknJsYwcFWnn4xwFb1MVL+RF/TXbmauxmSSe6XdSY/rrh843YPZQlOiQ==","signatures":[{"sig":"MEYCIQCAE2emtQiLLa/2ZLV0OJJIHQl42Xmw2CA1GxIPcDah2wIhAOageV6TTpg2c/n+dSBsre0gfwKnTwQq3rPVMXtA7DI7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108113},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"825a1ab90516827a4adc06f2f449e799844f7100","scripts":{"dev":"tsup src/index.ts --watch","build":"tsup src/index.ts --format cjs,esm --dts --out-dir dist --clean"},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"repository":{"url":"git+https://github.com/Melgencer/alpaca-cloud.git","type":"git","directory":"sdk"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_1.0.4_1777073651614_0.08671913497575501","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alpacacloud/js","version":"1.1.0","description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --out-dir dist --clean","dev":"tsup src/index.ts --watch"},"keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"license":"MIT","devDependencies":{"tsup":"^8.5.1","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/Melgencer/alpaca-cloud.git","directory":"sdk"},"homepage":"https://alpaca-cloud.com","bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"_id":"@alpacacloud/js@1.1.0","gitHead":"f81ce001b7d3036413fca5305c0d29b2c6064ec6","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-uyxA+vOsxoUUw9fP2oNgUtR/3nqZsoetrZogMybWF/0U1F0CBjEHzqzGca95JLSaMDkI6F40+iBtZiY8RBnChw==","shasum":"7bba5eef694442d485615ad744edd5a6c208f8f7","tarball":"https://registry.npmjs.org/@alpacacloud/js/-/js-1.1.0.tgz","fileCount":6,"unpackedSize":126625,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCDUqc2i6CDItLXslJaq4d0C6uDLmwgWAuLn6w674JbSgIgemvr0VUOLur+8VLA8nhIKtyU0KbRSxyi5BPIZgKG290="}]},"_npmUser":{"name":"melgencer","email":"mel.genc@windowslive.com"},"directories":{},"maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/js_1.1.0_1781659048593_0.06350550127713839"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-31T06:28:33.818Z","modified":"2026-06-17T01:17:28.844Z","0.1.0":"2026-03-31T06:28:34.069Z","0.1.1":"2026-04-08T20:41:44.926Z","1.0.0":"2026-04-09T00:59:19.508Z","1.0.1":"2026-04-14T02:30:53.390Z","1.0.2":"2026-04-23T07:01:38.134Z","1.0.3":"2026-04-24T10:25:07.223Z","1.0.4":"2026-04-24T23:34:11.753Z","1.1.0":"2026-06-17T01:17:28.745Z"},"bugs":{"url":"https://github.com/Melgencer/alpaca-cloud/issues"},"license":"MIT","homepage":"https://alpaca-cloud.com","keywords":["alpaca-cloud","alpacacloud","database","realtime","auth","storage","postgres","typescript"],"repository":{"type":"git","url":"git+https://github.com/Melgencer/alpaca-cloud.git","directory":"sdk"},"description":"Official JavaScript/TypeScript client for Alpaca Cloud. Zero dependencies.","maintainers":[{"name":"melgencer","email":"mel.genc@windowslive.com"}],"readme":"# @alpacacloud/js\r\n\r\nThe official JavaScript/TypeScript client for [Alpaca Cloud](https://alpaca-cloud.com).\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @alpacacloud/js\r\n# or\r\nyarn add @alpacacloud/js\r\n# or\r\npnpm add @alpacacloud/js\r\n```\r\n\r\n## Quick Start\r\n\r\n```ts\r\nimport { createClient } from '@alpacacloud/js'\r\n\r\nconst alp = createClient(\r\n  'https://your-project.alpaca-cloud.com',\r\n  'your-anon-key'\r\n)\r\n```\r\n\r\n---\r\n\r\n## Database\r\n\r\n```ts\r\n// Fetch rows\r\nconst { data, error } = await alp\r\n  .from('posts')\r\n  .select('id, title, author(name)')\r\n  .eq('published', true)\r\n  .order('created_at', { ascending: false })\r\n  .limit(10)\r\n\r\n// Insert\r\nconst { data } = await alp\r\n  .from('posts')\r\n  .insert({ title: 'Hello World', published: false })\r\n\r\n// Update\r\nawait alp.from('posts').update({ published: true }).eq('id', 123)\r\n\r\n// Delete\r\nawait alp.from('posts').delete().eq('id', 123)\r\n\r\n// Single row\r\nconst { data: post } = await alp\r\n  .from('posts')\r\n  .select('*')\r\n  .eq('id', 1)\r\n  .single()\r\n\r\n// Count\r\nconst { count } = await alp\r\n  .from('posts')\r\n  .select('*', { count: 'exact' })\r\n  .eq('published', true)\r\n  .count()\r\n```\r\n\r\n---\r\n\r\n## Auth\r\n\r\n```ts\r\n// Sign up\r\nconst { data, error } = await alp.auth.signUp({\r\n  email: 'user@example.com',\r\n  password: 'supersecret',\r\n})\r\n\r\n// Sign in\r\nconst { data, error } = await alp.auth.signInWithPassword({\r\n  email: 'user@example.com',\r\n  password: 'supersecret',\r\n})\r\n\r\n// OAuth (Google, GitHub, Discord...)\r\nawait alp.auth.signInWithOAuth({ provider: 'github' })\r\n\r\n// Magic link\r\nawait alp.auth.signInWithOTP({ email: 'user@example.com' })\r\n\r\n// Get current user\r\nconst { data: { user } } = await alp.auth.getUser()\r\n\r\n// Listen for auth changes\r\nalp.auth.onAuthStateChange((event, session) => {\r\n  console.log(event, session?.user?.email)\r\n})\r\n\r\n// Sign out\r\nawait alp.auth.signOut()\r\n```\r\n\r\n---\r\n\r\n## Storage\r\n\r\n```ts\r\n// Upload a file\r\nconst { data, error } = await alp\r\n  .storage\r\n  .from('avatars')\r\n  .upload('user-123.png', file, { contentType: 'image/png' })\r\n\r\n// Get a public URL\r\nconst { data: { publicUrl } } = alp\r\n  .storage\r\n  .from('avatars')\r\n  .getPublicUrl('user-123.png')\r\n\r\n// Download\r\nconst { data: blob } = await alp.storage.from('avatars').download('user-123.png')\r\n\r\n// List files\r\nconst { data: files } = await alp.storage.from('avatars').list('users/')\r\n\r\n// Delete\r\nawait alp.storage.from('avatars').remove(['user-123.png'])\r\n\r\n// Signed URL (private files)\r\nconst { data: { signedUrl } } = await alp\r\n  .storage.from('private').createSignedUrl('report.pdf', 60) // 60 seconds\r\n\r\n// Create a bucket\r\nawait alp.storage.createBucket('avatars', { public: true })\r\n```\r\n\r\n---\r\n\r\n## Realtime\r\n\r\n```ts\r\n// Subscribe to database changes\r\nconst channel = alp\r\n  .realtime\r\n  .channel('db-changes')\r\n  .on('postgres_changes', { schema: 'public', table: 'messages', eventType: '*' }, (payload) => {\r\n    console.log('Change:', payload.eventType, payload.new)\r\n  })\r\n  .subscribe()\r\n\r\n// Broadcast (pub/sub between clients)\r\nconst room = alp.realtime.channel('room:general')\r\n\r\nroom.on('broadcast', { event: 'cursor' }, (msg) => {\r\n  console.log('Cursor moved:', msg.payload)\r\n})\r\nroom.subscribe()\r\n\r\nroom.send({ type: 'broadcast', event: 'cursor', payload: { x: 100, y: 200 } })\r\n\r\n// Presence (who's online)\r\nroom.on('presence', { event: 'sync' }, ({ currentPresences }) => {\r\n  console.log('Online users:', currentPresences)\r\n})\r\nroom.track({ userId: 'abc', name: 'Mel' })\r\n\r\n// Cleanup\r\nawait alp.realtime.removeChannel(channel)\r\n```\r\n\r\n---\r\n\r\n## SQL over HTTP (edge driver)\r\n\r\nRun parameterised SQL over HTTPS — works in edge runtimes (Cloudflare Workers, Vercel Edge,\r\nDeno) and inside Functions/Sandboxes, no TCP needed. RLS is enforced by your token's role.\r\n\r\n```ts\r\n// single query\r\nconst { data, error } = await alp.sql('select * from posts where id = $1', [postId])\r\nconsole.log(data.rows)\r\n\r\n// atomic batch (one transaction)\r\nconst { data } = await alp.sql([\r\n  { query: 'insert into logs(msg) values ($1)', params: ['hi'] },\r\n  { query: 'select count(*) from logs' },\r\n])\r\nconsole.log(data.results)\r\n```\r\n\r\n---\r\n\r\n## Sandboxes\r\n\r\nEphemeral, isolated environments to run code (E2B / Fly-Machines style). Sandboxes are\r\naccount-scoped, so point the client at the platform API with `apiUrl`:\r\n\r\n```ts\r\nconst alp = createClient(PROJECT_URL, ANON_KEY, {\r\n  apiUrl: 'https://api.alpaca-cloud.com',\r\n})\r\n\r\n// One-shot: run a snippet and get the result\r\nconst { data } = await alp.sandboxes.runCode({ language: 'python', code: 'print(2**10)' })\r\nconsole.log(data.stdout) // \"1024\\n\"\r\n\r\n// Or manage a session: create → exec / files → kill\r\nconst { data: { handle } } = await alp.sandboxes.create({ template: 'python' })\r\nawait handle.writeFile('data.txt', 'hello')\r\nconst res = await handle.exec({ cmd: 'cat data.txt && python --version' })\r\nconsole.log(res.data.stdout)\r\nawait handle.kill()\r\n```\r\n\r\n---\r\n\r\n## TypeScript\r\n\r\nFully typed. Pass your row type as a generic:\r\n\r\n```ts\r\ninterface Post { id: number; title: string; published: boolean }\r\n\r\nconst { data } = await alp.from<Post>('posts').select('*')\r\n// data is Post[] | null\r\n```\r\n\r\n---\r\n\r\nMade with 🦙 by the [Alpaca Cloud](https://alpaca-cloud.com) team.\r\n","readmeFilename":"README.md"}