{"_id":"three-sdf-loader","_rev":"29-fb6dd0ccf4ab3fc08b9e201eb6cbd9dc","name":"three-sdf-loader","dist-tags":{"latest":"0.6.12"},"versions":{"0.2.0":{"name":"three-sdf-loader","version":"0.2.0","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.0","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"0a52a8c6a78345d2ae60c0128e8e9d270060234f","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.0.tgz","fileCount":5,"integrity":"sha512-Oa5JzE3cLBT5LCRngft4g8IFFv/DhcKiO75IBx8PyEa+nlxsNZUT5fK1lP6YV4p84fMmCWgvhcVg+xbz/01hFw==","signatures":[{"sig":"MEQCIFrmL5kRtK62UzMsX/K5sfXaPjPD2hCa0OcreF/aNLWCAiBuV3zoqSIcNe2/OHfcnWJa46mvpmdyp/Q7fXmLqAXFyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10834},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"a037706ee1216da678ade83e88ad4c3bd2b4c2c1","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.0_1748519343028_0.46599612095007115","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"three-sdf-loader","version":"0.2.1","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.1","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"5ecfbd885985b6057a377bcf6f9716371800e228","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.1.tgz","fileCount":5,"integrity":"sha512-HqtvsB1VcLG6+bQTA8u6rtAwPkk9LYGJxpvU4Vp8ciuByr3DAbS56OznyUErClLkZCxcTse0NIF6pUNDszBCGA==","signatures":[{"sig":"MEUCIDFwOchNZ3+7Y2uSrI3Ci/IrEiLfrFMEFZ0pPlnqOiSKAiEAugUmlq7nkcuJrDt6WanSZ8u8r2WS4Dml1wsDimX6dig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10831},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"20a8fc98993fdafdf5cd39f26b9d4639302b5922","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.1_1749721489880_0.7276163092035874","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"three-sdf-loader","version":"0.2.2","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.2","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"8a14866cbdb5c9a73b7e4520bcbe43356587c919","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.2.tgz","fileCount":5,"integrity":"sha512-xGshebhDcBPQVcywnFZcfm9IChbiJVtSACIv8mxKQL9bm6CYnG0v1rOFiAZUsErJMBgKLZP7Xj3RFr7/SLRUGQ==","signatures":[{"sig":"MEUCIQCt8N2dVDyNVGg0yhXpQ26AGP6jRU4ystmFuE0YIzoLewIgRRGJnFsTa0miG1On2S+IYFnLkhez7K3EvGXziCRAH8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13499},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"d05ee204de0bfa0323a2b1436800ae6648aa975c","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.2_1749727398001_0.25670730597234637","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"three-sdf-loader","version":"0.2.3","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.3","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"fb5770cb712c69b739daeb9f846f3d974fc9b09e","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.3.tgz","fileCount":5,"integrity":"sha512-uqEVpbKXtRyMmLkT5pHsTvkutkNe/biRFGlpJXUaBHFY4Bg1DAyByu5JcoAIS3LGs+EFinn51Vpq+wq5R17usQ==","signatures":[{"sig":"MEUCIHioiDDzFGAsiSg0Gc70vXP7Cu6LXndrt7vGhavkfXXUAiEA0og0UiWMKM3LDWMEl401a8zPVH9evjhwntrEuB/J3NY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13753},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"9dd736f300fc47b1024d3a9bbb2e114b1341713c","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.3_1749728431982_0.2597181080581299","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"three-sdf-loader","version":"0.2.4","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.4","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"30a16f83b94218371995a955f8887db0c0dd7839","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.4.tgz","fileCount":5,"integrity":"sha512-v5/Bz+pqYMhrVxK6ZSQHj/dGy0qBIUJFjDqtwZTtqNoLPtSCR54C499hZD6nd/oz+8BHT1b5kMcf+cP26X+Yrw==","signatures":[{"sig":"MEUCIDEhvnj+sRZVQZTnrhUg6cTWAKjvd2hoDBC0GnoGBiTcAiEAsUmFJe2+1TFb0BMtb++vJzwOoXPdhMAJav3fabijOR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14570},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"373b72a9834a9c204dc7888e661d68463b5abe79","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.4_1749729431229_0.6254772423247932","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"three-sdf-loader","version":"0.2.5","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.5","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"c8a99bf5f4c52ab31536f5ea373d6c8abd61f0ec","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.5.tgz","fileCount":6,"integrity":"sha512-c6z7s+4IxzLgK1DfdpPF0Wqh6lSSvhK17hkJaXrZvu3b8MYJI7kZjhq81A81DBlTkl/4UERBrUlWrwE9IPIQBg==","signatures":[{"sig":"MEYCIQC/UomG7U2mIe/XkxWNGYhRv7Y1AbZXQfbbQGQQYzlS8wIhAMe7k/pCzxxxaXj5CzbcAkMte9TgFnpqqWsO4m2Ev7PL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204674},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"16e92831f0dd44ca1628c06c68937ab33aa541e1","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.5_1749729875169_0.9749870605417781","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"three-sdf-loader","version":"0.2.6","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.2.6","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"46f74e5cc37d2cd1fec864257dc2cece9dbb01b5","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.2.6.tgz","fileCount":6,"integrity":"sha512-+VPmWcQfuabH7/BBnquzuDbbv51nMZEhylOlf1AezecoRJdDbcsJdUkDOTF2tXvULV/NefgixD5BA4zxLZvIAg==","signatures":[{"sig":"MEYCIQD+VEJkzy4k11nEt29V7uuMX3yu/KR9ZxVo2YE4nX7rYgIhAOstcAkJlg9zNcDZHPvjT/OCu665El04vN+CiHAlf7Xi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205929},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"e620a0fb27d3118e495e5f347520915fc57bc7c9","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.3.0","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.2.6_1749743625706_0.43735881891561923","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"three-sdf-loader","version":"0.3.0","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.0","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"883aa8ef9d933681571b78019e15326f9b438a49","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.0.tgz","fileCount":6,"integrity":"sha512-mzUEvJxO8uyrTTANS3XLJBPXy0MsrabGV1FTRumqBdZPep3WBi1NkORLT/42TvwOFf4tFgB6kHnDYv8pU425lw==","signatures":[{"sig":"MEYCIQC1Z2tIgkbs3u3xf93Ij+3v3uneNMrELFvv61VwzVtk6gIhAON+PY0nBG7uKc3XQTCSm5WArBwE0eoAs5mSzbdSjE+i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210442},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"e620a0fb27d3118e495e5f347520915fc57bc7c9","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.9.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.0_1753667976151_0.05657956511133122","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"three-sdf-loader","version":"0.3.1","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.1","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"22b7025d374db6ccd2d7208e9b0b086199fb69eb","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.1.tgz","fileCount":6,"integrity":"sha512-Bn7W+MD0NAVk0nwGcVc3/50cejdC5wJZrNEOCtD/bQWULhyEFrIGpDaj+j/898qfoMMpUrqTMbYyUhQZpvYjjA==","signatures":[{"sig":"MEQCIDVBMbcqQCdB8K39bS6o6DSUlE1fSd8xQ6i/aCJJudFOAiA6vIpAG5xCkAiqXpZ4yJpjwY9U3gUD6x8a7rrIJXJj4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218132},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"e620a0fb27d3118e495e5f347520915fc57bc7c9","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.9.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.1_1753673518095_0.5983165752904225","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"three-sdf-loader","version":"0.3.2","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.2","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"7f3faa305fb2ba1496465b775bf44c1e184f12e2","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.2.tgz","fileCount":6,"integrity":"sha512-i3JVDmoh84aaP4o77ey7UT6RmQxCknzo0HtUNRFR2XLJx3/6dj6/dtW2+V48j/YhBYX6BUISdk2iL6K8SXZCqw==","signatures":[{"sig":"MEYCIQCz04zzApZQEMnhc9WrXrL+8TksAb2QHd7HFKRJ29qGbQIhAI6aT00CBwRXyvTJGGazZ/bUI+yqpUBAhZ1kdUEmYLlT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218132},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"d428b5cd638730c98a3af14767e4e2ecd8cbb40a","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.9.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.2_1753675078404_0.2363884018528597","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"three-sdf-loader","version":"0.3.3","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.3","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"6b66265898a6491da8b99ca48b2a4262041c56e2","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.3.tgz","fileCount":7,"integrity":"sha512-Jm0bpDIOP84xQIyOi0HcITCHTloggCHqOnbqGRHBW81CDgDkmQKNLydyA4vKm8zaNd/fiLqWWHEGQE2YCHLDmQ==","signatures":[{"sig":"MEQCIE0JlB/Vl23VYOpCaHSIzEG4cgSBrdD/KWhKmAjvq0qmAiAjkFvHCDeRmp0S5guDy2ldPry5CYEkOHeAxILQLxcAkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218907},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"d428b5cd638730c98a3af14767e4e2ecd8cbb40a","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.9.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.3_1753721899807_0.19139642099825926","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"three-sdf-loader","version":"0.3.4","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.4","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"5011833651823de3f336bb3ef2a2541b466a0616","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.4.tgz","fileCount":7,"integrity":"sha512-LSKfuIeL5xdjqP7wHgavUjT648wmiReKhFbkjRsD28+aXPEAf7kvR23lubmk+1XPUz4Hrq7cfL5rWomEpTcKZw==","signatures":[{"sig":"MEUCIQCfRNZOSn8w5rKV3psgBGJKC9V6w7o170BSNvdnuk4VHwIgZmQtjH7WhBAvQ3ziJPEyEQkWmpulMWjq1UGJUaSAtJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219779},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"d428b5cd638730c98a3af14767e4e2ecd8cbb40a","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.9.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.4_1753740342181_0.9015341849268805","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"three-sdf-loader","version":"0.3.5","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.5","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"ba8f26cd4497f03e29be4d8469e057fb07221f31","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.5.tgz","fileCount":7,"integrity":"sha512-+5iE8Xkgggo9EMnckUXWTER28fs1ncrOY1EnPJ00qG4TAn+Cvhu05wuhNm7XUyCWLuVQr3nb2g3JpMNcVur3Uw==","signatures":[{"sig":"MEQCIG6JVFQcs7T0CNLgjVTlHm42/3a3uQUxUspqP2uRyVpUAiBgCuwW2tfw1XxAxW8fRsFtCDYx7Ds509uV8FfKy2P5+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220166},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":"./src/index.js","gitHead":"a3b65a2dbf7e4eeab35ff7c06a2f733972ac4645","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","prettier":"^3.2.5","size-limit":"^8.2.4","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.5_1753749929431_0.6629150611352876","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"three-sdf-loader","version":"0.3.6","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.6","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"6a1c66547123b5093ff90d26cd5549965c1f26bf","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.6.tgz","fileCount":8,"integrity":"sha512-u+gBR8Uixw1lFse13eWNs54VQltAX91vRE3wP/cg6GTT6e9+wc/dl+ehzB0Bbo3ByHdQXCQ+6fpSsAekFcXYtg==","signatures":[{"sig":"MEYCIQD10XlXS/ayEBLEh+DRxY3ms8e8m9gGw2WyBlxQD2yZwwIhAJjdvRJe6WR1jBKbfkLivCxzIG+aUcFpnJfX/PFLi3hA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707093},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","unpkg":"./dist/three-sdf-loader.min.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./src/index.js"}},"gitHead":"a3b65a2dbf7e4eeab35ff7c06a2f733972ac4645","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","build":"webpack","format":"prettier --write .","prepublishOnly":"npm run lint && npm test && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","eslint-config-airbnb-base":"^15.0.0","@size-limit/preset-small-lib":"^8.2.4"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.6_1753814980975_0.3003643229889412","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"three-sdf-loader","version":"0.3.7","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.7","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"cb49b5aceb6f670754faa8b019c746be94efc3ed","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.7.tgz","fileCount":9,"integrity":"sha512-I99lTd+hnnQvrtkNpsQqQis+vwbVFXPz4FHgQESHHZ8SyM1bqYocFZPiEuj+gMl5AoO3OJEVbod+uDvtD+rHoA==","signatures":[{"sig":"MEQCIAi4FS7+cfRndY2/4uRqKPwIQ2LojqQlx0x/BE0vpFaZAiAc0Ictixs3tC1Iw4lwB0AVxuoCFk+af608E2cGmD6/yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710183},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./*":"./*"},"gitHead":"a3b65a2dbf7e4eeab35ff7c06a2f733972ac4645","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","prepublishOnly":"npm run lint && npm test && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","dependencies":{"three":"^0.160.0","sdf-parser":">=7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"sdf-parser":">=7"},"peerDependenciesMeta":{"sdf-parser":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.7_1753816409611_0.7512500638256321","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"three-sdf-loader","version":"0.3.8","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.8","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"83ff835d614e69b756010912e10cf9c2a2468daa","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.8.tgz","fileCount":9,"integrity":"sha512-eKlxVhhsgYJDqwkNBa2XR/3E1+iFJauPlkg8WxV+/IcQGzhHL9XhPlq0dAh/Bm/3r1Kya58PbUyztP1yuv2KbQ==","signatures":[{"sig":"MEUCIQCgttEMukxzARv300Al6/pGNzD1iSPY8cJcUG5L92eDIwIgVgfNZkz0gd8+xEn0Vwp8UiyO65U9X7+kmU1p1gZHVck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264608},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b76df4833e0110664bfaf9e5740323b2db4da0ea","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","prepublishOnly":"npm run lint && npm test && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":"^0.156.0","sdf-parser":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.8_1753817887567_0.8433680452449481","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"three-sdf-loader","version":"0.3.9","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.3.9","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"b25934c0aeca72f62f30a0539b42ab40ea8ff40e","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.3.9.tgz","fileCount":9,"integrity":"sha512-8bqI13OkgxZbBCsH7xBiJo7o5vcU9NteI5Jx0s91Y6juPlnqg3f/Gkwu22ffz0a5ibJn7inVBm/lLV92QxiwcA==","signatures":[{"sig":"MEYCIQChNtinpDUbdbps1h3By3VsXhtUMFDEulIt4v/gEgn+OgIhAPuWULwNHwQmcO60W+seBj4YRH1j9O+Po9okvmAnHHh0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264245},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9e8412841f6b78b0bc9d5431dd208537449b3d88","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","prepublishOnly":"npm run lint && npm test && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.3.9_1753823247947_0.25822133223435006","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"three-sdf-loader","version":"0.4.0","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.4.0","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"8b3eb9cac6db7bdf5e9ad698ac94133f246990e1","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.4.0.tgz","fileCount":9,"integrity":"sha512-mb6A8dcuY3E1H/EjWMLlLQL+3/sKGpjcGevuSBal01lK2fy+Z9Df4bMLGxwcRk5AHdRs1Pni4+HJtIk8ZMJPFQ==","signatures":[{"sig":"MEUCIGBSkZ8lQW1RmoYc0ibYvTqvhB+oMRGjGCofyR8p7F9HAiEAj6vlp7s6tQysZyIa6c06zanRfAi2zzuYEdbjKWg/7sQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292171},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9e8412841f6b78b0bc9d5431dd208537449b3d88","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run --coverage","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","prepublishOnly":"npm run lint && npm test && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.4.0_1754629236003_0.5619473094552818","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"three-sdf-loader","version":"0.5.0","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.5.0","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"4f844dec01963766d7b102b38e429f89851c6729","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.5.0.tgz","fileCount":9,"integrity":"sha512-Cz9CIeemJZhO58ZgeD85pQFfhTWYwa17YZpAacu/8SB3MAFKn567R+QE5McxJNbbMMvwHKd1M7hfSBQDD0b99w==","signatures":[{"sig":"MEQCIHCF3YW31dmYNpPUKGK9brb2Ets3KCYod2j88TsXhq+2AiBsdundmx/3d3UGvaqPF0ffDnZz/cURUb5Cll2jmfHXOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367902},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0cf39591b9c5e55cdb26a4be82e4d3d512d8f4ef","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.5.0_1755053484256_0.3972164859829237","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"three-sdf-loader","version":"0.5.1","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.5.1","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"bfa79a2714a3bd1c7c7979ec5d8b6e4cbf39c8b8","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.5.1.tgz","fileCount":9,"integrity":"sha512-F0ZFt5de45XPBSAHt+vWqqE2mVFXFdmPiQ1dBcQVj+cZfKvKDPkdJ2NG3x2GKlzuxBfTiqCoO3Z7my40tnX6eA==","signatures":[{"sig":"MEUCIHU6kGWYgfK7pMSaMd4DhJt72jLTcG62L/70AIoKO5KUAiEAiylqibBr9BCYcYODy82j4mX3RHUt66XsLBhI7s3Owmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":373271},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ceec4799378b0b2e4ed07dde87b7a9820852044b","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.5.1_1755140587561_0.9683113706297768","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"three-sdf-loader","version":"0.6.0","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.0","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"5df1f93cdcc1c5a88beb2012d6c9758a917a0116","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.0.tgz","fileCount":9,"integrity":"sha512-zw9I+7ViWDx/UQQr/jJlk5x57n1rYNy7G0WEkh0tpa8VOV4bXc5rKqNm3BI8P6z1hovM6WYcAr4SipHM4ojqqA==","signatures":[{"sig":"MEUCIB/7g/qfi0wiJ+sS3kRQFQpwSbHcH0WuBf2snDSKoyexAiEA1n26d+vS0yT6TNLFq0gmwRuZ+g5XSXlwz9v/QAk8jBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370305},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0c650cf23e5c93e9baa89836f014cb3719c82791","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.0_1755141626239_0.846450606917613","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"three-sdf-loader","version":"0.6.1","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.1","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"9d5d4b113597e1d459fc75cd8ff8c9cd30c2d4b9","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.1.tgz","fileCount":9,"integrity":"sha512-mNJR0XGCEcaNItLxyzYw5ywxJSRyxHQFYnFUoxa9xbU+ijCdl2LcHwc+ORmaThFmvlBLX3oy0zQ55/kaw7zraw==","signatures":[{"sig":"MEUCIHrxQMnFvxbf47xM1HZUeWc/wJA7UeDv+G7kbydh85PuAiEAxdey26OFJA5HvSryD+nKQ05CqS8HCWH1nvtM++pbKyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374320},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"083572727f9c013f5770b1f1613a83f9c6606f79","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.1_1755142093555_0.8407116802370007","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"three-sdf-loader","version":"0.6.2","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.2","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"e10cf8aacab3835f8ab87882416116f5941461ae","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.2.tgz","fileCount":9,"integrity":"sha512-R2M6M2sMRDDnKYx5xvQfuev2yB1Vl3t2X4oEEN1yGUm2A7ikp4ASWJ47IbgljKPgcK6n3SfkgNTVElx9POCwuw==","signatures":[{"sig":"MEQCIFzWg++CTOtKPWmzOoeZRZe/gUornbEDeelbqpyUu418AiAxuF9muOBpPn1niY0/WIUy1AiSHRTxrQOVHyvrx7dmpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378901},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1b01838b8168e6ce513ec9938b9f5ad1f0d07ed9","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.8.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.2_1761855705484_0.6927081141838753","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"three-sdf-loader","version":"0.6.3","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.3","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"83ac6f1596a70fd1d8f192fe58351b2ec55013f3","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.3.tgz","fileCount":9,"integrity":"sha512-DObMJGI6aO+Y7S1vPTKpmMY6M8QnHfbXDQXu8cfLIAcK3vyZUrnvxJZRznu058USyvgLn5g9GQXT9pvVcbh8sg==","signatures":[{"sig":"MEQCIEG5HxtRmdzp0REKFtBLheU2kRuViP/PNivjKelIaiIeAiAP75qYA4+PKL9DmTUE+mHyW6ASjzuQ/kq9QvtzuI1MXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":380695},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c334c57a63978058f61dccc91ef6551b754f34f2","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.8.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.3_1763776264489_0.3307124834465094","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"three-sdf-loader","version":"0.6.4","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.4","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"dist":{"shasum":"6c1097630f5c19f0719b524d9b541e28b86346f7","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.4.tgz","fileCount":9,"integrity":"sha512-RIoCms8fi2HU75+bqgVoGK7s7M62yurt+EJ1y0tiX7vEFYSGgqRLYC6VOsvLsmFZFfMiGAvYu2Dc3huzo+BUtA==","signatures":[{"sig":"MEYCIQC4r36roN7vmgjohcYEPhVaG42ESWt4Gph8HaHZ0rnHvAIhAM559a6SuQliDYjqfB3kNUVPeO2tKhX4tedmORk8rFho","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390768},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c0654edb3d6ea70e9e577e77f612678de3fa91ed","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"jakekinchen","email":"jakekinchen@gmail.com"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"10.8.2","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.4_1767418546747_0.11634808964935472","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"three-sdf-loader","version":"0.6.8","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.8","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"homepage":"https://github.com/jakekinchen/three-sdf-loader#readme","bugs":{"url":"https://github.com/jakekinchen/three-sdf-loader/issues"},"dist":{"shasum":"8dc8131d702782b86ecc40b1681fb4ecb92d7244","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.8.tgz","fileCount":9,"integrity":"sha512-MQMSzU9gwDOmLjGGm+jlVjwHyg1iEka24C4wo0ri65/xPOMEezxa3yNqeDzl/LHUFctwfHUBOQa/92PdHgiFDQ==","signatures":[{"sig":"MEYCIQCcZWKgeLLeTNEtCH1r5N6XuSEF4fQfeTyoFbZz7LcdygIhAMLN4QpkChjs5a11ze8YzrnwwiXrXp2ps2ZaASUNaKi5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/three-sdf-loader@0.6.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":395484},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"294b765d680eb6d5d3316fe670a53a51850cdb4a","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3e621c57-6e20-4941-83e9-e714ab88ba53"}},"repository":{"url":"git+https://github.com/jakekinchen/three-sdf-loader.git","type":"git"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.8_1767897599932_0.46975742774554785","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"three-sdf-loader","version":"0.6.9","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.9","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"homepage":"https://github.com/jakekinchen/three-sdf-loader#readme","bugs":{"url":"https://github.com/jakekinchen/three-sdf-loader/issues"},"dist":{"shasum":"8c7f70d0ea86483fd6234fefb537ec723bc6ea9c","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.9.tgz","fileCount":9,"integrity":"sha512-X6EETm3P633cx/EcWKaUy013rZQwXF1WQCeRyF9SrALJSAKbhZCOhjogyhRhJpEb9kKEx44cgM6ISLXFmlZrrQ==","signatures":[{"sig":"MEUCIH2kuKobbiYHWAk1Fp2TbRws1xDbsC33keg0+1awLw5AAiEAnWiX/DAAl0sGhSkZY/Dd/5CoSnr0iaxOq5MXkUOwSHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/three-sdf-loader@0.6.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":404948},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"989c257bbf19b65c6e7acbf3c31ed29ad3807e4d","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3e621c57-6e20-4941-83e9-e714ab88ba53"}},"repository":{"url":"git+https://github.com/jakekinchen/three-sdf-loader.git","type":"git"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.9_1767898982016_0.2139891064102628","host":"s3://npm-registry-packages-npm-production"}},"0.6.11":{"name":"three-sdf-loader","version":"0.6.11","keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","_id":"three-sdf-loader@0.6.11","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"homepage":"https://github.com/jakekinchen/three-sdf-loader#readme","bugs":{"url":"https://github.com/jakekinchen/three-sdf-loader/issues"},"dist":{"shasum":"42f3bdf9986499c7dbd71dbd6c935f33c144072e","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.11.tgz","fileCount":9,"integrity":"sha512-rKELFVUIRt+pUiZcr9LTGXjYCRjLN9MMfptTAL0sN060C/cavieYNsxWsc1JK8wa6eDgtSGzSC7ychCTuS7x+Q==","signatures":[{"sig":"MEQCIB2wLxAaHfQQ1y1tbenB/M7IN6IFFl6mE/3cEo712HyEAiB3/ot3fW4OonQuz5/3ViCwmS+Jz3lXAJsFDzKaGj530A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/three-sdf-loader@0.6.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":419554},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/index.js","module":"./dist/index.js","vitest":{"coverage":{"all":true,"lines":95,"branches":95,"provider":"c8","functions":95,"statements":95}},"engines":{"node":">=20"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"681e497ff77b058bb2634d9e770389e78a1e2785","scripts":{"lint":"eslint . --ext .js","size":"size-limit","test":"vitest run","build":"rollup -c","format":"prettier --write .","postbuild":"cp types/index.d.ts dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3e621c57-6e20-4941-83e9-e714ab88ba53"}},"repository":{"url":"git+https://github.com/jakekinchen/three-sdf-loader.git","type":"git"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"_npmVersion":"11.5.1","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.46.1","vitest":"^1.5.0","webpack":"^5.101.0","prettier":"^3.2.5","sdf-parser":"^7.0.4","size-limit":"^8.2.4","@babel/core":"^7.28.0","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@babel/preset-env":"^7.28.0","@vitest/coverage-v8":"^1.6.1","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^10.1.5","@rollup/plugin-commonjs":"^28.0.6","eslint-config-airbnb-base":"^15.0.0","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4"},"peerDependencies":{"three":">=0.156.0","sdf-parser":">=7"},"_npmOperationalInternal":{"tmp":"tmp/three-sdf-loader_0.6.11_1767910061275_0.536609516095931","host":"s3://npm-registry-packages-npm-production"}},"0.6.12":{"name":"three-sdf-loader","version":"0.6.12","description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","repository":{"type":"git","url":"git+https://github.com/jakekinchen/three-sdf-loader.git"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"unpkg":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"peerDependencies":{"sdf-parser":">=7","three":">=0.156.0"},"engines":{"node":">=20"},"keywords":["three","sdf","loader","molecule","3d"],"license":"MIT","scripts":{"test":"vitest run","test:coverage":"vitest run --coverage","lint":"eslint . --ext .js","format":"prettier --write .","size":"size-limit","build":"rollup -c","postbuild":"cp types/index.d.ts dist","prepublishOnly":"npm run lint && npm run test:coverage && npm run size && npm run build"},"size-limit":[{"path":"src/index.js","limit":"150 KB"}],"devDependencies":{"@babel/core":"^7.28.0","@babel/preset-env":"^7.28.0","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@size-limit/preset-small-lib":"^8.2.4","@vitest/coverage-v8":"^1.6.1","babel-loader":"^10.0.0","eslint":"^8.56.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^10.1.5","eslint-plugin-import":"^2.29.1","prettier":"^3.2.5","rollup":"^4.46.1","sdf-parser":"^7.0.4","size-limit":"^8.2.4","vitest":"^1.5.0","webpack":"^5.101.0","webpack-cli":"^6.0.1"},"vitest":{"coverage":{"provider":"c8","all":true,"lines":95,"functions":95,"branches":95,"statements":95}},"_id":"three-sdf-loader@0.6.12","gitHead":"a7428ee5f306e62bda1335dcdbd3a9f4fda70728","bugs":{"url":"https://github.com/jakekinchen/three-sdf-loader/issues"},"homepage":"https://github.com/jakekinchen/three-sdf-loader#readme","_nodeVersion":"20.19.6","_npmVersion":"11.5.1","dist":{"integrity":"sha512-qoGHNiCPyKWs5/pHp0bch8u5fk5KEX0KjMih9BTgoife0pI3+3XqQPZKwrYohz476r0rGkzqfnftL96Q0ix5qA==","shasum":"7e8f7dcac2af09fe5361670f4ccb8c57ade3be9c","tarball":"https://registry.npmjs.org/three-sdf-loader/-/three-sdf-loader-0.6.12.tgz","fileCount":9,"unpackedSize":428506,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/three-sdf-loader@0.6.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHS2LFw5rnt7Mm+bi+5CTXmcszwejGAfUkbxjPsrkAJvAiA+cWEPPcYtMMLwyJhQj5kAgplR/owytmybHjVFzPqr7A=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3e621c57-6e20-4941-83e9-e714ab88ba53"}},"directories":{},"maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/three-sdf-loader_0.6.12_1768332246715_0.5729086362570961"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-29T11:49:02.887Z","modified":"2026-01-13T19:24:07.298Z","0.2.0":"2025-05-29T11:49:03.197Z","0.2.1":"2025-06-12T09:44:50.029Z","0.2.2":"2025-06-12T11:23:18.205Z","0.2.3":"2025-06-12T11:40:32.169Z","0.2.4":"2025-06-12T11:57:11.392Z","0.2.5":"2025-06-12T12:04:35.406Z","0.2.6":"2025-06-12T15:53:45.932Z","0.3.0":"2025-07-28T01:59:36.385Z","0.3.1":"2025-07-28T03:31:58.267Z","0.3.2":"2025-07-28T03:57:58.624Z","0.3.3":"2025-07-28T16:58:20.052Z","0.3.4":"2025-07-28T22:05:42.465Z","0.3.5":"2025-07-29T00:45:29.636Z","0.3.6":"2025-07-29T18:49:41.251Z","0.3.7":"2025-07-29T19:13:29.834Z","0.3.8":"2025-07-29T19:38:07.818Z","0.3.9":"2025-07-29T21:07:28.222Z","0.4.0":"2025-08-08T05:00:36.212Z","0.5.0":"2025-08-13T02:51:24.502Z","0.5.1":"2025-08-14T03:03:07.830Z","0.6.0":"2025-08-14T03:20:26.488Z","0.6.1":"2025-08-14T03:28:13.765Z","0.6.2":"2025-10-30T20:21:45.729Z","0.6.3":"2025-11-22T01:51:04.769Z","0.6.4":"2026-01-03T05:35:46.927Z","0.6.8":"2026-01-08T18:40:00.063Z","0.6.9":"2026-01-08T19:03:02.229Z","0.6.11":"2026-01-08T22:07:41.425Z","0.6.12":"2026-01-13T19:24:06.917Z"},"bugs":{"url":"https://github.com/jakekinchen/three-sdf-loader/issues"},"license":"MIT","homepage":"https://github.com/jakekinchen/three-sdf-loader#readme","keywords":["three","sdf","loader","molecule","3d"],"repository":{"type":"git","url":"git+https://github.com/jakekinchen/three-sdf-loader.git"},"description":"Lightweight loader to convert SDF (V2000) molecular files into THREE.Group for Three.js visualisation.","maintainers":[{"name":"jakekinchen","email":"jakekinchen@gmail.com"}],"readme":"# three-sdf-loader\n\n> Convert `.sdf` (V2000) molecular files into ready-to-render `THREE.Group` objects. Zero patches to Three.js — only public APIs.\n\n![Demo Image](https://raw.githubusercontent.com/jakekinchen/three-sdf-loader/main/screenshot.png)\n\n---\n\n## Install\n\n```bash\nnpm install three three-sdf-loader\n```\n\n> **Peer-dep**: Three.js (r151+) must be installed alongside.\n\n## Quick usage\n\n```js\nimport { loadSDF, parseSDF } from 'three-sdf-loader';\nimport * as THREE from 'three';\n\nconst text = await fetch('caffeine.sdf').then((r) => r.text());\n\n// Auto-detects 2-D vs 3-D layout (see next section)\nconst molecule = loadSDF(text, { showHydrogen: false });\n\n// Example: switch to orthographic camera for purely planar files\nif (molecule.userData.layoutMode === '2d') {\n  camera = new THREE.OrthographicCamera(\n    innerWidth / -2,\n    innerWidth / 2,\n    innerHeight / 2,\n    innerHeight / -2,\n    0.1,\n    1000,\n  );\n  camera.position.set(0, 0, 10);\n}\n\nscene.add(molecule);\n\n// … render loop …\n```\n\n### Options\n\n| Name                  | Type                             | Default | Description                                                    |\n| --------------------- | -------------------------------- | ------- | -------------------------------------------------------------- |\n| `showHydrogen`        | `boolean`                        | `false` | Render hydrogens (H) when `true`.                              |\n| `elementColors`       | `Record<string, THREE.ColorRep>` | preset  | Per-element material colors.                                   |\n| `elementRadii`        | `Record<string, number>`         | preset  | Per-element sphere radii (in scene units).                     |\n| `attachAtomData`      | `boolean`                        | `true`  | Copy each atom record onto corresponding `mesh.userData.atom`. |\n| `attachProperties`    | `boolean`                        | `true`  | Copy molecule-level `properties` onto `group.userData`.        |\n| `layout`              | `'auto' \\| '2d' \\| '3d'`         | `auto`  | Force 2‑D or 3‑D handling; `'auto'` infers from Z‑coordinates. |\n| `renderMultipleBonds` | `boolean`                        | `true`  | Render double / triple bonds as parallel lines.                |\n| `renderStereoBonds`   | `boolean`                        | `false` | When `true`, render wedge/hash geometry for stereo single bonds; when `false`, render normal bonds. |\n| `multipleBondOffset`  | `number`                         | `0.1`   | Separation between parallel lines (scene units).               |\n| `addThreeCenterBonds` | `boolean`                        | `true`  | Infer three-center bonds (e.g., B–H–B bridges in diborane).    |\n| `coordinationMode`    | `'none'|'transitionOnly'|'all'`  | `transitionOnly` | Scope of coordination bond inference. `'all'` mirrors older behavior. |\n| `suppressOppositeChargeCoordination` | `boolean`         | `true`  | When inferring coordination, skip links between oppositely charged ions. |\n| `relFactor`           | `number`                         | `1.4`   | Relative factor on closest distance for adaptive thresholding. |\n| `cutoff`              | `number`                         | `3.0`   | Hard minimum distance (Å) for coordination inference.          |\n| `instancing`          | `boolean`                        | `false` | Use `InstancedMesh` for atoms.                                 |\n| `instancedBonds`      | `boolean`                        | `false` | Use `InstancedMesh` for cylinder bonds (perf).                 |\n| `useCylinders`        | `boolean`                        | `true`  | Cylinder bonds; set `false` for lines (order‑0 bonds render dashed). |\n| `useFatLines`         | `boolean`                        | — | Removed. Only classic `LineSegments` or cylinder bonds are supported. |\n| `hideIsolatedAtoms`   | `boolean`                        | `false` | Hide atoms with zero bonds that are farther than cutoff from any neighbor. |\n| `isolatedAtomCutoff`  | `number`                         | `3.0`   | Distance threshold (Å) used when `hideIsolatedAtoms` is true. |\n| `style`               | `'ballStick'\\|'spaceFill'\\|'licorice'` | `ballStick` | Visual preset adjusting atom/bond scale.                       |\n| `palette`             | `'default'\\|'jmol'\\|'material'` | `default` | Element color palette; `elementColors` overrides per-element.  |\n| `materialFactory`     | `(role, default)=>material`      | —       | Hook to override materials by role.                            |\n| `coordinateScale`     | `number`                         | `1.0`   | Global scale for coordinates (scene units per Å or nm).        |\n| `units`               | `'angstrom'\\|'nm'\\|'scene'`   | `angstrom` | Input coordinate units.                                        |\n| `index`               | `number`                         | `0`     | For multi-record SDFs, selects which record to load.           |\n| `headless`            | `boolean`                        | `false` | Parse-only mode; returns chemistry/metadata without geometry.  |\n| `performance.atomSegments` | `number`                   | `16`    | Sphere segments (memoized).                                    |\n| `performance.bondSegments` | `number`                   | `8`     | Cylinder segments.                                             |\n| `performance.buildBondBVH` | `boolean`                   | `true`  | Build BVH for fast line-mode bond picking.                     |\n| `performance.usePCANormal` | `boolean`                   | `false` | Use PCA for multiple-bond offset direction.                    |\n\n## 2-D vs 3-D layout detection\n\n`three-sdf-loader` now tags every returned `THREE.Group` with `group.userData.layoutMode`:\n\n```js\nconst group = loadSDF(text);      // ← auto-detects layout\nconsole.log(group.userData.layoutMode); // '2d' or '3d'\n```\n\nWhen the layout is `'2d'`, the loader skips coordination-bond inference to avoid false positives and lets your app decide how to frame the molecule (e.g., swap to an orthographic camera). However, if any metal atoms have zero explicit bonds, coordination inference will still run to fix common cases like ferrocene (honoring `coordinationMode`). You can override detection with `layout: '2d' | '3d'` if needed.\n\n## Example (browser)\n\nBelow is a zero-build browser snippet (ES modules + CDN). It uses the\n`loadSDF` **named export** and maps dependencies with an import-map so that\nsub-modules resolve correctly.\n\n````html\n<!-- index.html -->\n<script type=\"importmap\">\n  {\n    \"imports\": {\n      \"three\": \"https://cdn.jsdelivr.net/npm/three@0.151.3/build/three.module.js\",\n      \"sdf-parser\": \"https://cdn.jsdelivr.net/npm/sdf-parser@2.0.0/+esm\"\n    }\n  }\n</script>\n\n<script type=\"module\">\n  import * as THREE from 'three';\n  import { OrbitControls } from 'https://cdn.jsdelivr.net/npm/three@0.151.3/examples/jsm/controls/OrbitControls.js';\n  import { loadSDF } from 'https://unpkg.com/three-sdf-loader@latest/src/index.js';\n\n  const scene = new THREE.Scene();\n  const camera = new THREE.PerspectiveCamera(\n    60,\n    innerWidth / innerHeight,\n    0.1,\n    100,\n  );\n  const renderer = new THREE.WebGLRenderer({ antialias: true });\n  renderer.setSize(innerWidth, innerHeight);\n  document.body.appendChild(renderer.domElement);\n\n  const controls = new OrbitControls(camera, renderer.domElement);\n  controls.enableDamping = true;\n\n  const sdfText = await (\n    await fetch(\n      'https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/caffeine/SDF?record_type=3d',\n    )\n  ).text();\n  const mol = loadSDF(sdfText);\n  scene.add(mol);\n</script>\n\n### Lighting tips After loading, swap the default `MeshBasicMaterial` for\n`MeshStandardMaterial` to get PBR shading, then add a HemisphereLight +\nDirectionalLights: ```js mol.traverse((o) => { if (o.isMesh) o.material = new\nTHREE.MeshStandardMaterial({ color: o.material.color, metalness: 0.1, roughness:\n0.8, }); });\n````\n\nMake sure to enable `renderer.physicallyCorrectLights = true` and set\n`renderer.outputEncoding = THREE.sRGBEncoding`.\n\n---\n\n### Picking & Metadata\n\nThe loader attaches a structured `LoadResult` to the returned `THREE.Group` at `group.userData.loadResult`. It contains stable indices, chemistry arrays, and mappings for picking.\n\nNon‑instanced picking:\n\n```js\nconst group = loadSDF(sdfText, { showHydrogen: true, useCylinders: false });\nconst res = group.userData.loadResult; // { metadata, chemistry, mappings, ... }\n\n// Raycast → mesh → atom index\nconst raycaster = new THREE.Raycaster();\nraycaster.setFromCamera(mouse, camera);\nconst hit = raycaster.intersectObject(group, true)[0];\nif (hit?.object?.userData?.role === 'atom') {\n  const { index, element } = hit.object.userData.atom; // 0-based index\n  console.log(index, element);\n}\n```\n\nInstanced picking:\n\n```js\nconst group = loadSDF(sdfText, { includeHydrogens: true, instancing: true });\nconst res = group.userData.loadResult;\n\nconst hit = raycaster.intersectObject(res.mappings.instancedAtoms.mesh, true)[0];\nif (hit && hit.instanceId != null) {\n  const atomIndex = res.mappings.instancedAtoms.instanceToAtomIndex[hit.instanceId];\n  const atom = res.chemistry.atoms[atomIndex];\n}\n```\n\nNotes:\n\n- Indices are 0‑based and align with SDF atom/bond block order.\n- Coordinates are in Å by default in `chemistry`. Set `units: 'nm'` to interpret inputs as nanometers. Visuals can be scaled using `coordinateScale` or by transforming the returned `Group`.\n\n#### Bond Metadata (`userData.bond`)\n\nEach bond cylinder mesh (non-instanced mode) exposes detailed metadata at `mesh.userData.bond`:\n\n```ts\ninterface BondMeta {\n  index: number;           // 0-based bond index\n  beginAtomIndex: number;  // 0-based\n  endAtomIndex: number;    // 0-based\n  order: 1 | 2 | 3 | 4;    // Normalized order for rendering (4 = aromatic)\n  originalOrder: number;   // Raw order from molfile/inference (0 = coordination, 4 = aromatic)\n  isAromatic?: boolean;    // true when originalOrder === 4\n  isCoordination?: boolean;// true when originalOrder === 0 (ionic/coordination bond)\n  isBridge?: boolean;      // true when bond is a bridging/three-center bond\n  source: 'molfile' | 'inferredCoordination' | 'inferredBridge';\n}\n```\n\nExample: detecting coordination bonds for custom styling:\n\n```js\nconst group = loadSDF(text, { useCylinders: true, coordinationMode: 'all' });\ngroup.traverse((obj) => {\n  if (obj.userData?.bond?.isCoordination) {\n    // Apply dashed overlay or custom material for ionic bonds\n    obj.material = new THREE.MeshBasicMaterial({ color: 0xff6600, wireframe: true });\n  }\n});\n```\n\nFor instanced bonds (`instancedBonds: true`), metadata is available via:\n\n```js\nconst { instancedBonds } = group.userData.loadResult.mappings;\nif (instancedBonds) {\n  const { instanceToBondIndex, bondTable } = instancedBonds;\n  // On raycast hit with instanceId:\n  const bondIndex = instanceToBondIndex[hit.instanceId];\n  const bondMeta = bondTable[bondIndex];\n  console.log(bondMeta.isCoordination, bondMeta.source);\n}\n```\n\nThe `chemistry.bonds` array also includes these fields for programmatic access.\n\n#### LoaderOptions (additions)\n\n```ts\ntype LoaderOptions = {\n  instancing?: boolean;\n  instancedBonds?: boolean;\n  headless?: boolean;\n  createBonds?: boolean;\n  includeHydrogens?: boolean;\n  hideIsolatedAtoms?: boolean;\n  isolatedAtomCutoff?: number;\n  atomGeometry?: { type?: 'icosahedron' | 'sphere'; detail?: number; widthSegments?: number; radius?: number };\n  bondGeometry?: { type?: 'cylinder' | 'line'; radius?: number; segments?: number };\n  performance?: { skipBondsOverAtomThreshold?: number; atomSegments?: number; bondSegments?: number; buildBondBVH?: boolean; usePCANormal?: boolean };\n  onProgress?: (stage: string, value: number) => void;\n  coordinateScale?: number;\n  units?: 'angstrom' | 'nm' | 'scene';\n  palette?: 'default' | 'jmol' | 'material';\n  style?: 'ballStick' | 'spaceFill' | 'licorice';\n  index?: number;\n  materialFactory?: (role: 'atom'|'atomInstanced'|'bondCylinder'|'bondLine'|'bondDashed', defaultMaterial: THREE.Material) => THREE.Material;\n};\n```\n\nThe existing options remain supported. The group remains structured exactly as before for backward compatibility; the new metadata is available via `group.userData.loadResult`.\n\n#### Palettes and data sources\n\n- Default colors are CPK‑ish and inspired by community conventions.\n- The `'jmol'` palette approximates the Jmol color set.\n- The `'material'` palette provides muted Material‑style hues for UI consistency.\n- Atomic numbers table covers 1–118 based on periodic table ordering.\n\nYou can always override any entry with `elementColors`.\n\n### Recipes\n\n#### Parse-only (headless) usage\n\n```js\nimport { loadSDF } from 'three-sdf-loader';\n\nconst group = loadSDF(text, { headless: true });\nconst { chemistry, metadata } = group.userData.loadResult;\nconsole.log(metadata.title, chemistry.atoms.length, chemistry.bonds.length);\n```\n\n#### Instanced atoms and bonds (performance)\n\n```js\nconst group = loadSDF(text, {\n  includeHydrogens: true,\n  instancing: true,        // atoms via InstancedMesh\n  instancedBonds: true,    // cylinders via InstancedMesh\n});\nscene.add(group);\n```\n\n<!-- Fat lines support removed in 0.6.0 -->\n\n#### Center and fit to a target radius\n\n```js\nconst group = loadSDF(text);\n// Compute bounds and re-center (and optionally uniform-scale)\ngroup.userData.center('centerAndScale', 5.0); // fit to radius=5 scene units\n```\n\n#### Bond picking in line mode (BVH-accelerated)\n\n```js\nconst group = loadSDF(text, { useCylinders: false });\nconst raycaster = new THREE.Raycaster();\nraycaster.setFromCamera(mouse, camera);\nconst hit = group.userData.pickBond(raycaster, { threshold: 0.05 });\nif (hit) {\n  console.log('Bond index:', hit.bondIndex, 'Distance:', Math.sqrt(hit.distanceSq));\n}\n```\n\n#### Atom picking (instanced and non‑instanced)\n\n```js\nconst res = group.userData.loadResult;\nconst raycaster = new THREE.Raycaster();\nraycaster.setFromCamera(mouse, camera);\nconst hit = raycaster.intersectObject(group, true)[0];\nconst atomIndex = group.userData.pickAtom(hit); // null if none\n```\n\n#### Custom materials via materialFactory\n\n```js\nconst group = loadSDF(text, {\n  materialFactory: (role, defaultMat) => {\n    if (role === 'atom') return new THREE.MeshStandardMaterial({ color: defaultMat.color });\n    if (role === 'bondCylinder') return new THREE.MeshStandardMaterial({ color: 0xaaaaaa, metalness: 0.1, roughness: 0.8 });\n    return defaultMat;\n  },\n});\n```\n\n#### Multi‑record selection and units\n\n```js\n// Select the 3rd record from a multi-record SDF and interpret as nanometers\nconst group = loadSDF(text, { index: 2, units: 'nm' });\n```\n","readmeFilename":"README.md"}