{"_id":"@awesomeness-js/graph-s3","_rev":"9-429fd7244f0546134c0690ba54e73fa9","name":"@awesomeness-js/graph-s3","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@awesomeness-js/graph-s3","version":"1.0.0","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.0","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"83e8b26761f8c6b36b70084d9e57ba6eede9e9ed","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.0.tgz","fileCount":33,"integrity":"sha512-QObB96UT4bdNgFu0rfi3lYL+KKuovNFByOhP6c1pOHOnXBVYz6NSwj1mei+/uq/CIB2ZPf+98JznlhIxTMzSgQ==","signatures":[{"sig":"MEYCIQDcVT3O1M96aeXTephOTChNTUN7Qq87BBYS8ceocg9D3gIhAPp7nBJ/V+DQIyJOEES0n3UDmH5TpTIL88EB8Uu4bl+j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38788},"main":"index.js","type":"module","gitHead":"5803cea340fed4ead937b59eaf1a5dfeb0676345","_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.8.3","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.0_1738465234165_0.3254901935090082","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@awesomeness-js/graph-s3","version":"1.0.1","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.1","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"cee7c07107b6ee4f763d279d4e33f151a4552823","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.1.tgz","fileCount":33,"integrity":"sha512-7KphiR73FQXlUj9IGvzGRuMGmRz1DoXvaijhMRNL/MAXF2OsYpRSFWn2gbCjvXoLiWpeGaSSmlixa83Vz8TQzA==","signatures":[{"sig":"MEUCIFyjDaHNdOR+WV9NnHJMZEBqt+2SRzV4T4e433c8nXIFAiEArbsJF/NYKF3jYsEA82DGTkvtrCIMMhq5/83K2klVOt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38801},"main":"index.js","type":"module","gitHead":"c4513ee432418b99f2bcd69c2a132ea7b2ada003","_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.8.3","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.1_1738465473337_0.5210553680206162","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@awesomeness-js/graph-s3","version":"1.0.2","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.2","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"4b5fdd0400144faf843fb79c3a502027f3d6636a","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.2.tgz","fileCount":33,"integrity":"sha512-j1hvsBJHlGGoz34vIPaHb/e5m6V94mdLy14xFNT3q32agvYQivWiOYxUuRaMRbBkISr4xWtW4qVFqzF4wPhb5A==","signatures":[{"sig":"MEYCIQDYUcKIZGIGovuItEEQx1eLD5p4H/nlSk4dyPqj5tjtLgIhAMkhx4lhQW+/qsqBbiaPMeOuAPArLhQfuhYB0xT84QXK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38813},"main":"index.js","type":"module","gitHead":"03bc939bbd96e944b01fa0208f31caaa32853dc7","_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.8.3","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.2_1738465663736_0.28541249845469596","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@awesomeness-js/graph-s3","version":"1.0.3","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.3","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"cfa6be8203c5e11363a4b70c45a29f8935d68fbe","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.3.tgz","fileCount":34,"integrity":"sha512-KDvbX/z8/7tOb2GPzp7UfYazAW+FHY4XFzTcpvFIvtq+I1HMHrGGHFwlKyBxZKZOXaRth8nP8W02tSmq8nLh7g==","signatures":[{"sig":"MEUCIQD6V3XY6EM5zDrMs8XmaMoce8MUWPYGKvCI9mFoYT/TOAIgD+pS6nv99kBa5QInxwbHeW/FwfAtwxOr58smVTNuhQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45609},"main":"index.js","type":"module","gitHead":"49dc33e62f71a63f21fe5109d99f0a879f4ed5be","_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.8.3","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.3_1738473873958_0.3297269563851215","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@awesomeness-js/graph-s3","version":"1.0.4","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.4","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"669a1194fd6585e6f3f0a09efabb3514a99ed1c5","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.4.tgz","fileCount":61,"integrity":"sha512-ZAuDqLEaa5hmQnsB+qKFknAq6xlTp5HZZCt88mcWR3/Fs1Hai/6Bh/Jvyj1IuU8ULbx/ntFayBxSu0jC40gOqg==","signatures":[{"sig":"MEYCIQD4lrV9eDunrAXeyJzfj+Qa8+nzwiQUPXoKJ6Ay1m/KKAIhAPpgugvCfZZMo8LHhe6I2Wl1a028TSr/Y7A82qUbtN6Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52727},"main":"index.js","type":"module","gitHead":"4d95273132ae50440c656ca626370fa6af596dfa","scripts":{"build":"tsc && npm run postBuild","prebuild":"node ./build/build.js","postBuild":"node ./build/postBuild.js"},"_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.9.0","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.4_1739454014550_0.8732370191476262","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@awesomeness-js/graph-s3","version":"1.0.5","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.5","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"5f0ce5b31ee1e3feda43e55298cedcc95458bc42","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.5.tgz","fileCount":61,"integrity":"sha512-85kAxA6n8XnSuo8v4Up9ndNh5Du7wqoxVLXDYxnoG8lCRNt7O5JIa0l/f2+LxPjWUgAcq45Lus1jTyNx3X0Azg==","signatures":[{"sig":"MEQCICuMKi2D4QzWogDCtyDAqhUd9P8tjwa2lULhIDwYXoiMAiBANDR+Mn67gSTYLQf5ChLutdPtu+nLyKtgR5akuSzRdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52815},"main":"index.js","type":"module","gitHead":"26ca52e13cc4d1fef5bb09bd42f49e985299c935","scripts":{"build":"tsc && npm run postBuild","prebuild":"node ./build/build.js","postBuild":"node ./build/postBuild.js"},"_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.9.0","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.5_1740105958319_0.5378704048047598","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@awesomeness-js/graph-s3","version":"1.0.6","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.0.6","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"4c01d3de74ab764d3a4788f1b89fd10db7e22213","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.0.6.tgz","fileCount":61,"integrity":"sha512-sfhbKXe1QzfZZdZ1B2O2ocLHCwrBiTc1U4YF1dqKJUnNfFroZuetH38JwEmy8iiteGdRTU1eJ63qVS6fQ+eCOQ==","signatures":[{"sig":"MEUCIQC87My6Eu6VS0477Y5Ga/0b5aj1bSPkSAq4DufP3zyBowIgd+QDoGRRKOjPdCAIl+M6f6qkeAv+IDLWaFccKUH2+NU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52849},"main":"index.js","type":"module","types":"./types/index.d.ts","gitHead":"fe204dd8f5928633ca7ec21fb0daa12bba0bbac9","scripts":{"build":"tsc && npm run postBuild","prebuild":"node ./build/build.js","postBuild":"node ./build/postBuild.js"},"_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.9.0","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.0.6_1740107354692_0.3015228681872635","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@awesomeness-js/graph-s3","version":"1.1.0","author":{"name":"Scott Forte"},"license":"MIT","_id":"@awesomeness-js/graph-s3@1.1.0","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"homepage":"https://github.com/awesomeness-js/graph-s3#readme","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"dist":{"shasum":"6d584b9423fa0778962cdc5943356fa3d894f5b9","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.1.0.tgz","fileCount":61,"integrity":"sha512-/g+7fx7rvBRzYJntmQ/Ts/DJom5cxSPrVnXxkiwXQDSBfCcUsH9GndvW7/7NyAZsFUSukR3K8B03UtxmVTEi3g==","signatures":[{"sig":"MEYCIQCxgLl5DIZ0P4l0i1x7XFYL4vsQxQRDAyxlyVn6l95ehgIhAMKsdlc66owN1tN5fY6vZAN3miiMQP9RDWGIUnRHA7qV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52580},"main":"index.js","type":"module","types":"./types/index.d.ts","gitHead":"bcd3179aa01245b505430edb159667859bfc7dc2","scripts":{"build":"tsc && npm run postBuild","prebuild":"node ./build/build.js","postBuild":"node ./build/postBuild.js"},"_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"repository":{"url":"git+https://github.com/awesomeness-js/graph-s3.git","type":"git"},"_npmVersion":"10.8.3","description":"Awesomeness - Graph DB using S3","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@awesomeness-js/utils":"latest","@awesomeness-js/aws-s3":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/graph-s3_1.1.0_1749941228888_0.7340588170331424","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@awesomeness-js/graph-s3","version":"1.1.1","description":"Awesomeness - Graph DB using S3","repository":{"type":"git","url":"git+https://github.com/awesomeness-js/graph-s3.git"},"type":"module","types":"./types/index.d.ts","main":"index.js","author":{"name":"Scott Forte"},"license":"MIT","publishConfig":{"access":"public"},"scripts":{"prebuild":"node ./build/build.js","build":"tsc && npm run postBuild","postBuild":"node ./build/postBuild.js"},"dependencies":{"@awesomeness-js/aws-s3":"latest","@awesomeness-js/utils":"latest"},"devDependencies":{"vitest":"^3.0.4"},"_id":"@awesomeness-js/graph-s3@1.1.1","gitHead":"1e9cdc563688a2f54fcbd17a7434449325eea3f3","bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"homepage":"https://github.com/awesomeness-js/graph-s3#readme","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-LTvzj74XQUET8jc6h/ksa32v3Zs5x/9ZyUKAVxGat3gFexUtsmV2+7bnVZxecjggoUTQx91Giy58TGaXwFGE4Q==","shasum":"886db9bc6d5b325a148f60562db50354f7cc8c91","tarball":"https://registry.npmjs.org/@awesomeness-js/graph-s3/-/graph-s3-1.1.1.tgz","fileCount":65,"unpackedSize":50126,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICyveSWv/ELnJgnUPDKNEQVkIxnGz1SuANJKGypkOk0eAiAoIdMRlR0hEBxt5gcz54UWKkI3MYBf4naSiRN9cxAO+w=="}]},"_npmUser":{"name":"scottforte","email":"junk+npm@scottmforte.com"},"directories":{},"maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/graph-s3_1.1.1_1769657964690_0.42054239911127"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-02T03:00:34.082Z","modified":"2026-01-29T03:39:24.935Z","1.0.0":"2025-02-02T03:00:34.394Z","1.0.1":"2025-02-02T03:04:33.574Z","1.0.2":"2025-02-02T03:07:43.990Z","1.0.3":"2025-02-02T05:24:34.158Z","1.0.4":"2025-02-13T13:40:14.737Z","1.0.5":"2025-02-21T02:45:58.512Z","1.0.6":"2025-02-21T03:09:14.930Z","1.1.0":"2025-06-14T22:47:09.150Z","1.1.1":"2026-01-29T03:39:24.819Z"},"bugs":{"url":"https://github.com/awesomeness-js/graph-s3/issues"},"author":{"name":"Scott Forte"},"license":"MIT","homepage":"https://github.com/awesomeness-js/graph-s3#readme","repository":{"type":"git","url":"git+https://github.com/awesomeness-js/graph-s3.git"},"description":"Awesomeness - Graph DB using S3","maintainers":[{"name":"scottforte","email":"junk+npm@scottmforte.com"}],"readme":"# Setup\r\nCreate an S3 bucket.\r\nset the AWESOMENESS_GRAPH_AWS_BUCKET env to the bucket name\r\n\r\nFor local testing you can do this:\r\nChange `secrets_example` to `secrets` and fill in the values\r\n\r\nAWESOMENESS_DEFAULT_AWS_REGION=us-east-1\r\nAWESOMENESS_GRAPH_AWS_BUCKET=graph.awesomeness.js.com\r\n\r\nIn production you can delete the secrets folder as long as the envs are set.\r\n\r\n# Example Usage\r\n```js\r\nimport graph from '@awesomeness-js/graph-s3';\r\n```\r\n\r\n## Vertex\r\n\r\n### graph.vertex.add()\r\n\r\n**`graph.vertex.addMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// create a vertex\r\nconst vertex = await graph.vertex.add({\r\n\ttype: 'person',\r\n\tname: 'John Doe',\r\n\tage: 30,\r\n});\r\n\r\nconsole.log(vertex.id); // will be assigned a uuid4\r\n\r\n// create another vertex\r\nconst vertex2 = await graph.vertex.add({\r\n\tid: '00000000-0000-4000-8000-000000000000',\r\n\ttype: 'person',\r\n\tname: 'Jane Doe',\r\n\tage: 25,\r\n});\r\n\r\nconsole.log(vertex2.id); // will be '00000000-0000-4000-8000-000000000000'\r\n\r\n```\r\n\r\n### graph.vertex.get()\r\n\r\n**`graph.vertex.getMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// get a vertex\r\n\r\nconst vertex = await graph.vertex.get('00000000-0000-4000-8000-000000000000');\r\n\r\nconsole.log(vertex);\r\n\r\n```\r\n\r\n### graph.vertex.delete()\r\n\r\n**`graph.vertex.deleteMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\t\r\n\r\n// delete a vertex\r\n\r\nawait graph.vertex.delete('00000000-0000-4000-8000-000000000000');\r\n\r\n```\r\n\r\n## Edge\r\n\r\n### graph.edge.add()\r\n\r\n**`graph.edge.addMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// create an edge\r\n\r\nawait graph.edge.add({\r\n\tv1: '00000000-0000-4000-8000-000000000000',\r\n\tv2: '00000000-0000-4000-8000-000000000001',\r\n\ttype: 'friend',\r\n});\r\n\r\n```\r\n\r\n### graph.edge.search()\r\n\r\n```js\r\n\r\n// find friends of a vertex\r\n\r\nconst edges = await graph.edge.search('00000000-0000-4000-8000-000000000000', 'friend');\r\nconsole.log(edges);\r\n\r\n// find friends and enemies of multiple vertices\r\n\r\nconst edges = await graph.edge.search([\r\n\t'00000000-0000-4000-8000-000000000000'\r\n\t'00000000-0000-4000-8000-000000000001'\r\n], [\r\n\t'friend',\r\n\t'enemy',\r\n]);\r\n\r\nconsole.log(edges);\r\n\r\n```\r\n\r\n### graph.edge.getMultiple()\r\n\r\n```js\r\n\r\n// find friends of vertex 1\r\n// and enemies of vertex 2\r\nawait graph.edge.delete([\r\n\t[\r\n\t\t'00000000-0000-4000-8000-000000000001', \r\n\t\t'friend'\r\n\t],\r\n\t[\r\n\t\t'00000000-0000-4000-8000-000000000002',\r\n\t\t'enemy'\r\n\t],\r\n]);\r\n\r\n```\r\n\r\n### graph.edge.delete()\r\n\r\n**`graph.edge.deleteMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// delete the friendship between vertex 1 and vertex 2\r\n// 2 still is friends with 1\r\n\r\nawait graph.edge.delete([\r\n\t'00000000-0000-4000-8000-000000000001', \r\n\t'friend',\r\n\t'00000000-0000-4000-8000-000000000002'\r\n]);\r\n\r\n// delete the friendship between vertex 1 and vertex 2\r\n// 2 is no longer friends with 1\r\n\r\nawait graph.edge.deleteMultiple([\r\n\t[\r\n\t\t'00000000-0000-4000-8000-000000000001',\r\n\t\t'friend',\r\n\t\t'00000000-0000-4000-8000-000000000002'\r\n\t],\r\n\t[\r\n\t\t'00000000-0000-4000-8000-000000000002',\r\n\t\t'friend',\r\n\t\t'00000000-0000-4000-8000-000000000001'\r\n\t],\r\n]);\r\n\r\n```\r\n\r\n\r\n## KV\r\n\r\n### graph.kv.add()\r\n\r\n**`graph.kv.addMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// create a key value pair\r\nawait graph.kv.add('keyBaz', { foo: 'bar' });\r\n\r\n```\r\n\r\n### graph.kv.get()\r\n\r\n**`graph.kv.getMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// get a key value pair\r\nconst kv = await graph.kv.get('keyBaz');\r\nconsole.log(kv);\r\n\r\n// get multiple key value pairs\r\nconst kvs = await graph.kv.getMultiple([\r\n\t'keyBaz',\r\n\t'somethingElse'\r\n]);\r\n\r\n```\r\n\r\n### graph.kv.delete()\r\n\r\n**`graph.kv.deleteMultiple()`**\r\nis the same it just takes an array of items\r\n\r\n```js\r\n\r\n// delete a key value pair\r\nawait graph.kv.delete('keyBaz');\r\n\r\n// delete multiple key value pairs\r\nawait graph.kv.deleteMultiple([\r\n\t'keyBaz',\r\n\t'somethingElse'\r\n]);\r\n\r\n\r\n```\r\n\r\n\r\n\r\n\r\n# Graph Database - Structure\r\n\r\n---\r\n\r\n## Vertex\r\n\r\n**S3 Storage Location: your-bucket/vertices/**\r\n`your-bucket/vertices/00000000-0000-4000-8000-000000000000`\r\n\r\n### Vertex Body\r\n\r\nThey should be a JSON object.\r\nThe only reserved properties are `id` and `type`,\r\nall others are fair game.\r\n\r\n`id` is a uuid4\r\n`type` is any string\r\n\r\n```json\r\n{\r\n\t\"id\": \"00000000-0000-4000-8000-000000000000\",\r\n\t\"type\": \"person\",\r\n\t\"anythingYouWant\": \"...\", \r\n}\r\n```\r\n\r\n### Vertex Metadata\r\n```json\r\n{\r\n\t\"id\": \"00000000-0000-4000-8000-000000000000\",\r\n\t\"type\": \"person\",\r\n}\r\n```\r\n\r\n---\r\n\r\n## Edge\r\n\r\n**S3 Storage Location: your-bucket/edges/**\r\n\r\n**un-sharded**\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend`\r\n\r\n**sharded**\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend`\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.1`\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.2`\r\n\r\n\r\nAn edge collection by default is un-sharded.\r\nThe max size of a edge collection is 100_000 uuids,\r\nwhich is about 4.7mb.\r\n\r\nWhen the number of uuids in the collection exceeds 100_000, the collection will be sharded into multiple files.\r\n\r\n**OTHER SIZES:**\r\n```\r\n7777 = 365 kb (works for dynamodb)\r\n10k = 469 kb (too big for dynamodb)\r\n25_000 = 1.2 mb\r\n50_000 = 2.4 mb\r\n100_000 = 4.7 mb\r\n250_000 = 11.7 mb\r\n500_000 = 23.4 mb\r\n1_000_000 = 46.8 mb\r\n```\r\n\r\n\r\n### Edge Body \r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend`\r\n\r\n**un-sharded**\r\n\r\nJust a simple array of edges.\r\n\r\n```json\r\n[\r\n\t{ \r\n\t\tv1: \"00000000-0000-4000-8000-000000000001\",\r\n\t\tv2: \"00000000-0000-4000-8000-000000000002\",\r\n\t\ttype: \"friend\"\r\n\t\tid: \"00000000-0000-4000-8000-000000000003\"\r\n\t\tproperties: {\r\n\t\t\t\"someProperty\": \"someValue\"\r\n\t\t} \r\n\t}\r\n]\r\n```\r\n\r\n**sharded**\r\n\r\nA dictionary with the metadata of all shards.\r\n\r\n```json\r\n{\r\n  \"shard.1\": {\r\n\t\"v1\": \"00000000-0000-4000-8000-000000000000\", // the uuid of the vertex\r\n\t\"type\": \"friend\", // the edge type\r\n\t\"size\": 4, // how many uuids are in the shard,\r\n\t\"id\": \"shard.1\", // the id of the shard\r\n\t\"lastV2Id\": \"00000000-0000-4000-8000-000000000004\", // used for routing to the correct shard\r\n  },\r\n  \"shard.2\": {\r\n\t\"v1\": \"00000000-0000-4000-8000-000000000000\", // the uuid of the vertex\r\n\t\"type\": \"friend\", // the edge type\r\n\t\"size\": 4, // how many uuids are in the shard,\r\n\t\"id\": \"shard.2\", // the id of the shard\r\n\t\"lastV2Id\": \"00000000-0000-4000-8000-000000000008\", // used for routing to the correct shard\r\n  }\r\n}\r\n```\r\n\r\n### Edge Metadata \r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend`\r\n\r\n**sharded or un-sharded**\r\n```json\r\n{\r\n\t\"v1\": \"00000000-0000-4000-8000-000000000005\",\r\n\t\"type\": \"someEdgeType\",\r\n\t\"size\": 4,\r\n\t\"id\": \"edges/00000000-0000-4000-8000-000000000000/friend\",\r\n\t\"supernode\": true, // or false\r\n}\r\n```\r\n\r\n#### Shard Body\r\n\r\nSame as an un-sharded edge collection body.\r\n\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.1`\r\n\r\n```json\r\n[\r\n\t{ \r\n\t\tv1: \"00000000-0000-4000-8000-000000000001\",\r\n\t\tv2: \"00000000-0000-4000-8000-000000000002\",\r\n\t\ttype: \"friend\"\r\n\t\tid: \"00000000-0000-4000-8000-000000000003\"\r\n\t\tproperties: {\r\n\t\t\t\"someProperty\": \"someValue\"\r\n\t\t} \r\n\t}\r\n]\r\n```\r\n\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.2`\r\n\r\n```json\r\n[\r\n\t{ \r\n\t\tv1: \"00000000-0000-4000-8000-000000000001\",\r\n\t\tv2: \"00000000-0000-4000-8000-000000000002\",\r\n\t\ttype: \"friend\"\r\n\t\tid: \"00000000-0000-4000-8000-000000000003\"\r\n\t\tproperties: {\r\n\t\t\t\"someProperty\": \"someValue\"\r\n\t\t} \r\n\t}\r\n]\r\n```\r\n\r\n#### shard metadata\r\n\r\nShard metadata is the same as edge metadata,\r\nbut with the addition of the `id` and `lastV2Id` properties.\r\n\r\n`id` is the id of the shard.\r\n\r\n`lastV2Id` is the last uuid in the shard. \r\nThis is used for quickly routing to the correct shard.\r\n\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.1`\r\n```json\r\n{\r\n\t\"v1\": \"00000000-0000-4000-8000-000000000000\",\r\n\t\"type\": \"friend\",\r\n\t\"size\": 4,\r\n\r\n\t// special shard properties\r\n\t\"id\": \"edges/00000000-0000-4000-8000-000000000000/friend/shard.1\",\r\n\t\"lastV2Id\": \"00000000-0000-4000-8000-000000000004\",\r\n}\r\n```\r\n\r\n`your-bucket/edges/00000000-0000-4000-8000-000000000000/friend/shard.2`\r\n\r\n```json\r\n{\r\n\t\"v1\": \"00000000-0000-4000-8000-000000000000\",\r\n\t\"type\": \"friend\",\r\n\t\"size\": 4,\r\n\r\n\t// special shard properties\r\n\t\"id\": \"edges/00000000-0000-4000-8000-000000000000/friend/shard.2\",\r\n\t\"lastV2Id\": \"00000000-0000-4000-8000-000000000008\",\r\n}\r\n```\r\n\r\n---\r\n\r\n## KV Bucket\r\n\r\n`your-bucket/kv/anyStringLessThan420Chars`\r\n\r\n### Body\r\n\r\nNo size limit.\r\n\r\nCan be: `string` | `number` | `boolean` | `object`\r\n\r\n```json\r\n{\r\n\t\"key\": \"value\",\r\n\t\"key2\": \"value2\",\r\n\t\"deep\": {\r\n\t\t\"key\": \"value\",\r\n\t\t\"key2\": \"value2\",\r\n\t}\r\n}\r\n```\r\n\r\n### Metadata\r\n```json\r\n{\r\n\t\"k\": \"anyStringLessThan420Chars\",\r\n\t\"type\": \"string | number | boolean | object\",\r\n}\r\n```","readmeFilename":"README.md"}