{"_id":"iceberg-js","_rev":"8-ee1395360c52fa5ed76dd515f233a66f","name":"iceberg-js","dist-tags":{"latest":"0.8.1"},"versions":{"0.0.0":{"name":"iceberg-js","version":"0.0.0","author":"","license":"ISC","_id":"iceberg-js@0.0.0","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/supabase-js#readme","bugs":{"url":"https://github.com/supabase/supabase-js/issues"},"dist":{"shasum":"dfe50cdfb74f80b509cfe2e4ce4d997a7aef670b","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.0.0.tgz","fileCount":1,"integrity":"sha512-+hJDC9avwJGBVi/nm22NDAQz+fCnD5Hs9UtNjKiyMJpQp+qQr8JXkD3za1p84+puLpWPsZI1ng7uvI3Wsd+ZcQ==","signatures":[{"sig":"MEUCIQDeHT7nqnG9onwjIJwEHYiTiA1uvsOYhm7dQ8Mqr0pIcQIgGMvNA2llxVqbxyFSyf6IdDHe+FYmNijlPvkjHq47ikw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"etienne_supa","email":"etienne@supabase.io"},"repository":{"url":"git+https://github.com/supabase/supabase-js.git","type":"git"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.0.0_1763644284782_0.6949466208832125","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"iceberg-js","version":"0.0.1","author":"","license":"ISC","_id":"iceberg-js@0.0.1","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"c7114b37334aa39d584f4bf011537661e3f355cb","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.0.1.tgz","fileCount":1,"integrity":"sha512-BHECxAVyrRXtBQYAimgtc/mjTEcL4oJpo7K00qWYyxjP/Npd3jvISMXPkohbyo1LnGF5D2xvcVJjRUWIAduw9w==","signatures":[{"sig":"MEYCIQDwnySXGcFCgluWbWQnNcu/WnKaD1gq5YMl2Q1377FXkQIhANpNZQGFv2UmWUjs0sKN7eqXCPS2vmA6yk4/SZYr0mqB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"etienne_supa","email":"etienne@supabase.io"},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.0.1_1763654841731_0.006583918526967603","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"iceberg-js","version":"0.1.0","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","_id":"iceberg-js@0.1.0","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"356d73914aef657a8c36a83b70682c76d1a2d91c","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.1.0.tgz","fileCount":9,"integrity":"sha512-Tsi34XPBojlxNwCg/uoKOQ0nKmHLn8evbcMfBAyRSorYHGEd3n3V0kXbDtTIVsuOx+cxY8I199oVLZvqtn1nAQ==","signatures":[{"sig":"MEYCIQC7zY2x2fx5GwuzbZtQqcIETfzjU2rrsCC5vdl5O3L32gIhAOQ1p4NmB2UBycdqLPDe7y/p8U9e1Ga0Mnr5rG+ewagN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111443},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"f391d7bd878d0abb17029b3ecc6eb685e786daf0","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build","format":"prettier --write .","test:watch":"vitest watch","type-check":"tsc --noEmit","test:integration":"bash scripts/test-integration.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cd4a4dbd-9716-4c38-9655-217fa50d778d"}},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"11.6.3","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.12","globals":"^16.5.0","prettier":"^3.6.2","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^20.0.0","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","typescript-eslint":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.1.0_1763719826328_0.3926692260361304","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"iceberg-js","version":"0.5.2","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","_id":"iceberg-js@0.5.2","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"f947527a5c18dcd1dcde6a7d63924c475a59b652","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.5.2.tgz","fileCount":9,"integrity":"sha512-CzEsXvdcqOEWAGUsedWZ95IeLIJ7BTlJsE+fMuXck9KafaX6hvsVepUzZoMC2sI+AHT4cF8s6TrBj+TLSOGDYA==","signatures":[{"sig":"MEYCIQCjPqBxCGnhYT/r5vho+XAq1ZlcHT5GyMfdWnlDan7BvAIhAITNFq9jVLj/9DiQgVgmTZgqZTf0JYnfCRBUS3UaRvsO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111636},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"b3dee2e20b104f3b76cdfbe6eee98ea1a0057886","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build","format":"prettier --write .","test:watch":"vitest watch","type-check":"tsc --noEmit","test:integration":"bash scripts/test-integration.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8952e9f5-4a64-400b-9f42-c81a8677cd4c"}},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"11.6.3","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.12","globals":"^16.5.0","prettier":"^3.6.2","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^20.0.0","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","typescript-eslint":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.5.2_1763722055940_0.8204199832068231","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"iceberg-js","version":"0.6.0","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","_id":"iceberg-js@0.6.0","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"ec2240bc7407ecffaf174e072f8a5725ca2b0cdb","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.6.0.tgz","fileCount":9,"integrity":"sha512-YJhyxobghHH57WbRVIlCYcFXDtfAJb/r+5Uz7rxLicpFwX2be1rQD2oVOktyyLAE+vlpgGTezvKkFPLfQLSPfw==","signatures":[{"sig":"MEQCIADfBsvNP+Em1tUN+snkjiQi7Z4mymcLpmTkPBLlQWL1AiATFHQ5O+eNURIPMxz3wKnWl5i/soFC/reZQqgLIq9NJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115682},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"default":"./dist/index.mjs","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"734e3f187ea16224c20821ebcadc3195fd20188b","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build","format":"prettier --write .","test:watch":"vitest watch","type-check":"tsc --noEmit","test:integration":"bash scripts/test-integration.sh","test:compatibility":"bash test-compatibility/run-all.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8952e9f5-4a64-400b-9f42-c81a8677cd4c"}},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"11.6.3","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.12","globals":"^16.5.0","prettier":"^3.6.2","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^20.0.0","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","typescript-eslint":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.6.0_1763732246653_0.9768434778921187","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"iceberg-js","version":"0.7.0","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","_id":"iceberg-js@0.7.0","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"8dae401feea8a3629417fad85d2f08d6e71aaf61","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.7.0.tgz","fileCount":9,"integrity":"sha512-7VZYpt4OiOYh3w7yv04lAd8AjmAZAMamP7I83Ml/zDT4lGd7Lnb5ibrJ45euIgx0Qb4DEkud6+4OTq+IS/Wf0g==","signatures":[{"sig":"MEUCIEG6GMLs5Vqdzc0pqX5m47aDgvI8BilH5RAT9cF5fMTrAiEAr7DyJLWbuXStNvYY0uSEubG588n2jsGmnS8SNXNPI5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141887},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"default":"./dist/index.mjs","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"e5624d94d2594a3f212fb192e196c8636d64dcf2","scripts":{"dev":"tsup --watch","docs":"typedoc src/index.ts","lint":"eslint .","test":"vitest run","build":"tsup","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build","format":"prettier --write .","test:watch":"vitest watch","type-check":"tsc --noEmit","test:integration":"bash scripts/test-integration.sh","test:compatibility":"bash test/compatibility/run-all.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8952e9f5-4a64-400b-9f42-c81a8677cd4c"}},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"11.6.3","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.12","globals":"^16.5.0","typedoc":"^0.28.14","prettier":"^3.6.2","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^20.0.0","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","typescript-eslint":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.7.0_1763735024209_0.3901422780692918","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"iceberg-js","version":"0.8.0","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","_id":"iceberg-js@0.8.0","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"homepage":"https://github.com/supabase/iceberg-js#readme","bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"dist":{"shasum":"443e33b0c6676782bf7b74210292b3ccbea6432b","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.0.tgz","fileCount":9,"integrity":"sha512-kmgmea2nguZEvRqW79gDqNXyxA3OS5WIgMVffrHpqXV4F/J4UmNIw2vstixioLTNSkd5rFB8G0s3Lwzogm6OFw==","signatures":[{"sig":"MEQCIAcI8Yn+haEHc4SMufNyOQxQ8Nooy+Is0yVCfKX6ihc4AiAEWbbOUtjLJD5sp81l2XpCy9CbkeZf8g4k7ee2EPPboQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":152871},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"default":"./dist/index.mjs","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"28478565bc9b6c46622a4d1681a0c58813c02f50","scripts":{"dev":"tsup --watch","docs":"typedoc src/index.ts","lint":"eslint .","test":"vitest run","build":"tsup","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build","format":"prettier --write .","test:watch":"vitest watch","type-check":"tsc --noEmit","test:integration":"bash scripts/test-integration.sh","test:compatibility":"bash test/compatibility/run-all.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8952e9f5-4a64-400b-9f42-c81a8677cd4c"}},"repository":{"url":"git+https://github.com/supabase/iceberg-js.git","type":"git"},"_npmVersion":"11.6.3","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.12","globals":"^16.5.0","typedoc":"^0.28.14","prettier":"^3.6.2","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^20.0.0","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","typescript-eslint":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/iceberg-js_0.8.0_1764073592345_0.6266092083493489","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"iceberg-js","version":"0.8.1","description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"default":"./dist/index.mjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","docs":"typedoc src/index.ts","format":"prettier --write .","lint":"eslint .","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest watch","test:integration":"bash scripts/test-integration.sh","test:integration:ci":"bash scripts/test-integration.sh --cleanup","test:compatibility":"bash test/compatibility/run-all.sh","check":"pnpm lint && pnpm type-check && pnpm test && pnpm build"},"keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"author":{"name":"mandarini"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/supabase/iceberg-js.git"},"bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"homepage":"https://github.com/supabase/iceberg-js#readme","publishConfig":{"access":"public"},"devDependencies":{"@eslint/js":"^9.39.1","@eslint/json":"^0.14.0","@eslint/markdown":"^7.5.1","@types/node":"^20.0.0","eslint":"^9.39.1","globals":"^16.5.0","jiti":"^2.6.1","prettier":"^3.6.2","tsup":"^8.5.1","typedoc":"^0.28.14","typescript":"^5.9.3","typescript-eslint":"^8.47.0","vitest":"^4.0.12"},"engines":{"node":">=20.0.0"},"gitHead":"a4069ae211af5dc6d30019dfc57677d83f4605c7","_id":"iceberg-js@0.8.1","_nodeVersion":"22.21.1","_npmVersion":"11.6.4","dist":{"integrity":"sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==","shasum":"47d893468293a010385e1c70123f29d0fc1d9912","tarball":"https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz","fileCount":9,"unpackedSize":172346,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iceberg-js@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBi8PkaBfdDFnie9bBXw1PVi0p9vrEIkyseWQdVvhd77AiEAkGcsNCooUh9DXjRkB6dC6MIkORqv0NDBFTjTmDn9EbQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8952e9f5-4a64-400b-9f42-c81a8677cd4c"}},"directories":{},"maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iceberg-js_0.8.1_1764935048997_0.2948236143263252"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-20T13:11:24.781Z","modified":"2025-12-05T11:44:09.493Z","0.0.0":"2025-11-20T13:11:24.963Z","0.0.1":"2025-11-20T16:07:21.929Z","0.1.0":"2025-11-21T10:10:26.503Z","0.5.2":"2025-11-21T10:47:36.127Z","0.6.0":"2025-11-21T13:37:26.855Z","0.7.0":"2025-11-21T14:23:44.401Z","0.8.0":"2025-11-25T12:26:32.540Z","0.8.1":"2025-12-05T11:44:09.133Z"},"bugs":{"url":"https://github.com/supabase/iceberg-js/issues"},"author":{"name":"mandarini"},"license":"MIT","homepage":"https://github.com/supabase/iceberg-js#readme","keywords":["iceberg","apache-iceberg","rest-catalog","data-lake","catalog"],"repository":{"type":"git","url":"git+https://github.com/supabase/iceberg-js.git"},"description":"A small, framework-agnostic JavaScript/TypeScript client for the Apache Iceberg REST Catalog","maintainers":[{"name":"etienne_supa","email":"etienne@supabase.io"}],"readme":"# iceberg-js\n\n[![CI](https://github.com/supabase/iceberg-js/actions/workflows/ci.yml/badge.svg)](https://github.com/supabase/iceberg-js/actions/workflows/ci.yml)\n[![npm version](https://badge.fury.io/js/iceberg-js.svg)](https://www.npmjs.com/package/iceberg-js)\n[![pkg.pr.new](https://pkg.pr.new/badge/supabase/iceberg-js)](https://pkg.pr.new/~/supabase/iceberg-js)\n\nA small, framework-agnostic JavaScript/TypeScript client for the **Apache Iceberg REST Catalog**.\n\n## Features\n\n- **Generic**: Works with any Iceberg REST Catalog implementation, not tied to any specific vendor\n- **Minimal**: Thin HTTP wrapper over the official REST API, no engine-specific logic\n- **Type-safe**: First-class TypeScript support with strongly-typed request/response models\n- **Fetch-based**: Uses native `fetch` API with support for custom implementations\n- **Universal**: Targets Node 20+ and modern browsers (ES2020)\n- **Catalog-only**: Focused on catalog operations (no data reading/Parquet support in v0.1.0)\n\n## Documentation\n\n📚 **Full API documentation**: [supabase.github.io/iceberg-js](https://supabase.github.io/iceberg-js/)\n\n## Installation\n\n```bash\nnpm install iceberg-js\n```\n\n## Quick Start\n\n```typescript\nimport { IcebergRestCatalog } from 'iceberg-js'\n\nconst catalog = new IcebergRestCatalog({\n  baseUrl: 'https://my-catalog.example.com/iceberg/v1',\n  auth: {\n    type: 'bearer',\n    token: process.env.ICEBERG_TOKEN,\n  },\n})\n\n// Create a namespace\nawait catalog.createNamespace({ namespace: ['analytics'] })\n\n// Create a table\nawait catalog.createTable(\n  { namespace: ['analytics'] },\n  {\n    name: 'events',\n    schema: {\n      type: 'struct',\n      fields: [\n        { id: 1, name: 'id', type: 'long', required: true },\n        { id: 2, name: 'timestamp', type: 'timestamp', required: true },\n        { id: 3, name: 'user_id', type: 'string', required: false },\n      ],\n      'schema-id': 0,\n      'identifier-field-ids': [1],\n    },\n    'partition-spec': {\n      'spec-id': 0,\n      fields: [],\n    },\n    'write-order': {\n      'order-id': 0,\n      fields: [],\n    },\n    properties: {\n      'write.format.default': 'parquet',\n    },\n  }\n)\n```\n\n## API Reference\n\n### Constructor\n\n#### `new IcebergRestCatalog(options)`\n\nCreates a new catalog client instance.\n\n**Options:**\n\n- `baseUrl` (string, required): Base URL of the REST catalog\n- `auth` (AuthConfig, optional): Authentication configuration\n- `catalogName` (string, optional): Catalog name for multi-catalog servers. When specified, requests are sent to `{baseUrl}/v1/{catalogName}/...`. For example, with `baseUrl: 'https://host.com'` and `catalogName: 'prod'`, requests go to `https://host.com/v1/prod/namespaces`\n- `fetch` (typeof fetch, optional): Custom fetch implementation\n- `accessDelegation` (AccessDelegation[], optional): Access delegation mechanisms to request from the server\n\n**Authentication types:**\n\n```typescript\n// No authentication\n{ type: 'none' }\n\n// Bearer token\n{ type: 'bearer', token: 'your-token' }\n\n// Custom header\n{ type: 'header', name: 'X-Custom-Auth', value: 'secret' }\n\n// Custom function\n{ type: 'custom', getHeaders: async () => ({ 'Authorization': 'Bearer ...' }) }\n```\n\n**Access Delegation:**\n\nAccess delegation allows the catalog server to provide temporary credentials or sign requests on your behalf:\n\n```typescript\nimport { IcebergRestCatalog } from 'iceberg-js'\n\nconst catalog = new IcebergRestCatalog({\n  baseUrl: 'https://catalog.example.com/iceberg/v1',\n  auth: { type: 'bearer', token: 'your-token' },\n  // Request vended credentials for data access\n  accessDelegation: ['vended-credentials'],\n})\n\n// The server may return temporary credentials in the table metadata\nconst metadata = await catalog.loadTable({ namespace: ['analytics'], name: 'events' })\n// Use credentials from metadata.config to access table data files\n```\n\nSupported delegation mechanisms:\n\n- `vended-credentials`: Server provides temporary credentials (e.g., AWS STS tokens) for accessing table data\n- `remote-signing`: Server signs data access requests on behalf of the client\n\n### Namespace Operations\n\n#### `listNamespaces(parent?: NamespaceIdentifier): Promise<NamespaceIdentifier[]>`\n\nList all namespaces, optionally under a parent namespace.\n\n```typescript\nconst namespaces = await catalog.listNamespaces()\n// [{ namespace: ['default'] }, { namespace: ['analytics'] }]\n\nconst children = await catalog.listNamespaces({ namespace: ['analytics'] })\n// [{ namespace: ['analytics', 'prod'] }]\n```\n\n#### `createNamespace(id: NamespaceIdentifier, metadata?: NamespaceMetadata): Promise<void>`\n\nCreate a new namespace with optional properties.\n\n```typescript\nawait catalog.createNamespace({ namespace: ['analytics'] }, { properties: { owner: 'data-team' } })\n```\n\n#### `dropNamespace(id: NamespaceIdentifier): Promise<void>`\n\nDrop a namespace. The namespace must be empty.\n\n```typescript\nawait catalog.dropNamespace({ namespace: ['analytics'] })\n```\n\n#### `loadNamespaceMetadata(id: NamespaceIdentifier): Promise<NamespaceMetadata>`\n\nLoad namespace metadata and properties.\n\n```typescript\nconst metadata = await catalog.loadNamespaceMetadata({ namespace: ['analytics'] })\n// { properties: { owner: 'data-team', ... } }\n```\n\n### Table Operations\n\n#### `listTables(namespace: NamespaceIdentifier): Promise<TableIdentifier[]>`\n\nList all tables in a namespace.\n\n```typescript\nconst tables = await catalog.listTables({ namespace: ['analytics'] })\n// [{ namespace: ['analytics'], name: 'events' }]\n```\n\n#### `createTable(namespace: NamespaceIdentifier, request: CreateTableRequest): Promise<TableMetadata>`\n\nCreate a new table.\n\n```typescript\nconst metadata = await catalog.createTable(\n  { namespace: ['analytics'] },\n  {\n    name: 'events',\n    schema: {\n      type: 'struct',\n      fields: [\n        { id: 1, name: 'id', type: 'long', required: true },\n        { id: 2, name: 'timestamp', type: 'timestamp', required: true },\n      ],\n      'schema-id': 0,\n    },\n    'partition-spec': {\n      'spec-id': 0,\n      fields: [\n        {\n          source_id: 2,\n          field_id: 1000,\n          name: 'ts_day',\n          transform: 'day',\n        },\n      ],\n    },\n  }\n)\n```\n\n#### `loadTable(id: TableIdentifier): Promise<TableMetadata>`\n\nLoad table metadata.\n\n```typescript\nconst metadata = await catalog.loadTable({\n  namespace: ['analytics'],\n  name: 'events',\n})\n```\n\n#### `updateTable(id: TableIdentifier, request: UpdateTableRequest): Promise<TableMetadata>`\n\nUpdate table metadata (schema, partition spec, or properties).\n\n```typescript\nconst updated = await catalog.updateTable(\n  { namespace: ['analytics'], name: 'events' },\n  {\n    properties: { 'read.split.target-size': '134217728' },\n  }\n)\n```\n\n#### `dropTable(id: TableIdentifier): Promise<void>`\n\nDrop a table from the catalog.\n\n```typescript\nawait catalog.dropTable({ namespace: ['analytics'], name: 'events' })\n```\n\n## Error Handling\n\nAll API errors throw an `IcebergError` with details from the server:\n\n```typescript\nimport { IcebergError } from 'iceberg-js'\n\ntry {\n  await catalog.loadTable({ namespace: ['test'], name: 'missing' })\n} catch (error) {\n  if (error instanceof IcebergError) {\n    console.log(error.status) // 404\n    console.log(error.icebergType) // 'NoSuchTableException'\n    console.log(error.message) // 'Table does not exist'\n  }\n}\n```\n\n## TypeScript Types\n\nThe library exports all relevant types:\n\n```typescript\nimport type {\n  NamespaceIdentifier,\n  TableIdentifier,\n  TableSchema,\n  TableField,\n  IcebergType,\n  PartitionSpec,\n  SortOrder,\n  CreateTableRequest,\n  TableMetadata,\n  AuthConfig,\n  AccessDelegation,\n} from 'iceberg-js'\n```\n\n## Supported Iceberg Types\n\nThe following Iceberg primitive types are supported:\n\n- `boolean`, `int`, `long`, `float`, `double`\n- `string`, `uuid`, `binary`\n- `date`, `time`, `timestamp`, `timestamptz`\n- `decimal(precision, scale)`, `fixed(length)`\n\n## Compatibility\n\nThis package is built to work in **all** Node.js and JavaScript environments:\n\n| Environment         | Module System        | Import Method                           | Status                |\n| ------------------- | -------------------- | --------------------------------------- | --------------------- |\n| Node.js ESM         | `\"type\": \"module\"`   | `import { ... } from 'iceberg-js'`      | ✅ Fully supported    |\n| Node.js CommonJS    | Default              | `const { ... } = require('iceberg-js')` | ✅ Fully supported    |\n| TypeScript ESM      | `module: \"ESNext\"`   | `import { ... } from 'iceberg-js'`      | ✅ Full type support  |\n| TypeScript CommonJS | `module: \"CommonJS\"` | `import { ... } from 'iceberg-js'`      | ✅ Full type support  |\n| Bundlers            | Any                  | Webpack, Vite, esbuild, Rollup, etc.    | ✅ Auto-detected      |\n| Browsers            | ESM                  | `<script type=\"module\">`                | ✅ Modern browsers    |\n| Deno                | ESM                  | `import` from npm:                      | ✅ With npm specifier |\n\n**Package exports:**\n\n- ESM: `dist/index.mjs` with `dist/index.d.ts`\n- CommonJS: `dist/index.cjs` with `dist/index.d.cts`\n- Proper `exports` field for Node.js 12+ module resolution\n\nAll scenarios are tested in CI on Node.js 20 and 22.\n\n## Browser Usage\n\nThe library works in modern browsers that support native `fetch`:\n\n```typescript\nimport { IcebergRestCatalog } from 'iceberg-js'\n\nconst catalog = new IcebergRestCatalog({\n  baseUrl: 'https://public-catalog.example.com/iceberg/v1',\n  auth: { type: 'none' },\n})\n\nconst namespaces = await catalog.listNamespaces()\n```\n\n## Node.js Usage\n\nNode.js 20+ includes native `fetch` support. For older versions, provide a custom fetch implementation:\n\n```typescript\nimport { IcebergRestCatalog } from 'iceberg-js'\nimport fetch from 'node-fetch'\n\nconst catalog = new IcebergRestCatalog({\n  baseUrl: 'https://catalog.example.com/iceberg/v1',\n  auth: { type: 'bearer', token: 'token' },\n  fetch: fetch as any,\n})\n```\n\n## Limitations (v0.1.0)\n\nThis is a catalog client only. The following are **not supported**:\n\n- Reading table data (scanning Parquet files)\n- Writing data to tables\n- Advanced table operations (commits, snapshots, time travel)\n- Views support\n- Multi-table transactions\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Build the library\npnpm run build\n\n# Run unit tests\npnpm test\n\n# Run integration tests (requires Docker)\npnpm test:integration\n\n# Run integration tests with cleanup (for CI)\npnpm test:integration:ci\n\n# Run compatibility tests (all module systems)\npnpm test:compatibility\n\n# Format code\npnpm run format\n\n# Lint and test\npnpm run check\n```\n\n### Testing with Docker\n\nIntegration tests run against a local Iceberg REST Catalog in Docker. See [TESTING-DOCKER.md](./test/integration/TESTING-DOCKER.md) for details.\n\n```bash\n# Start Docker services and run integration tests\npnpm test:integration\n\n# Or manually\ndocker compose up -d\nnpx tsx test/integration/test-local-catalog.ts\ndocker compose down -v\n```\n\n### Compatibility Testing\n\nThe `test:compatibility` script verifies the package works correctly in all JavaScript/TypeScript environments:\n\n- **Pure JavaScript ESM** - Projects with `\"type\": \"module\"`\n- **Pure JavaScript CommonJS** - Traditional Node.js projects\n- **TypeScript ESM** - TypeScript with `module: \"ESNext\"`\n- **TypeScript CommonJS** - TypeScript with `module: \"CommonJS\"`\n\nThese tests ensure proper module resolution, type definitions, and runtime behavior across all supported environments. See [test/compatibility/README.md](./test/compatibility/README.md) for more details.\n\n## License\n\nMIT\n\n## Releases\n\nThis project uses [release-please](https://github.com/googleapis/release-please) for automated releases. Here's how it works:\n\n1. **Commit with conventional commits**: Use [Conventional Commits](https://www.conventionalcommits.org/) format for your commits:\n   - `feat:` for new features (minor version bump)\n   - `fix:` for bug fixes (patch version bump)\n   - `feat!:` or `BREAKING CHANGE:` for breaking changes (major version bump)\n   - `chore:`, `docs:`, `test:`, etc. for non-release commits\n\n2. **Release PR is created automatically**: When you push to `main`, release-please creates/updates a release PR with:\n   - Version bump in `package.json`\n   - Updated `CHANGELOG.md`\n   - Release notes\n\n3. **Merge the release PR**: When you're ready to release, merge the PR. This will:\n   - Create a GitHub release and git tag\n   - Automatically publish to npm with provenance (using trusted publishing, no secrets needed)\n\n**Example commits:**\n\n```bash\ngit commit -m \"feat: add support for view operations\"\ngit commit -m \"fix: handle empty namespace list correctly\"\ngit commit -m \"feat!: change auth config structure\"\n```\n\n## Contributing\n\nContributions are welcome! This library aims to be a minimal, generic client for the Iceberg REST Catalog API.\n","readmeFilename":"README.md"}