{"_id":"@geoprotocol/grc-20","_rev":"18-a7b47bf6349821185e23865469beea84","name":"@geoprotocol/grc-20","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"@geoprotocol/grc-20","version":"0.1.0","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.0","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"}],"dist":{"shasum":"604893a78fb970c35ab63353a04903180dcf638a","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.0.tgz","fileCount":82,"integrity":"sha512-iJvh/GPL2Jvs3NnPkvumPtXVNhgfh8Y9U0Sbuoat3TEY7hXUidFkYUWb6mLweNrNs5cA8V+zv902E0bAV/olfA==","signatures":[{"sig":"MEYCIQDlDKkbSsbhROngt5gU3pxyxTWJcKVVkjhQQ/F8U626WAIhAMZ96j2vrbWPe+Sc+j9RNQYE2cDjdJffgxdpUrdWOXvE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233680},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"fa70e5d699288d047fb221eb5d15da5a68411dbe","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.0_1767998537036_0.6914643882813678","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@geoprotocol/grc-20","version":"0.1.1","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.1","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"}],"dist":{"shasum":"5e3cb537987ff42d93ed232e0326c65764b2cd71","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.1.tgz","fileCount":86,"integrity":"sha512-1DRbk5F5BCSUR4aPqE05d8feJYEmt8E/x4HlBrqeosI7gD0u0Haw2RD1DLm510eKZPbtDYGM6En5Yxj2FYDKCg==","signatures":[{"sig":"MEUCIQCj6IdS1WfIyNrI+sfSW3JnjdWaW7He0YEGDIAFx2pEFgIgT7tazpMyUsPBmXkGsML+wYwrwqzrwVhn1eCl0tQwWpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228994},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"fa70e5d699288d047fb221eb5d15da5a68411dbe","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.1_1767998755157_0.5472796569502743","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@geoprotocol/grc-20","version":"0.1.4","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.4","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"}],"dist":{"shasum":"d171bb3086c524e33643aedd62f73b18914aa2da","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.4.tgz","fileCount":94,"integrity":"sha512-g8RyzK+bX1UAOm5vuyDJdnSe+abY3sXrm0yy+9Bm1wY4P4lLWG3njQNUdULW95+kNqli3jMlgQ1Zrp052uSkUg==","signatures":[{"sig":"MEYCIQCxq7xGSb8k+fsqfr/q2zraMvGJuSaj2fv9wb7gCjZLrQIhAOH9TUYdF+8sB8vBY0FVoIAy1oVhRU4EBvdLJTWf6Nkc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277301},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"6de2cf19c4df719087e32df4b5b4e6d0608b4581","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.4_1768372275379_0.5569661352532667","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@geoprotocol/grc-20","version":"0.1.5","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.5","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"}],"dist":{"shasum":"3a01d68f47efc7fe779297c1b8bacdeb0a9912a7","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.5.tgz","fileCount":94,"integrity":"sha512-XAzEZ1fIpoPa2Vf+RMfKj1rR0/hDzTO8f2f+kKtD2iLfEquQ2NUcQEfvlkJ5jGFrtSWFpUYzGl6J3fwSrN/1HA==","signatures":[{"sig":"MEUCIAsn4ZngxWF2aTvRyXikXufRBzGXzTEuJG97DtPFXMZLAiEA7/HHRDYuzJtaTL0dcWpjLOVslLp9/B+TMp6Xqq11T7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287692},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"ab1b91c2c1c47ee48f534ce2dd7c3bdab5808eb8","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.5_1768597166056_0.6088881354997011","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@geoprotocol/grc-20","version":"0.1.6","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.6","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"}],"dist":{"shasum":"2559f358381b970114aa4273eff7de55c105a78c","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.6.tgz","fileCount":94,"integrity":"sha512-oMh/3kUi5zx0h8vfEOS8x8KNwp/oX80pmeBV8I4aAJ8rJFBMHa2ne9+gGZ4SKmEx4oytTRc0ymuK6gWZ24+dEQ==","signatures":[{"sig":"MEUCIF2/inbh67s4Fsy+WjTPRojNXWRFLZLXnygMPCUlFUgPAiEAjScws3Rf12Gcr2FK7E5bPsjOHpR6Vf5dAWge6AoZsX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287692},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"ba4e0fb00aa5c5b74be6f83ff8c201ab322ccc09","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.6_1768611117383_0.8021095609412394","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@geoprotocol/grc-20","version":"0.1.7","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.1.7","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"91469a37155be850082b9d199dd81513d2a55e8f","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.1.7.tgz","fileCount":98,"integrity":"sha512-BJGUwG6exJnLkoRzCwzohybxgtwsYwuzEcnyJ2YPQQ1WwDXp7o8oNwLVUjzwEqjEabw1oIRpSnDNrH/LqSEaYA==","signatures":[{"sig":"MEQCIBooCa4Z9l4jYy9zdBeaIbE31wkUyey10RdIu5FL/W7CAiBv9HuMPaJrKYrpoOYTtnL/6EKAwCqV/ScveWsFy0Ax9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331787},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"5da9670ccd99471ab163342da7777f4052b4068a","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"nikgraf","email":"nik@nikgraf.com"},"_npmVersion":"11.6.1","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.1.7_1768899565357_0.9282547714630867","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@geoprotocol/grc-20","version":"0.2.0","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.2.0","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"c4ea2e79b0e75ec4a92712ef2684be8c8683e39a","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.2.0.tgz","fileCount":94,"integrity":"sha512-UTCiaPt5yf3wvR72v4zz3N4or0oqrwDHvkqmNopKDrPbpYENL8tIUWBQqkyRS+VnyJsspDy88PAh9UJM8cCMzA==","signatures":[{"sig":"MEYCIQDKIoK/zzRzLzGIvePyBqgJapbLp8fdmEzfz7x0PuGaXAIhAIwKNxTzKGO+qW3Xl9Zv6mYH32RK1OSGWyPLoru50Es9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317460},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"63f09ac39393fe54cd0ed515e51955322e0f7dc4","scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.2.0_1769036516585_0.7716669125598967","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@geoprotocol/grc-20","version":"0.2.1","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.2.1","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"60aff6c293e276635a2ca2848742478e203299f2","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.2.1.tgz","fileCount":102,"integrity":"sha512-3JhFJn7fnlU6Q81AASqJqV5MBAlbpmDDMJiCMMKEyXUub9rZc+gict2vonJk9W6/gBK1z36TKXcW/eNg8jJIkw==","signatures":[{"sig":"MEUCIQDd0Bp9tefGfY0wRGToHM48/wFId1cmorw5K8y61Y/HUAIgVdiWs57NzUh4l8aWoloFyuCtNKzWx+PehsigqoJ0tUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391416},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"219d5a5852c69d41140a60d59710c6922f428d59","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.2.1_1769129563739_0.30547227038778413","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@geoprotocol/grc-20","version":"0.2.2","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.2.2","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"36ebab156f752c3d2cddb70fbb95a5d0ecc98821","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.2.2.tgz","fileCount":102,"integrity":"sha512-2XD4bYokTjHtKsS+uswn3CBsJxtXALxv4NzavMqXawXGdNBwkPuVH/ccKcufjQ7LgNN9XGUVgmEIoB5+are6aQ==","signatures":[{"sig":"MEYCIQCl9vJaJD+C0SvyKW+5CF7S7blpTi/i8j8eOpRECoUajgIhAKbqjRamHUDsTKlvYRo16bVeMHroVeKmF34JonUxyed4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"eedb6a9656eecf35395551b0e412ec01838e7ff2","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.2.2_1769198419093_0.7956997395318308","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@geoprotocol/grc-20","version":"0.2.3","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.2.3","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"c3c9f2557e788d55e383aee7f4d24efb27c0155d","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.2.3.tgz","fileCount":102,"integrity":"sha512-oN2yiyQfAJw+LtH4oe5Est/bmQO47mvtmGO28MLV8mk5LJAEPKqRUPh94LerHTUsNkmEak/gq8T0MpxNPo9VTQ==","signatures":[{"sig":"MEQCIBzIC8bLIowUPvMSAy8vGLwbelalQ3a3I4Ns8LZDHtq7AiBcsWqvZDJx6iBy4l29I/OXMLaZgVypMzYoWWNp52+Wiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402723},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"6549cfb20284d82eff0390b2c85c0551b2956bb7","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"nikgraf","email":"nik@nikgraf.com"},"_npmVersion":"11.6.1","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.2.3_1769504235081_0.2526778888425878","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@geoprotocol/grc-20","version":"0.3.0","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.3.0","maintainers":[{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"34b554a87eedc322e7bf7d8879002bd6ca64015a","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.3.0.tgz","fileCount":102,"integrity":"sha512-Nd8lge6lAZxOeNYxmMzoTC8cYCEwN1RDaLod3IQO1DQnMzu7Qhv7F/x9ZnbZryO1wkbSSRQ4Z62CL6xf+BNrVQ==","signatures":[{"sig":"MEUCIAOvgxH9U84jW8yMfYlKmTd3MpAudkATFnf133xJb9ISAiEAmMiBT2fg3ACbMbgcoZ0FWKGtjlMZvDjkyVBFR21n8lQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":472066},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"5b7fc789dc04e0ec487060470d71ff7fbaae6acb","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.3.0_1769537520209_0.9015271260438273","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@geoprotocol/grc-20","version":"0.3.1","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.3.1","maintainers":[{"name":"bairun","email":"byron@geobrowser.io"},{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"8c09f824cccd9526d961021f5d30e5b813a880c5","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.3.1.tgz","fileCount":102,"integrity":"sha512-uiY7kR4B+165a6qkhRwr+71TgGeeWSiybMyJNM/S7ZzVujC24Qsqv0f9BPoX15uGQZgpsVAogQMB97leTGl1PA==","signatures":[{"sig":"MEQCIDFYV5l4iRIjZklLYTP+tOh7UgBLQFEawmJ4zomIyNWkAiAo5fJDNtVKA2SQxDq2fnNHqE4jCc79JbdDGITXJ37WWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478353},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"dd70785e28bf3e01adf7f73a8d2a3834caf0e6bd","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.3.1_1770668745064_0.11985759011432284","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@geoprotocol/grc-20","version":"0.4.0","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.4.0","maintainers":[{"name":"bairun","email":"byron@geobrowser.io"},{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"5840bd40f4a1a031457ffa707ea72a13f81929ec","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.4.0.tgz","fileCount":102,"integrity":"sha512-pZ42y0/nDR6L0pRPlW/xeLOwAcNvsQvP/9BpSO9DN8U4/dmGjHAxK9M2euXncjnFLoaCKmx8NiANVpHVD94MGA==","signatures":[{"sig":"MEQCIGg148VjJMNhBD+q6uP7LY+TenPPRIK7fWSPUi1R0kMZAiBaf10fehrmqqTywBVPHokF8FOrCqMyo86qsWXPMHetVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":472234},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"dd70785e28bf3e01adf7f73a8d2a3834caf0e6bd","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ytal","email":"yaniv@geobrowser.io"},"_npmVersion":"10.9.2","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.4.0_1770679784425_0.04988496469711845","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@geoprotocol/grc-20","version":"0.4.1","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"author":{"name":"Geo Browser"},"license":"MIT","_id":"@geoprotocol/grc-20@0.4.1","maintainers":[{"name":"bairun","email":"byron@geobrowser.io"},{"name":"ytal","email":"yaniv@geobrowser.io"},{"name":"nikgraf","email":"nik@nikgraf.com"}],"dist":{"shasum":"889b596172dcf60bc046e2e5f640346672400652","tarball":"https://registry.npmjs.org/@geoprotocol/grc-20/-/grc-20-0.4.1.tgz","fileCount":102,"integrity":"sha512-J5trJZBydDOO5GsEMzy9ukX9GetblBMLnn4ugpTFOcwS4akA54Lxg/uYJbXUDh5EVPir3PAzC6UN6EiBz0K/Ww==","signatures":[{"sig":"MEUCIHkOlYPoUOpxWHPcs9GN5SEaDbAi8QskmA+YB0qmBkP6AiEA5IAikcFtulRtQqCCU7reUYnnmw6W120UZco267fE6hc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520227},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./util":{"types":"./dist/util/index.d.ts","import":"./dist/util/index.js"},"./codec":{"types":"./dist/codec/index.d.ts","import":"./dist/codec/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./genesis":{"types":"./dist/genesis/index.d.ts","import":"./dist/genesis/index.js"}},"gitHead":"d1365409663f22c45065e38525da442bd681cefd","private":false,"scripts":{"demo":"npx serve .","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","test:all":"npm run test && npm run test:browser","benchmark":"node scripts/benchmark.js","test:watch":"vitest","test:browser":"vitest run --config vitest.browser.config.ts","bundle:analyze":"node scripts/bundle-analyze.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"nikgraf","email":"nik@nikgraf.com"},"_npmVersion":"11.6.1","description":"GRC-20 TypeScript library for binary property graph encoding/decoding","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bokuweb/zstd-wasm":"^0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","esbuild":"^0.20.0","playwright":"^1.41.0","typescript":"^5.3.3","@types/node":"^20.11.0","@vitest/browser":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/grc-20_0.4.1_1773144387871_0.2495916845339432","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-01-09T22:42:16.981Z","modified":"2026-07-30T01:36:48.756Z","0.1.0":"2026-01-09T22:42:17.217Z","0.1.1":"2026-01-09T22:45:55.328Z","0.1.4":"2026-01-14T06:31:15.550Z","0.1.5":"2026-01-16T20:59:26.218Z","0.1.6":"2026-01-17T00:51:57.549Z","0.1.7":"2026-01-20T08:59:25.501Z","0.2.0":"2026-01-21T23:01:56.739Z","0.2.1":"2026-01-23T00:52:43.918Z","0.2.2":"2026-01-23T20:00:19.262Z","0.2.3":"2026-01-27T08:57:15.244Z","0.3.0":"2026-01-27T18:12:00.442Z","0.3.1":"2026-02-09T20:25:45.207Z","0.4.0":"2026-02-09T23:29:44.564Z","0.4.1":"2026-03-10T12:06:28.025Z"},"author":{"name":"Geo Browser"},"license":"MIT","keywords":["grc-20","graph","knowledge-graph","binary-format","encoding"],"description":"GRC-20 TypeScript library for binary property graph encoding/decoding","maintainers":[{"email":"yaniv@geobrowser.io","name":"ytal"},{"email":"nik@nikgraf.com","name":"nikgraf"},{"email":"orlyatomics@k6c.io","name":"ohohoreilly"}],"readme":"# @geoprotocol/grc-20\n\nTypeScript library for encoding and decoding GRC-20 binary property graph data.\n\n## Installation\n\n```bash\nnpm install @geoprotocol/grc-20\n```\n\n## Quick Start\n\n```typescript\nimport {\n  EditBuilder,\n  encodeEdit,\n  decodeEdit,\n  randomId,\n  properties,\n} from \"@geoprotocol/grc-20\";\n\n// Create an edit with an entity\nconst edit = new EditBuilder(randomId())\n  .setName(\"Create Alice\")\n  .addAuthor(randomId())\n  .setCreatedNow()\n  .createEntity(randomId(), (e) =>\n    e\n      .text(properties.name(), \"Alice\", undefined)\n      .text(properties.description(), \"A person\", undefined)\n  )\n  .build();\n\n// Encode to binary\nconst bytes = encodeEdit(edit);\n\n// Decode back\nconst decoded = decodeEdit(bytes);\n```\n\n## Features\n\n- **Type-safe API** - Full TypeScript definitions\n- **Builder pattern** - Fluent API for constructing edits\n- **Binary codec** - Pure TypeScript encoder/decoder\n- **Zstd compression** - Optional WASM-based compression (lazy-loaded)\n- **Tree-shakeable** - Separate entry points for minimal bundles\n- **Cross-platform** - Works in Node.js and browsers\n\n## Bundle Sizes\n\n| Entry Point | Gzipped |\n|-------------|---------|\n| Full library | ~12 KB |\n| Types only | ~1.4 KB |\n| Builder only | ~1.2 KB |\n| Codec only | ~8 KB |\n| Genesis IDs | ~1.7 KB |\n| Utilities | ~1.6 KB |\n| Zstd WASM (lazy) | ~81 KB |\n\nThe Zstd WASM module is only loaded when compression functions are used.\n\n### Lazy Loading\n\nFor optimal initial load, import the codec separately:\n\n```typescript\n// Initial load (~4.4 KB gzipped)\nimport { EditBuilder, randomId, properties } from \"@geoprotocol/grc-20/builder\";\nimport { properties } from \"@geoprotocol/grc-20/genesis\";\n\n// Lazy load codec when needed (~8 KB gzipped)\nconst { encodeEdit } = await import(\"@geoprotocol/grc-20/codec\");\n\n// WASM only loads if you use compression (~81 KB additional)\nconst { encodeEditAuto } = await import(\"@geoprotocol/grc-20/codec\");\n```\n\n## API Reference\n\n### Types\n\n```typescript\nimport {\n  Id,              // 16-byte UUID (Uint8Array branded type)\n  Edit,            // Batch of operations with metadata\n  Op,              // Union of all operation types\n  Value,           // Union of all value types\n  DataType,        // Enum: Boolean, Integer, Float, Text, etc.\n  PropertyValue,   // Property ID + Value pair\n} from \"@geoprotocol/grc-20\";\n```\n\n### Builders\n\n```typescript\nimport {\n  EditBuilder,          // Build Edit objects\n  EntityBuilder,        // Build entity values\n  UpdateEntityBuilder,  // Build update operations\n  RelationBuilder,      // Build relation operations\n  UpdateRelationBuilder,// Build relation update operations\n} from \"@geoprotocol/grc-20\";\n```\n\n#### EditBuilder\n\n```typescript\nconst edit = new EditBuilder(editId)\n  .setName(\"My Edit\")\n  .addAuthor(authorId)\n  .setCreatedAt(BigInt(Date.now()) * 1000n)  // microseconds\n  .createEntity(entityId, e => e\n    .text(propId, \"value\", languageId)\n    .integer(propId, 42n, unitId)\n    .float(propId, 3.14, undefined)\n    .decimal(propId, { exponent: -2, mantissa: 1234n }, undefined)\n    .boolean(propId, true)\n    .bytes(propId, new Uint8Array([1, 2, 3]))\n    .point(propId, 40.7128, -74.006)\n    .date(propId, \"2024-01-15Z\")             // RFC 3339 date\n    .time(propId, \"10:30:00Z\")               // RFC 3339 time\n    .datetime(propId, \"2024-01-15T10:30:00Z\")// RFC 3339 datetime\n  )\n  .updateEntity(entityId, u => u\n    .setText(propId, \"new value\", undefined)\n    .setInteger(propId, 100n, undefined)\n    .unsetLanguage(propId, languageId)  // Unset specific language\n    .unsetAll(propId)                   // Unset all values for property\n  )\n  .deleteEntity(entityId)\n  .restoreEntity(entityId)\n  .createRelation(r => r\n    .id(relationId)\n    .from(fromId)\n    .to(toId)\n    .relationType(relationTypeId)\n  )\n  .deleteRelation(relationId)\n  .restoreRelation(relationId)\n  .addOp({ type: 'createValueRef', id: valueRefId, entity: entityId, property: propId })\n  .build();\n```\n\n### Ops (Functional API)\n\n`createEdit` defaults `id` to `randomId()` and `createdAt` to `0n` when omitted.\n\n```typescript\nimport {\n  createEdit,\n  createEntity,\n  createRelation,\n  randomId,\n  properties,\n  relationTypes,\n} from \"@geoprotocol/grc-20\";\n\nconst entityId = randomId();\nconst authorId = randomId();\n\nconst ops = [\n  createEntity({\n    id: entityId,\n    values: [\n      { property: properties.name(), value: { type: \"text\", value: \"Alice\" } },\n      { property: properties.description(), value: { type: \"text\", value: \"A person\" } },\n    ],\n  }),\n  createRelation({\n    id: randomId(),\n    relationType: relationTypes.types(),\n    from: entityId,\n    to: randomId(),\n  }),\n];\n\nconst edit = createEdit({\n  name: \"Create Alice\",\n  author: authorId,\n  ops,\n});\n```\n\n### Codec\n\n```typescript\nimport { encodeEdit, decodeEdit } from \"@geoprotocol/grc-20\";\n\n// Encode (uncompressed)\nconst bytes = encodeEdit(edit);\nconst bytesCanonical = encodeEdit(edit, { canonical: true });\n\n// Decode (uncompressed)\nconst edit = decodeEdit(bytes);\n```\n\n### Compression\n\nThe library supports Zstd compression via a lazy-loaded WASM module. The WASM is only downloaded when compression functions are first used.\n\n```typescript\nimport {\n  preloadCompression,\n  isCompressionReady,\n  encodeEditAuto,\n  decodeEditAuto,\n  encodeEditCompressed,\n  decodeEditCompressed,\n} from \"@geoprotocol/grc-20\";\n\n// Preload WASM on app startup (recommended)\nawait preloadCompression();\n\n// Check if compression is ready\nif (isCompressionReady()) {\n  console.log(\"Compression ready!\");\n}\n\n// Auto encode/decode (recommended for most use cases)\n// Compresses if data > 256 bytes, otherwise uncompressed\nconst data = await encodeEditAuto(edit);\nconst decoded = await decodeEditAuto(data);\n\n// Control compression threshold\nconst data = await encodeEditAuto(edit, { threshold: 0 });       // always compress\nconst data = await encodeEditAuto(edit, { threshold: 1024 });    // compress if > 1KB\nconst data = await encodeEditAuto(edit, { threshold: Infinity }); // never compress\n\n// Explicit compressed encode/decode\nconst compressed = await encodeEditCompressed(edit);\nconst decoded = await decodeEditCompressed(compressed);\n```\n\n#### Browser Usage (without bundler)\n\nIf using native ES modules without a bundler, add an import map for the WASM dependency:\n\n```html\n<script type=\"importmap\">\n{\n  \"imports\": {\n    \"@bokuweb/zstd-wasm\": \"https://esm.sh/@bokuweb/zstd-wasm@0.0.27\"\n  }\n}\n</script>\n```\n\n### ID Utilities\n\n```typescript\nimport {\n  randomId,             // Generate random UUIDv4\n  parseId,              // Parse hex string to Id\n  formatId,             // Format Id as hex string\n  derivedUuid,          // Derive UUIDv8 from bytes (SHA-256, sync)\n  derivedUuidAsync,     // Derive UUIDv8 from bytes (SHA-256, async)\n  derivedUuidFromString,\n  uniqueRelationId,     // Derive relation ID from endpoints\n  relationEntityId,     // Derive entity ID from relation ID\n  idsEqual,             // Compare two Ids for equality\n  compareIds,           // Compare two Ids for ordering (-1, 0, 1)\n  NIL_ID,               // Zero UUID\n} from \"@geoprotocol/grc-20\";\n```\n\n### Validation\n\nValidate values and positions before encoding:\n\n```typescript\nimport { validateValue, validatePosition } from \"@geoprotocol/grc-20\";\n\n// Validate a value matches its declared type\nconst result = validateValue(value, DataType.Text);\nif (!result.valid) {\n  console.error(result.error);\n}\n\n// Validate position string format\nconst posResult = validatePosition(\"a0\");\nif (!posResult.valid) {\n  console.error(posResult.error);\n}\n```\n\n### Data Types Reference\n\n| Type | TypeScript Representation |\n|------|---------------------------|\n| `BOOLEAN` | `{ type: \"boolean\", value: boolean }` |\n| `INTEGER` | `{ type: \"integer\", value: bigint, unit?: Id }` |\n| `FLOAT` | `{ type: \"float\", value: number, unit?: Id }` |\n| `DECIMAL` | `{ type: \"decimal\", exponent: number, mantissa: bigint, unit?: Id }` |\n| `TEXT` | `{ type: \"text\", value: string, language?: Id }` |\n| `BYTES` | `{ type: \"bytes\", value: Uint8Array }` |\n| `DATE` | `{ type: \"date\", value: string }` (RFC 3339, e.g. `\"2024-01-15Z\"`) |\n| `TIME` | `{ type: \"time\", value: string }` (RFC 3339, e.g. `\"14:30:00Z\"`) |\n| `DATETIME` | `{ type: \"datetime\", value: string }` (RFC 3339, e.g. `\"2024-01-15T14:30:00Z\"`) |\n| `SCHEDULE` | `{ type: \"schedule\", value: string }` (RFC 5545/7953 iCalendar) |\n| `POINT` | `{ type: \"point\", lat: number, lon: number, alt?: number }` |\n| `RECT` | `{ type: \"rect\", minLat: number, minLon: number, maxLat: number, maxLon: number }` |\n| `EMBEDDING` | `{ type: \"embedding\", subType: EmbeddingSubType, dims: number, data: Uint8Array }` |\n\n### Genesis IDs\n\nWell-known IDs from the Genesis Space:\n\n```typescript\nimport { properties, types, relationTypes, languages } from \"@geoprotocol/grc-20\";\n\n// Properties\nproperties.name()        // a126ca530c8e48d5b88882c734c38935 - Name (TEXT)\nproperties.description() // 9b1f76ff9711404c861e59dc3fa7d037 - Description (TEXT)\nproperties.cover()       // 34f535072e6b42c5a84443981a77cfa2 - Cover image URL (TEXT)\n\n// Types\ntypes.image()            // f3f790c4c74e4d23a0a91e8ef84e30d9 - Image entity\n\n// Relation Types\nrelationTypes.types()    // 8f151ba4de204e3c9cb499ddf96f48f1 - Type membership\n\n// Languages (derived from BCP 47 codes)\nlanguages.english()      // or languages.fromCode(\"en\")\nlanguages.spanish()\nlanguages.french()\n// ... etc\n```\n\n## Entry Points\n\nFor tree-shaking, use specific entry points:\n\n```typescript\nimport { ... } from \"@geoprotocol/grc-20\";          // Full library\nimport { ... } from \"@geoprotocol/grc-20/types\";    // Types only\nimport { ... } from \"@geoprotocol/grc-20/builder\";  // Builders only\nimport { ... } from \"@geoprotocol/grc-20/codec\";    // Codec only\nimport { ... } from \"@geoprotocol/grc-20/genesis\";  // Genesis IDs only\nimport { ... } from \"@geoprotocol/grc-20/util\";     // Utilities only\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Test (Node.js)\nnpm test\n\n# Test (Browser via Playwright)\nnpm run test:browser\n\n# Test both\nnpm run test:all\n\n# Analyze bundle sizes\nnpm run bundle:analyze\n\n# Run performance benchmark\nnpm run benchmark\n\n# Run browser demo\nnpm run demo\n# Then open http://localhost:3000/examples/browser-demo.html\n```\n\n## License\n\nMIT\n","readmeFilename":"readme.md"}