{"_id":"@3plate/graph-core","_rev":"14-b6eee9de0c72de68fb5edcf11577c581","name":"@3plate/graph-core","dist-tags":{"latest":"0.1.18"},"versions":{"0.1.0":{"name":"@3plate/graph-core","version":"0.1.0","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.0","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"dist":{"shasum":"b70066d15b498b2e6bdf63e045ecb9063f4880bf","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.0.tgz","fileCount":8,"integrity":"sha512-s3/XyU6hy8b5fq5LhQGqScETmcU3IjLKNjOx6N6ocboK1CqDK4yBbf7GV2xZpFIDhWL1+3vaAUhYqxQydC8L0w==","signatures":[{"sig":"MEYCIQDuV+frvYSw8aaLpkgJ9Pl+LvMHt2144zRtrAVoj/qE7gIhAOJ42dFHCR7CWTFUigIvnL/mCw3SC+4WFdpRyBrt1eln","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154435},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.js --format cjs,esm --watch","test":"vitest run","build":"tsup src/index.js --format cjs,esm","test:watch":"vitest"},"_npmUser":{"name":"3plate-nathan","email":"nathan@3plate.com"},"_resolved":"/tmp/62463e89f3ca4ab703401196b0ffb775/3plate-graph-core-0.1.0.tgz","_integrity":"sha512-s3/XyU6hy8b5fq5LhQGqScETmcU3IjLKNjOx6N6ocboK1CqDK4yBbf7GV2xZpFIDhWL1+3vaAUhYqxQydC8L0w==","_npmVersion":"10.9.2","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.0_1765131749207_0.4245974949094238","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@3plate/graph-core","version":"0.1.2","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.2","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"364dc95745b194545f2214db004b92428f31e4f0","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.2.tgz","fileCount":7,"integrity":"sha512-z/iqoD0tKJQixkLmzr8y7xScEH1zX6AC58nIxFM0jo86uodlZP1UNOqSwPEKr6ppy5tDoHY8igQONA0c+rv09Q==","signatures":[{"sig":"MEQCIAxTS+MaBcKXddC096zBWoRDwlcCrlsqK8sGBILshfaXAiAEb0D2W9KnOH6NeBU6o3znmqmWlbHXDlCIq6paw72p1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196746},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/19ae27640719dda7ac182b611151309a/3plate-graph-core-0.1.2.tgz","_integrity":"sha512-z/iqoD0tKJQixkLmzr8y7xScEH1zX6AC58nIxFM0jo86uodlZP1UNOqSwPEKr6ppy5tDoHY8igQONA0c+rv09Q==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.2_1765503403392_0.251637670942783","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@3plate/graph-core","version":"0.1.4","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.4","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"d10d8c4ee94ebd53df9f715db82623b787f7217e","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.4.tgz","fileCount":7,"integrity":"sha512-gEIIBVjPdSF/swGGra9iIk37nkOATn485GG5G5Nk5EovGYtqgLYhHxT2E5ZratREQ0tJehRW07zWLxXFAYl7vg==","signatures":[{"sig":"MEUCIQDM61jYDzkQKxDaJptSPJws4BMo9uH7vtdBydAp6OIQwAIgR1LhMJGNJBdyxcGn7CLvQb0RDtQTMkwfTa0grHo0U6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231988},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/1d9165c9f05a688b2d24419fc7ecd5f4/3plate-graph-core-0.1.4.tgz","_integrity":"sha512-gEIIBVjPdSF/swGGra9iIk37nkOATn485GG5G5Nk5EovGYtqgLYhHxT2E5ZratREQ0tJehRW07zWLxXFAYl7vg==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.4_1765768316089_0.857360529179614","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@3plate/graph-core","version":"0.1.5","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.5","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"c7bc9160ce652c749f108967ef394ee0d15bf529","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.5.tgz","fileCount":7,"integrity":"sha512-R2RMJ8jmoKLrNn09rn9mluydGGhRmAGQbH0t0SfaZk8OHmbhiDbrC+lc+eb+JwZyir+ZufyLMSnatVgFvwESLQ==","signatures":[{"sig":"MEUCIARBVx5hNbgd/6gCe3meWXVBJyHeafCZd/4S6PHO8L7aAiEA7E39VIbIlTSvpWod/EOmIN5Wya+qRAyo5u/RPXcuz/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":316039},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/eacb35400cae2e9d48d852bb606051c8/3plate-graph-core-0.1.5.tgz","_integrity":"sha512-R2RMJ8jmoKLrNn09rn9mluydGGhRmAGQbH0t0SfaZk8OHmbhiDbrC+lc+eb+JwZyir+ZufyLMSnatVgFvwESLQ==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.5_1766450726911_0.6135606784011034","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@3plate/graph-core","version":"0.1.6","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.6","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"1184a0b6ec42c1cc36d9c6e1408569d51b5b60f0","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.6.tgz","fileCount":7,"integrity":"sha512-gZDTmUfxrj9RdCybrK4IJCHvM2LFU/pocW9v4hpqfrWG1tVjF/jXlCN97J3RcOaVYsWZR2PbK/ife+V2rVmxnA==","signatures":[{"sig":"MEUCIBjyvxdIIgVVnSOBQ90W36IBDtZkq3PFdOdA2CSFCviIAiEAuV0k7H6c612Ay26TvzaKOaqTREHjxp0Mo1meO6IgE0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":399180},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/cc2b89d8b0cfe5507f7ef3465af9a2ad/3plate-graph-core-0.1.6.tgz","_integrity":"sha512-gZDTmUfxrj9RdCybrK4IJCHvM2LFU/pocW9v4hpqfrWG1tVjF/jXlCN97J3RcOaVYsWZR2PbK/ife+V2rVmxnA==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.6_1766683284465_0.646470257062705","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@3plate/graph-core","version":"0.1.7","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.7","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"83530e90a6badc52e74632eb415e2b944c0aeeb7","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.7.tgz","fileCount":7,"integrity":"sha512-WxBF/u5EANCM9GtkSNbKrgoSFR5SJ7FUiK+CjQY0txe7b2yNkIIdMp+z23eMkCr9hzZhcqPQsYCZInbHNenA/A==","signatures":[{"sig":"MEQCIACxBgQNwndPUBT3AN/BtdDRRh2fGYYOGmcG8/jQjd0aAiBzwItfhTw9DCrWFIPL+MCrSAiAddt4m6U8Xw7derJVow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":410520},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/7e022eeca97f83a961ebe2af4efa888f/3plate-graph-core-0.1.7.tgz","_integrity":"sha512-WxBF/u5EANCM9GtkSNbKrgoSFR5SJ7FUiK+CjQY0txe7b2yNkIIdMp+z23eMkCr9hzZhcqPQsYCZInbHNenA/A==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.7_1766691943453_0.943921315517211","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@3plate/graph-core","version":"0.1.9","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.9","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"4773bc19a3f318104742300006fb934baae5c15a","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.9.tgz","fileCount":7,"integrity":"sha512-H7SDlo9ohXqjpwK8DaCc3nCVhNtTdF3O5bYm39Aowrtogucez2mqVRqhX1KYe5JHbZoXD5Z2kJnsdydhkh49yg==","signatures":[{"sig":"MEUCIQCvX9juMbecoS9PLYr41Oc+v0J77l1edwZijjP4sOHs4AIgIXYHaUPJZGG8Qsq54efUmJ7QSEKXKyVclfH93lxo/vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":424270},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/ed732c6591b2d32adb1ddafe20efdf51/3plate-graph-core-0.1.9.tgz","_integrity":"sha512-H7SDlo9ohXqjpwK8DaCc3nCVhNtTdF3O5bYm39Aowrtogucez2mqVRqhX1KYe5JHbZoXD5Z2kJnsdydhkh49yg==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.9_1766723594899_0.5635489497307495","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@3plate/graph-core","version":"0.1.10","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.10","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"9dc58646a37fdd9d6b7de98d700de73c68e9007a","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.10.tgz","fileCount":7,"integrity":"sha512-MIs9uF199r9sGpJxJCSnwyZ+3MXkq5oAfFI+eLCFqtuB1YrfUc1a2ycG+ZJ+MGpYnxVPcxwZYDkS8d/r4RVzyA==","signatures":[{"sig":"MEQCIAm/vsqMHEZ3SoWsOBlAfbQBInrJS11kzFrLzu2uyzcBAiAXwbA80Om+QgZKC5PmZjqC1Z/V2Aqo7hQgdTldcmlsIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":426821},"main":"./dist/index.js","type":"module","_from":"file:3plate-graph-core-0.1.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/90c9ba477c59ebb638c4c0cce7b93824/3plate-graph-core-0.1.10.tgz","_integrity":"sha512-MIs9uF199r9sGpJxJCSnwyZ+3MXkq5oAfFI+eLCFqtuB1YrfUc1a2ycG+ZJ+MGpYnxVPcxwZYDkS8d/r4RVzyA==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.10_1766765570921_0.10876415761880809","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@3plate/graph-core","version":"0.1.12","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.12","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"c6122d48ee57193f00f3b63cd5302db413bda4be","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.12.tgz","fileCount":7,"integrity":"sha512-9VYr0vDeHuTMl3Ji798PWA4P+oq/oKDdaoJnHDPGvZE2KruPgU//QqVgBMkHglR37FXjcrpfv7W8wNAdtXgQvw==","signatures":[{"sig":"MEYCIQDM0xDDFgI0ZkLD+GKfyWTbuWc8ACuUdLsdJiLteea1wgIhAPOOb/B/UKkhWlVTpsBdGxuJ31WTXhFr/4wcVFhnPPtY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":426733},"main":"./dist/index.cjs","type":"module","_from":"file:3plate-graph-core-0.1.12.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/3c2985457dfa5efd34177f00fdb75925/3plate-graph-core-0.1.12.tgz","_integrity":"sha512-9VYr0vDeHuTMl3Ji798PWA4P+oq/oKDdaoJnHDPGvZE2KruPgU//QqVgBMkHglR37FXjcrpfv7W8wNAdtXgQvw==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.7.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.12_1767111645842_0.8983229533143906","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@3plate/graph-core","version":"0.1.14","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.14","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"cf15774e370d7617ebc90e46cfb735e22abaad71","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.14.tgz","fileCount":9,"integrity":"sha512-3xpEpYnz9l8TEQjI9sHb+3qkn7rxnCRnyA/QTdeRkDYVydU+JxGXRfQRxQeu8VYdILGZRCsR/bfMjVTElocKMQ==","signatures":[{"sig":"MEYCIQDhpmRmFyZ/F4cXOsZKF7DF5CyUIC/BC7Vw6lC1FL96sAIhAKSdGabD3sNu2UchhHmp5Qj75va/2NPVw5sVrfBXydSg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1182642},"main":"./dist/index.cjs","type":"module","_from":"file:3plate-graph-core-0.1.14.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/f0b738276ff0d0806905f4d60f10ac80/3plate-graph-core-0.1.14.tgz","_integrity":"sha512-3xpEpYnz9l8TEQjI9sHb+3qkn7rxnCRnyA/QTdeRkDYVydU+JxGXRfQRxQeu8VYdILGZRCsR/bfMjVTElocKMQ==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.10.1","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.14_1772059803285_0.1427570618951981","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@3plate/graph-core","version":"0.1.15","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.15","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"c008a7c29969d37746f9836296e0812c820a5155","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.15.tgz","fileCount":9,"integrity":"sha512-PWe424HjhZPPAqnby27dRyasnj5hEhWdOFlTM0sPKhX5NoGwoR39mLE2R2Z1FHua8SnLdCEtGdRGbsvgxg8Juw==","signatures":[{"sig":"MEQCIEBgQjHYEO4W2aP8YvsaG0Iu3ZjnlIxh9Lpfvl7RRBeRAiA7zpGb93cDrZG5tPDOXAcfOQkSCT8Yx9hBp9GYpJEHfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1182663},"main":"./dist/index.cjs","type":"module","_from":"file:3plate-graph-core-0.1.15.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/e5f6975dc095608a80fbcd72774f287c/3plate-graph-core-0.1.15.tgz","_integrity":"sha512-PWe424HjhZPPAqnby27dRyasnj5hEhWdOFlTM0sPKhX5NoGwoR39mLE2R2Z1FHua8SnLdCEtGdRGbsvgxg8Juw==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Graph library with stable layout and incremental updates.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.15_1772060497568_0.3086468360114796","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@3plate/graph-core","version":"0.1.16","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.16","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"e3e864abd29bc661beb8e94e2403dcd3ef129b0b","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.16.tgz","fileCount":9,"integrity":"sha512-dT73pEaBx49PlBgmCA6Ic0boxmq8RUianU8b0eGhvA8hne3ZJTUrV8d8rOK/p/gscv9qCOyZiSIZnodWUirA6w==","signatures":[{"sig":"MEUCIBYTcExUeiJ1y9zmGZVIpEuAyXxaVGR9C2kAJEC4CP2CAiEA22K2vC8XsnmZt/u0GQegqk3LfULPuOCV6CwKT/YK6I0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1190444},"main":"./dist/index.cjs","type":"module","_from":"file:3plate-graph-core-0.1.16.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/8bf3438eecc866247a59e904f78d5e4e/3plate-graph-core-0.1.16.tgz","_integrity":"sha512-dT73pEaBx49PlBgmCA6Ic0boxmq8RUianU8b0eGhvA8hne3ZJTUrV8d8rOK/p/gscv9qCOyZiSIZnodWUirA6w==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Framework-agnostic core of [@3plate/graph](../../README.md) — a graph visualization library with stable layouts and incremental updates.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.16_1772481253162_0.7823828432318427","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@3plate/graph-core","version":"0.1.17","license":"GPL-3.0","_id":"@3plate/graph-core@0.1.17","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"homepage":"https://github.com/3plt/graph#readme","bugs":{"url":"https://github.com/3plt/graph/issues"},"dist":{"shasum":"a2694c766a24306d478941beb5b6d94cc09efa4c","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.17.tgz","fileCount":9,"integrity":"sha512-WDPPHmFlBEK2oQW3qa22+/8tHI0JQ7k1680LEWDfqlRiL0w6UExB4h0HUOfJKB1JN8HBZZY+izw0aJKAhD/RRQ==","signatures":[{"sig":"MEUCIF+9Q63PLzauAJdyfOFLgGW1Jw8JSat9Gp1HNSvz/4CMAiEAoPmkftuJkP/6w7DH0QYfBQEK7hTNyiQjIErXFf6ohCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1191506},"main":"./dist/index.cjs","type":"module","_from":"file:3plate-graph-core-0.1.17.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"_resolved":"/tmp/b5401099feab99cbaec06e836e7f73ba/3plate-graph-core-0.1.17.tgz","_integrity":"sha512-WDPPHmFlBEK2oQW3qa22+/8tHI0JQ7k1680LEWDfqlRiL0w6UExB4h0HUOfJKB1JN8HBZZY+izw0aJKAhD/RRQ==","repository":{"url":"git+https://github.com/3plt/graph.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Framework-agnostic core of [@3plate/graph](../../README.md) — a graph visualization library with stable layouts and incremental updates.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pino":"^9.5.0","jsx-dom":"^8.1.6","winston":"^3.18.3","immutable":"^5.1.4","winston-transport":"^4.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/graph-core_0.1.17_1772489147897_0.3587802308082191","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@3plate/graph-core","version":"0.1.18","type":"module","license":"GPL-3.0","repository":{"type":"git","url":"git+https://github.com/3plt/graph.git","directory":"packages/core"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"source":"./src/index.ts","types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^22.10.1","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^2.1.8"},"dependencies":{"immutable":"^5.1.4","jsx-dom":"^8.1.6","pino":"^9.5.0","winston":"^3.18.3","winston-transport":"^4.9.0"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest"},"_id":"@3plate/graph-core@0.1.18","description":"Framework-agnostic core of [@3plate/graph](../../README.md) — a graph visualization library with stable layouts and incremental updates.","bugs":{"url":"https://github.com/3plt/graph/issues"},"homepage":"https://github.com/3plt/graph#readme","_integrity":"sha512-ThXDS4Yty9fmHvQvVdojbZdcFUSlKL8WMmpklglUq4L8aUFJopm2jBhPRbsUalKxrt1Tfyo4cpbLvkFzMr5lxw==","_resolved":"/tmp/17a957f260ce7f3a3b363d4474c36f27/3plate-graph-core-0.1.18.tgz","_from":"file:3plate-graph-core-0.1.18.tgz","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ThXDS4Yty9fmHvQvVdojbZdcFUSlKL8WMmpklglUq4L8aUFJopm2jBhPRbsUalKxrt1Tfyo4cpbLvkFzMr5lxw==","shasum":"3beaebb97784d62c4d92631990d75c91f05b6afd","tarball":"https://registry.npmjs.org/@3plate/graph-core/-/graph-core-0.1.18.tgz","fileCount":9,"unpackedSize":1202606,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@3plate%2fgraph-core@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF7wGC4jvFBn+kUedETUVzibs4LZSVkM10I6x7TotuIyAiA2qYGYCFYseSZ3EHNmSICA60jly+onggVnNzmPks+0dQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecc8ae24-c689-48a3-a861-f95a43c8a585"}},"directories":{},"maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/graph-core_0.1.18_1772747511192_0.7945855648017313"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-07T18:22:29.100Z","modified":"2026-03-05T21:51:51.676Z","0.1.0":"2025-12-07T18:22:29.389Z","0.1.2":"2025-12-12T01:36:43.537Z","0.1.4":"2025-12-15T03:11:56.223Z","0.1.5":"2025-12-23T00:45:27.157Z","0.1.6":"2025-12-25T17:21:24.628Z","0.1.7":"2025-12-25T19:45:43.610Z","0.1.9":"2025-12-26T04:33:15.074Z","0.1.10":"2025-12-26T16:12:51.102Z","0.1.12":"2025-12-30T16:20:46.063Z","0.1.14":"2026-02-25T22:50:03.510Z","0.1.15":"2026-02-25T23:01:37.740Z","0.1.16":"2026-03-02T19:54:13.352Z","0.1.17":"2026-03-02T22:05:48.113Z","0.1.18":"2026-03-05T21:51:51.405Z"},"bugs":{"url":"https://github.com/3plt/graph/issues"},"license":"GPL-3.0","homepage":"https://github.com/3plt/graph#readme","repository":{"type":"git","url":"git+https://github.com/3plt/graph.git","directory":"packages/core"},"description":"Framework-agnostic core of [@3plate/graph](../../README.md) — a graph visualization library with stable layouts and incremental updates.","maintainers":[{"name":"3plate-nathan","email":"nathan@3plate.com"}],"readme":"# @3plate/graph-core\n\nFramework-agnostic core of [@3plate/graph](../../README.md) — a graph visualization library with stable layouts and incremental updates.\n\n## Installation\n\n```bash\nnpm install @3plate/graph-core\n```\n\n## Usage\n\n```typescript\nimport { graph } from '@3plate/graph-core'\n\nconst api = await graph({\n  root: 'my-graph',   // ID of the container element\n  nodes: [\n    { id: 'a', title: 'Start' },\n    { id: 'b', title: 'Process' },\n    { id: 'c', title: 'End' },\n  ],\n  edges: [\n    { source: 'a', target: 'b' },\n    { source: 'b', target: 'c' },\n  ],\n})\n\n// Incrementally update the graph\napi.update(u => {\n  u.addNodes({ id: 'd', title: 'New Step' })\n  u.addEdges({ source: 'b', target: 'd' })\n})\n```\n\n## Custom Node Rendering\n\nProvide `renderNode` to control what appears inside each node. It receives your node data and must return an `HTMLElement`:\n\n```typescript\nawait graph({\n  root: 'my-graph',\n  nodes: myNodes,\n  edges: myEdges,\n  options: {\n    canvas: {\n      renderNode: (node) => {\n        const el = document.createElement('div')\n        el.innerHTML = `<strong>${node.title}</strong><p>${node.description}</p>`\n        return el\n      },\n    },\n  },\n})\n```\n\n### Using a Framework Renderer (React, Vue, etc.)\n\nTo render framework components inside nodes, use `mountNode` alongside `renderNode`. `mountNode` is called after the node element is in the DOM — use it to mount your component and return a cleanup function:\n\n```typescript\nimport { createRoot, flushSync } from 'react-dom/client' // or any framework\n\nawait graph({\n  root: 'my-graph',\n  nodes: myNodes,\n  edges: myEdges,\n  options: {\n    canvas: {\n      // renderNode returns a placeholder element\n      renderNode: () => document.createElement('div'),\n\n      // mountNode renders into it synchronously so the graph can measure it\n      mountNode: (node, el) => {\n        const root = createRoot(el)\n        flushSync(() => root.render(<MyNodeCard node={node} />))\n        return () => root.unmount()\n      },\n    },\n  },\n})\n```\n\n> **Note:** Use `flushSync` (or your framework's equivalent synchronous flush) so the node has real dimensions when the layout engine measures it. The returned cleanup function is called automatically when the node is removed.\n\nIf you're using React, the `@3plate/graph-react` wrapper handles all of this for you — `renderNode` can return JSX directly.\n\n## Options\n\n### Graph layout\n\n```typescript\noptions: {\n  graph: {\n    orientation: 'TB',        // 'TB' | 'BT' | 'LR' | 'RL' (default: 'TB')\n    nodeMargin: 15,           // Space between nodes in the same layer\n    layerMargin: 5,           // Space between layers\n    edgeSpacing: 10,          // Space between parallel edges\n    turnRadius: 10,           // Rounded corner radius for edge bends\n    nodeAlign: 'natural',     // 'natural' | 'top' | 'bottom' | 'left' | 'right'\n  },\n}\n```\n\n### Canvas\n\n```typescript\noptions: {\n  canvas: {\n    width: '100%',            // Canvas width (default: '100%')\n    height: '100%',           // Canvas height (default: '100%')\n    padding: 20,              // Viewport padding in px (default: 20)\n    editable: false,          // Enable interactive edit mode (default: false)\n    panZoom: true,            // Enable pan and zoom (default: true)\n    colorMode: 'system',      // 'light' | 'dark' | 'system' (default: 'system')\n    renderNode,               // (node, props?) => HTMLElement\n    mountNode,                // (node, el) => (() => void) | void\n    theme: {},                // Global theme overrides\n    nodeTypes: {},            // Per-type theme overrides\n    edgeTypes: {},            // Per-type edge color overrides\n  },\n}\n```\n\n## API Methods\n\n```typescript\nconst api = await graph({ ... })\n\n// Incremental updates\napi.update(u => {\n  u.addNodes(node)\n  u.updateNodes(node)\n  u.deleteNodes(id)\n  u.addEdges(edge)\n  u.updateEdges(edge)\n  u.deleteEdges(id)\n  u.describe('Optional label for history')\n})\n\n// Replace the entire graph at once\napi.replaceSnapshot(nodes, edges)\n\n// History navigation\napi.nav('first' | 'prev' | 'next' | 'last')\n\n// Theming\napi.setColorMode('light' | 'dark')\napi.updateStyles({ theme, nodeTypes, edgeTypes })\n\n// Cleanup\napi.destroy()\n```\n\n## Events\n\n```typescript\nawait graph({\n  root: 'my-graph',\n  nodes: [...],\n  edges: [...],\n  events: {\n    nodeClick: (node) => { ... },\n    edgeClick: (edge) => { ... },\n    addNode: (props, done) => done({ id: generateId(), ...props }),\n    addEdge: (edge, done) => done(edge),\n    removeNode: (node, done) => done(true),\n    removeEdge: (edge, done) => done(true),\n    historyChange: (index, length) => { ... },\n  },\n})\n```\n\n## Real-time Ingestion\n\n```typescript\n// WebSocket\nawait graph({\n  root: 'my-graph',\n  ingestion: { type: 'websocket', url: 'ws://localhost:8787' },\n})\n\n// Polling a file or endpoint\nawait graph({\n  root: 'my-graph',\n  ingestion: { type: 'file', url: '/api/updates.ndjson', intervalMs: 1000 },\n})\n```\n\n## License\n\n**GNU General Public License v3.0**. Commercial licenses available — see the [root README](../../README.md) for details.\n","readmeFilename":"README.md"}