{"_id":"simplepolygon","_rev":"25-500230f9bc4b88f0e251d04dc3897dd5","name":"simplepolygon","dist-tags":{"latest":"2.0.4"},"versions":{"1.0.0":{"name":"simplepolygon","version":"1.0.0","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.0.0","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"4cbe427beef057d1ea20ba3c77cb39a49c4faf36","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.0.0.tgz","integrity":"sha512-KP/76yNhiLlWwiUPfvzStey/TJaBohTC+AIaWXWH8ihAoUSdDLKH2rUIEqpesrlSOJK+nRVwK9MWu1JB7sI14A==","signatures":[{"sig":"MEYCIQD8+OLzdRsdZpuQUxA5i3sdfpqV3laZiV+TbrXm+zkEIwIhAMZgLilT7FOwWluMxl+ZEnMBCWlZ4LQdNvVJQ5Tu6Q3o","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"4cbe427beef057d1ea20ba3c77cb39a49c4faf36","gitHead":"5d8955e42da78948fadc864e2b2792f7e1d629a7","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"turf-area":"^3.0.0","turf-within":"^3.0.0","turf-helpers":"^3.0.0","geojson-polygon-self-intersections":"^1.0.0"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.0.0.tgz_1465742279317_0.40998584241606295","host":"packages-16-east.internal.npmjs.com"}},"1.0.1":{"name":"simplepolygon","version":"1.0.1","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.0.1","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"30cfc0fb375df4acf0bb1cf752a8172d1d63f624","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.0.1.tgz","integrity":"sha512-BBNM4ShORf6O8hkshG7bpITpyKLxIUPgXZMdDpEoYhqz196cbtifAZ/k5tgg394E3tvxLK9mXg2Jw2OQRYw+kg==","signatures":[{"sig":"MEQCIBAGRz857fS/kKHao8XfWhb8MkLK5gbf8Sv+n4UFHt5CAiBXD9cr0Sj4UssQTKYxVBK3vTOS1mChlXICCmIyjC0f3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"30cfc0fb375df4acf0bb1cf752a8172d1d63f624","gitHead":"0f2262a9b71d73d8a14034190b83bf43e4bc30f6","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"turf-area":"^3.0.0","turf-within":"^3.0.0","turf-helpers":"^3.0.0","geojson-polygon-self-intersections":"^1.0.0"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.0.1.tgz_1470736869001_0.45974486973136663","host":"packages-16-east.internal.npmjs.com"}},"1.1.0":{"name":"simplepolygon","version":"1.1.0","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.0","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"0f8adf67b74f80ee9b85cf216d5c25781a2d8e07","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.0.tgz","integrity":"sha512-ug+HLRofvB1h//73TFGEixMnWoii9+Jz/p827XljgXm/oKFZPuCJW7MULieYSBUogSlLsQgU1OBgluYy+R4Hag==","signatures":[{"sig":"MEUCICHkNO614PIAEGpvSDKVAAHHEChkMTxXzegeQFJIaRpZAiEAnYkwTZOFsZhT6+JBEIbXZsGWDqk/9tgD0JxwjjaM7Rs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"0f8adf67b74f80ee9b85cf216d5c25781a2d8e07","gitHead":"0de69d6887166ce0c8c93efc1abdaa5bc25f01d0","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"rbush":"^2.0.1","turf-area":"^3.0.0","turf-within":"^3.0.0","turf-helpers":"^3.0.0","geojson-polygon-self-intersections":"^1.0.0"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.0.tgz_1471779954957_0.20682244538329542","host":"packages-12-west.internal.npmjs.com"}},"1.1.1":{"name":"simplepolygon","version":"1.1.1","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.1","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"9454e12fc400f6d86fcff39662d790645665c180","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.1.tgz","integrity":"sha512-m4Mh3ftJ+rlr8J63bmDv/3gcCJCpoKnBMwu8y1CpxVQ694zu5xIWyWDaBgNZ79WXXxI1iIJiUmOTVlA1IUoyEA==","signatures":[{"sig":"MEYCIQD9r++uSH3AvH/venRxipRCY11qTusfu0woSbos6ApINgIhAORIIsdaCvk1RGU7QMqpuCY+Y06H7LUigrLgF2c0BPt5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"9454e12fc400f6d86fcff39662d790645665c180","gitHead":"45485db980bd98fde2ccad47ea1402d42100f61d","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"rbush":"^2.0.1","turf-area":"^3.0.0","turf-within":"^3.0.0","turf-helpers":"^3.0.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.1.tgz_1471780951471_0.7237119902856648","host":"packages-16-east.internal.npmjs.com"}},"1.1.2":{"name":"simplepolygon","version":"1.1.2","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.2","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"d3de9beebcc5867ebfec51689ed362d9fd980cc0","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.2.tgz","integrity":"sha512-O2brMvEXMSHfY849aGkPLzgRPZybcWOjbSQUOfTtJxw9GeC4juSB/Zn20nIHK72LmNHqY2onoGdbFbPXyl5WgA==","signatures":[{"sig":"MEUCIQCdy1mfX3GMUXRyu/VwG94MhuBLX+vogHlA7STH03ENeAIgeSjDx2Uk2NWNMqQ2NX91cW/RzXcB24Lg/2cLNhuJmCE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d3de9beebcc5867ebfec51689ed362d9fd980cc0","gitHead":"ad05cfc00e5a4eac238ff0d7592f0e4fce7b6da5","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.2.tgz_1490361315011_0.48485301341861486","host":"packages-18-east.internal.npmjs.com"}},"1.1.3":{"name":"simplepolygon","version":"1.1.3","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.3","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"2bed5d2eb99fffe5973c0004526a30766e2752c9","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.3.tgz","integrity":"sha512-6V5BTe3XS7Ej29a5vT0nnoE4d/6BDPaSh+kn7Zyo2c1jdFlDluaEbma1RZpczd1dPigYdAH56BPi4Qd6SlFmJg==","signatures":[{"sig":"MEYCIQDLECzLncWpTSSlM5lhjNcowqaKbbI/vhBYTIxz/ju8OwIhALT+3WUyTM3Ju/i6Y8PLWg0TlYZJ72ncE97W6ayf704J","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"2bed5d2eb99fffe5973c0004526a30766e2752c9","gitHead":"07976b974fc0f4b872c17f16e9c0434a13212089","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.3.tgz_1490381453625_0.01249427697621286","host":"packages-12-west.internal.npmjs.com"}},"1.1.4":{"name":"simplepolygon","version":"1.1.4","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.4","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"499a9382cc5d235668557a5b4d907ea10b3a6024","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.4.tgz","integrity":"sha512-OZGcZ2eI9XiZh6jIvOx26lj0qwCDyBLl/Z30G0zydJQxTOfc9NNyPgHRAPrvOQVXG3v3CydkHA02Wa6B7Ew/hQ==","signatures":[{"sig":"MEUCIF7mG5vypqQRXD13mVVuFkv/Rx7/rNoGFIVQhxSKUF3aAiEAhqhmJsWljRQH8oYy3Or4G7dcsKNO/rQI4ofjk91N7as=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"499a9382cc5d235668557a5b4d907ea10b3a6024","gitHead":"ce0d91ce8ee8f072e71942c1e42828bfbd9f3086","scripts":{},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.4.tgz_1491765310487_0.3358102070633322","host":"packages-12-west.internal.npmjs.com"}},"1.1.5":{"name":"simplepolygon","version":"1.1.5","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.5","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"ec3acb9e72f05f17c538dd98c390374ff24b9465","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.5.tgz","integrity":"sha512-021M8pV3/xGCDxuoyZ7vCwyZgk2EI3o2JoUZYRlzKhLpHQDFMSLFaXnF30KumcyiC3CfdVhP6Fl0mDZcOLhwyg==","signatures":[{"sig":"MEUCIGTSatbexKrccyB/NfBi9J4KsfbmtV5rtFIUx89fgbG0AiEA2HzcOrZ5uIDvHKW9upJl1lpvdoQOWDv1nUszdU/QMHg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"ec3acb9e72f05f17c538dd98c390374ff24b9465","gitHead":"6dbd6ed4afef88ef4d7afaaf36f41a16fa39fd76","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.5.tgz_1491765527974_0.30747206625528634","host":"packages-12-west.internal.npmjs.com"}},"1.1.6":{"name":"simplepolygon","version":"1.1.6","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.6","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"2b4d42c8afe5c33ba8c4b514a5b7b0085984c01b","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.6.tgz","integrity":"sha512-B/CAW3XLPE12z+hVvR2yYUnTlf1884zYd7CfD1nZ/tCuxoClw0gW4GaaNuFAeLB6OCKceAeLj36oDlvweo6ehQ==","signatures":[{"sig":"MEYCIQC2pr5wQH85n/mP24XcXjAZpb0PvS1HJnwLXLmOXAaw8AIhAK7UNwExEAL9OwRHNF4G2CbaTk/AY8GI44OT92V8m4sJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"2b4d42c8afe5c33ba8c4b514a5b7b0085984c01b","gitHead":"08ff9ecf27d3713679e5d2605266b9fe1e77d5bb","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.6.tgz_1491770336637_0.14070765464566648","host":"packages-12-west.internal.npmjs.com"}},"1.1.7":{"name":"simplepolygon","version":"1.1.7","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.1.7","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"f70990f49af503c3f28feb79b2e3c21dbb838e86","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.1.7.tgz","integrity":"sha512-JydvjWQ/4soTW/BPudA07LHdEtWsVgQbMJHG7ZRUTJK92HWViibYx7h4hF0j/Vz0DCkyCvFelncawRCNvvQWuw==","signatures":[{"sig":"MEUCIQDFJE4/kNknx3GUs/eS7NEvEAAakRzFvF2kbbpBWwlaRwIgelBVD72wBkxoyYfSA3GJXDcXt45qtn8962bIjnd47Jo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"f70990f49af503c3f28feb79b2e3c21dbb838e86","gitHead":"e26ed1016cd23296e4492829f65e25bb5699d451","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.1.7.tgz_1497826466989_0.9120659532491118","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"simplepolygon","version":"1.2.0","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.2.0","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"46260a48bbe467e2a7a10bcb65ecd0e3ddbb2eb9","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.2.0.tgz","integrity":"sha512-eUsru/PNVVLyzRj12+D2Fimp+28FvWfy7rYswR9kUSVcl8mWF3LjnzadaPEC8H3NDrb4qSWqhqmLQ44/9NpYRQ==","signatures":[{"sig":"MEUCIQCjzTMeSUK0p3yolsnAG4c3/BdMhlDCnm3U7S2lbT15oQIgbr9m3pko1Jm9DaGuZFTirV6KnnOE+v+fY+Y/vd9QcN8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"46260a48bbe467e2a7a10bcb65ecd0e3ddbb2eb9","gitHead":"b9d5fa51a124d621f60160d89f059a04a0d8fb07","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/inside":"^4.5.2","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.1"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.2.0.tgz_1501504355442_0.2385406526736915","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"simplepolygon","version":"1.2.1","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.2.1","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"48250a6a853275e96e42c7105f507da00dc67d64","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.2.1.tgz","integrity":"sha512-9XAZs9bo14woAWSFRMMOLHk3nFn4nudLDV2kYL/nDWYC2Gl7aEmhKtS0+nb5w4bXlFsZU5clRA0rrEnGRo1nnQ==","signatures":[{"sig":"MEQCIFfA60cpkIiSkaUwVEPUYCnMCBQo0sAJ2pxqwv/JnJW8AiAHvxb3NC+4/wpTFp5oLXtmsuABgG9h0xrbYihaxJGH0w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"48250a6a853275e96e42c7105f507da00dc67d64","gitHead":"3f4e9569c4e465c007478b835baba49e225dfa3a","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^3.13.0","@turf/inside":"^4.5.2","@turf/within":"^3.13.0","@turf/helpers":"^3.13.0","geojson-polygon-self-intersections":"^1.1.2"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.2.1.tgz_1501791060667_0.18456365424208343","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"simplepolygon","version":"1.2.2","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.2.2","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"5a68d8cd6bb10e48baa489dd1ad8730d412a033a","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.2.2.tgz","integrity":"sha512-aQB7ZPvK65lyZ6ho5em6jau31lDYSkdNIxrF6eqba8WuLDInRkuupi6gSXB4iHt9wCisZDzl7o9I6bNdy2vGLg==","signatures":[{"sig":"MEYCIQC/y/TefskGvkZoL0Inqs27TcSfV6WcW6KD3Wt44kIYNAIhALZ+IsiAQyVdHF3H+Y3j6UjuAvR2txjKn4UrvFpz8pLv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js"],"_shasum":"5a68d8cd6bb10e48baa489dd1ad8730d412a033a","gitHead":"3a148cb6ea9bde679041809861e7548e4197163b","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"2.14.20","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"4.4.1","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^4.5.0","@turf/inside":"^4.5.2","@turf/within":"^4.5.0","@turf/helpers":"^4.5.0","geojson-polygon-self-intersections":"^1.1.2"},"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon-1.2.2.tgz_1504803665924_0.4974992023780942","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"simplepolygon","version":"1.2.3","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.2.3","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"5cbe5d4868a1c36900d581024136672341ee4741","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.2.3.tgz","fileCount":4,"integrity":"sha512-7k9L4hOyKoFm6T9+whTXBt4Yv/tpJqPz7tMnaTbESXTunNm4h6AmiNCy8F0vKqlP1UHabRoj9iqgtuwaVI+wiA==","signatures":[{"sig":"MEUCIEwW7WMGZseyEX1+vYrZVtQ0CXtCTrrcL9kYsP2txinYAiEAv5sicrOY4n/VLPaxUfpgoBXwIZM5IQi1iTHniVeVQjQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnaTkCRA9TVsSAnZWagAAHcMP/0uuxTPk8yFu6wuPRmPj\n74AqS7KnsEc1UcwNAUFjSlxrUEquUlmc5ATKH2TwMDmTXn+juB7QjhuLx2m5\nquwp2+r5GXscgIOr6WiqG7lJs737C1aALcSX6bSloc+fJ73H34cHFZELf+g2\n1qcQ4NXlKYfh6guQsGtsM+dTAeXi4kBZ12X57EwimHhAb11sm8eLiZEgiDym\nRh3xv1Q2O4udJycrChc38+Tf8bbMLNlr5RacBAEaoz/JHjyVQOl+VNqr3cXv\n20Gt1RWsNEO3aSknpEtBcC0vjQr0U6SHv+hWMxVhXXp7ZYehi5EW2KpQ7ISC\njLCbXBi9p7iHUeIKUqyOc3blU2TN4uvaSSdETlGeJeGHiotn97oAhwbKm/9H\naqVEPxnrlvJ+iOpLpo8Ukb/OWK2dkLDpFuCpa9xxkL2Mryex3z5vAoT1H7R4\n7DKR0HzYFGDQMXc+wiIfKIW7STzP334KxcZp3Q69zC82bELCA/fqCCeXLVqQ\ntXNr5RTisWCMrhO8UzVNuAD2hINvykOBT80X4EtG8Cu+GDHr/Z7dkAx7C3Jk\nr8Od6gXSmYAAIDLR17tlqUD0MZQHJIwPExXBO/j5nFd6ECss2VlWvGw0BX1h\nnfF9bfO9gseSEDx3Cc/2YD73TIAB6o2Ti7QskZ2TLRejJVaAk65WEKF0Pc6d\nQC6c\r\n=2QB7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9ff051b2dd1cf9ca345aa9f411a8307a89d02efa","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"6.12.0","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"10.15.3","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^4.5.0","@turf/inside":"^4.5.2","@turf/within":"^4.5.0","@turf/helpers":"^4.5.0","geojson-polygon-self-intersections":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_1.2.3_1570612451905_0.1921258392481182","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"simplepolygon","version":"1.2.4","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"name":"Manuel Claeys Bouuaert"},"license":"MIT","_id":"simplepolygon@1.2.4","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"c2541ad18d2887f5d27b7f9bb21702031212dfa9","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-1.2.4.tgz","fileCount":4,"integrity":"sha512-3FyqsMfzggi+GohuBU1VbOyUOutzfuS9fzZlhNzysJrarpBA0sif8eV0LskGJZmHcZfVexi/6WQib7pF7kg3pQ==","signatures":[{"sig":"MEQCIFGqgWphW0P5lOEMnGZSWmPXBOKbZrCFlCUYuHyN1KxPAiAHYO1Q9ii106fOHVg3btueVubNHNrByqDtrpPCVvsgEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36612},"main":"index.js","gitHead":"7b640aaae3f7c747955cf6290b25f5e16018bb22","scripts":{"test":"node test.js","bench":"node bench.js"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"11.6.2","description":"Takes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"debug":"^2.6.3","rbush":"^2.0.1","@turf/area":"^4.5.0","@turf/inside":"^4.5.2","@turf/within":"^4.5.0","@turf/helpers":"^4.5.0","geojson-polygon-self-intersections":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.6.3","benchmark":"^2.1.4","@turf/meta":"^4.0.1","load-json-file":"^2.0.0","write-json-file":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_1.2.4_1766057263216_0.7264946318215109","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"simplepolygon","version":"2.0.0","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"url":"https://manuelclaeysbouuaert.be","name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com"},"license":"MIT","_id":"simplepolygon@2.0.0","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"56c68677212259254d9a183a975c1168803cd1a3","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-2.0.0.tgz","fileCount":6,"integrity":"sha512-TJJtXjYb04Yuouc7OS7zBrtnilYt8KK0H0d9j3H1c/M0MFA5b29e3HDRICQXe2EE4PGyjcMHK3jTH3Zei4U1Xg==","signatures":[{"sig":"MEQCIEFIbch+afC3jPTmWcEq0F8TGKhwApz/ZblFbWRE4jAuAiAxMUL8erVWQ8YLnfAMSu3sV/uH5FiLvaqVw3S1DaDH8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45877},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"103eb1573ca00a5cc96dd01c6db9fe1a494c07e7","scripts":{"lint":"prettier --check src test && eslint src test --ext .js,.ts","test":"NODE_ENV=test vitest run","bench":"vitest bench","build":"tsc","types":"tsc --noEmit","watch":"tsc --watch","format":"prettier --write src test"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"11.6.2","description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rbush":"4.0.1","geojson":"0.5.0","@turf/area":"7.3.1","@turf/inside":"5.0.0","@turf/within":"4.5.0","@turf/helpers":"7.3.1","@turf/boolean-point-in-polygon":"7.3.1","geojson-polygon-self-intersections":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.2","vitest":"4.0.16","globals":"16.5.0","prettier":"3.7.4","@eslint/js":"9.39.2","@turf/meta":"7.3.1","typescript":"5.9.3","@types/node":"25.0.3","@types/rbush":"4.0.0","@types/geojson":"7946.0.16","@eslint/eslintrc":"3.3.3","typescript-eslint":"8.50.0","eslint-config-prettier":"10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_2.0.0_1766419557731_0.3735165628139905","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"simplepolygon","version":"2.0.1","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"url":"https://manuelclaeysbouuaert.be","name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com"},"license":"MIT","_id":"simplepolygon@2.0.1","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"42e920d06eb1868ae654232ffd6ad7ef7d3ad885","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-2.0.1.tgz","fileCount":6,"integrity":"sha512-CYgvntaXMKBVbzwpeDvsI1MQlfZzRuske4JxSuMNrnrGkQicoHO03VUJVgGHNpmLXq0Nc/gLLjoXG5ieJtpLlg==","signatures":[{"sig":"MEUCIHxI+4LD93zXuW/zb8h9/q7G3PycM/eo5JKcpvvyTgq5AiEA/JCR8dH0YNVR0uiu0d6/h45Cew0t8GQbuOtR26Kp3rU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45819},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"c3bc8332f4bb6aab0b98d5ab59daa33b1d704875","scripts":{"lint":"prettier --check src test && eslint src test --ext .js,.ts","test":"NODE_ENV=test vitest run","bench":"vitest bench","build":"tsc","types":"tsc --noEmit","watch":"tsc --watch","format":"prettier --write src test"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"11.6.2","description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rbush":"4.0.1","geojson":"0.5.0","@turf/area":"7.3.1","@turf/helpers":"7.3.1","@turf/boolean-point-in-polygon":"7.3.1","geojson-polygon-self-intersections":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.2","vitest":"4.0.16","globals":"16.5.0","prettier":"3.7.4","@eslint/js":"9.39.2","@turf/meta":"7.3.1","typescript":"5.9.3","@types/node":"25.0.3","@types/rbush":"4.0.0","@types/geojson":"7946.0.16","@eslint/eslintrc":"3.3.3","typescript-eslint":"8.50.0","eslint-config-prettier":"10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_2.0.1_1766419670717_0.053452762039988055","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"simplepolygon","version":"2.0.2","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"url":"https://manuelclaeysbouuaert.be","name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com"},"license":"MIT","_id":"simplepolygon@2.0.2","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"1e6473f7ff609b841e0d22e698eccfb00514e5f8","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-2.0.2.tgz","fileCount":6,"integrity":"sha512-Ib2pGDfTWjsUgGXxuOfWvLOrGWA2Dp5GCWhnEGONCtIYVvdjDrJjRTkC39fQ7wy8U5p3Na3PSjVwjTSlyLA/SQ==","signatures":[{"sig":"MEYCIQCekTTct1sSH+CuwhBOUubIILVKPChOerWyUE4rVD4q1QIhAPRv9h9H3Q3nxVvnHG8YZ3d9oF8P+Y5iPK+M/TDCm0F6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45925},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"d8d69f041f41f8ed624e0b1d8a37660a047d6731","scripts":{"lint":"prettier --check src test && eslint src test --ext .js,.ts","test":"NODE_ENV=test vitest run","bench":"vitest bench","build":"tsc","types":"tsc --noEmit","watch":"tsc --watch","format":"prettier --write src test"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"11.6.2","description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rbush":"4.0.1","geojson":"0.5.0","@turf/area":"7.3.1","@turf/helpers":"7.3.1","@turf/boolean-point-in-polygon":"7.3.1","geojson-polygon-self-intersections":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.2","vitest":"4.0.16","globals":"16.5.0","prettier":"3.7.4","@eslint/js":"9.39.2","@turf/meta":"7.3.1","typescript":"5.9.3","@types/node":"25.0.3","@types/rbush":"4.0.0","@types/geojson":"7946.0.16","@eslint/eslintrc":"3.3.3","typescript-eslint":"8.50.0","eslint-config-prettier":"10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_2.0.2_1766501525669_0.3683564784275697","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"simplepolygon","version":"2.0.3","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"author":{"url":"https://manuelclaeysbouuaert.be","name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com"},"license":"MIT","_id":"simplepolygon@2.0.3","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"dist":{"shasum":"79e0ad31ea1e898cc67f8b61fe5c6d82d32270e1","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-2.0.3.tgz","fileCount":6,"integrity":"sha512-V1wGl6hEwI9+7NvGycG25yzf9q/KNDe8x01Ufw5AXPoHBRrygKinrv8s9RW7qhVwTK0BVGhBVLqBh4niqkhqWQ==","signatures":[{"sig":"MEUCIFTtzvaOwIfTjA8u3HrcQ4+TvnsQNyj7CsMLd72AkzLkAiEA5PX8jHQHwVxQbXnYS9pc+4eMIifbLOzxdyjdQqPVjyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"253c444ab18cad9d84bddcc9c733322aa406db18","scripts":{"lint":"prettier --check src test && eslint src test --ext .js,.ts","test":"NODE_ENV=test vitest run","bench":"vitest bench","build":"tsc","types":"tsc --noEmit","watch":"tsc --watch","format":"prettier --write src test"},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"repository":{"url":"git+https://github.com/mclaeysb/simplepolygon.git","type":"git"},"_npmVersion":"11.6.2","description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rbush":"4.0.1","geojson":"0.5.0","@turf/area":"7.3.1","@turf/helpers":"7.3.1","@turf/boolean-point-in-polygon":"7.3.1","geojson-polygon-self-intersections":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.2","vitest":"4.0.16","globals":"16.5.0","prettier":"3.7.4","@eslint/js":"9.39.2","@turf/meta":"7.3.1","typescript":"5.9.3","@types/node":"25.0.3","@types/rbush":"4.0.0","@types/geojson":"7946.0.16","@eslint/eslintrc":"3.3.3","typescript-eslint":"8.50.0","eslint-config-prettier":"10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/simplepolygon_2.0.3_1767714141378_0.4064236837462094","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"simplepolygon","version":"2.0.4","author":{"name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com","url":"https://manuelclaeysbouuaert.be"},"license":"MIT","main":"./dist/index.js","types":"./dist/index.d.ts","type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/mclaeysb/simplepolygon.git"},"homepage":"https://github.com/mclaeysb/simplepolygon#readme","bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"scripts":{"watch":"tsc --watch","build":"tsc","test":"NODE_ENV=test vitest run","bench":"vitest bench","lint":"prettier --check src test && eslint src test --ext .js,.ts","format":"prettier --write src test","types":"tsc --noEmit"},"dependencies":{"@turf/area":"7.3.1","@turf/boolean-point-in-polygon":"7.3.1","@turf/helpers":"7.3.1","geojson":"0.5.0","geojson-polygon-self-intersections":"3.0.0","rbush":"4.0.1"},"devDependencies":{"@eslint/eslintrc":"3.3.3","@eslint/js":"9.39.2","@turf/meta":"7.3.1","@types/geojson":"7946.0.16","@types/node":"25.0.3","@types/rbush":"4.0.0","eslint":"9.39.2","eslint-config-prettier":"10.1.8","globals":"16.5.0","prettier":"3.7.4","typescript":"5.9.3","typescript-eslint":"8.50.0","vitest":"4.0.16"},"gitHead":"317df160dba91d205431bb3b75e8239157c21a87","_id":"simplepolygon@2.0.4","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-YaKDj9cPeBpF4gqNtDyXbaAQ2ncBBfQ1jdcljijtAtoZSCK5epRenh36Kyty/jQAgbfEarMCnjlv1XFupUMm3Q==","shasum":"34715f3b95dee510284a82da77690cc5b4ac24b9","tarball":"https://registry.npmjs.org/simplepolygon/-/simplepolygon-2.0.4.tgz","fileCount":6,"unpackedSize":45990,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGseJmwoLTW1NzT3p9YzPp/amKU/wHcIgqWdvtuM2L0eAiEAtzBfCfA4Sq5f3zPcuHAqCiQtERyH+S6SY2dQDz/vdpM="}]},"_npmUser":{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"},"directories":{},"maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/simplepolygon_2.0.4_1768586623713_0.5890276546388709"},"_hasShrinkwrap":false}},"time":{"created":"2016-06-12T14:38:02.288Z","modified":"2026-01-16T18:03:44.028Z","1.0.0":"2016-06-12T14:38:02.288Z","1.0.1":"2016-08-09T10:01:11.580Z","1.1.0":"2016-08-21T11:45:57.334Z","1.1.1":"2016-08-21T12:02:33.019Z","1.1.2":"2017-03-24T13:15:15.667Z","1.1.3":"2017-03-24T18:50:56.052Z","1.1.4":"2017-04-09T19:15:12.594Z","1.1.5":"2017-04-09T19:18:49.898Z","1.1.6":"2017-04-09T20:38:58.509Z","1.1.7":"2017-06-18T22:54:28.060Z","1.2.0":"2017-07-31T12:32:36.450Z","1.2.1":"2017-08-03T20:11:01.750Z","1.2.2":"2017-09-07T17:01:22.500Z","1.2.3":"2019-10-09T09:14:12.050Z","1.2.4":"2025-12-18T11:27:43.385Z","2.0.0":"2025-12-22T16:05:57.864Z","2.0.1":"2025-12-22T16:07:50.855Z","2.0.2":"2025-12-23T14:52:05.812Z","2.0.3":"2026-01-06T15:42:21.538Z","2.0.4":"2026-01-16T18:03:43.893Z"},"bugs":{"url":"https://github.com/mclaeysb/simplepolygon/issues"},"author":{"name":"Manuel Claeys Bouuaert","email":"manuel.claeys.b@gmail.com","url":"https://manuelclaeysbouuaert.be"},"license":"MIT","homepage":"https://github.com/mclaeysb/simplepolygon#readme","keywords":["polygon","complex polygon","simple polygon","self-intersection","winding number"],"repository":{"type":"git","url":"git+https://github.com/mclaeysb/simplepolygon.git"},"description":"Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.","maintainers":[{"name":"mclaeysb","email":"manuel.claeys.b@gmail.com"}],"readme":"# simplepolygon\n\nTakes a complex (i.e. self-intersecting) GeoJSON polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.\n\nThe algorithm is based on a thesis submitted by Lavanya Subramaniam: *Subramaniam, Lavanya. Partition of a Non-simple Polygon Into Simple Polygons. Diss. University of South Alabama, 2003*, which can be found [here](http://www.cis.southalabama.edu/~hain/general/Theses/Subramaniam_thesis.pdf) and features a `C/C++` implementation for polygons with one self-intersecting ring.\n\nHere, the algorithm was implemented in `JavaScript`, and was extended to work with GeoJSON polygons, in the sense that it can handle outer *and* inner rings self- and cross-intersecting.\n\n## Installation\n\nThis package works in browsers and in Node.js as an ESM module.\n\nInstall Node.js or any compatible JavaScript runtime, then install this package with your favorite package manager.\n\n```sh\nnpm install simplepolygon\n```\n\nYou can optionally build this package locally by running:\n\n```sh\nnpm run build\n```\n\nCommands for tests and benchmarking are included. Run `DEBUG=* pnpm run test` to run tests or other code with debugging logs.\n\n## Usage\n\n```js\nimport simplepolygon from 'simplepolygon'\n\n// feature = {type: \"Feature\", geometry: {type: \"Polygon\", coordinates: [[[0,0], [2,0], [0,2], [2,2], [0,0]]]}}\n\nconst result = simplepolygon(feature);\n```\n\nWhere `feature` is a GeoJSON Feature of Polygon *geometry*, who's coordinates are an Array of Array of Positions, where each position has at least two coordinates. Only the first two coordinates (typically *X* and *Y* or *lon* and *lat*) are taken into account.\n\nImportantly, this feature may be *un-conform* the [Simple Features standard](https://en.wikipedia.org/wiki/Simple_Features) in the sense that it's inner and outer rings may cross-intersect or self-intersect, that the outer ring must not contain the optional inner rings and that the winding number must not be positive for the outer and negative for the inner rings.\n\n`result` is a FeatureCollection containing the simple, non-self-intersecting one-ring polygon features that the complex polygon is composed of. These simple polygons have *properties* such as their parent polygon, winding number and net winding number.\n\nIn the above example, the output will be a FeatureCollection of two polygons, one with coordinates `[[[0,0], [2,0], [1,1], [0,0]]]`, parent -1, winding 1 and net winding 1, and one with coordinates `[[[1,1], [0,2], [2,2], [1,1]]]`, parent -1, winding -1 and net winding -1.\n\nAnother example input and output is shown below.\n![](/example.png?raw=true)  \n\n## How the algorithm works\n\nThis algorithm employs the notion of intersections and pseudo-vertices as outlined in the article.\n\n**Intersections** are either vertices of an input ring (*ring-vertex-intersection*) or a self- or cross-intersection of those ring(s) (*self-intersection*).\n\n**Pseudo-vertices** are a concepts that occur at an intersection: when two edges cross, one pseudo-vertex is formed by the first edge going up to and until the intersection vertex and the second edge going out from the intersection. A second pseudo vertex is formed reciprocally. Two such *intersection-pseudo-vertices* are depicted below.\n![](/intersectionPseudoVertices.png?raw=true)  \n\nAlso, at each input ring vertices one pseudo-vertex (*ring-pseudo-vertex*) is created by one egde going in and the other going out.\n\nThis algorithm walks from intersections to intersection over (rings and) edges in their original direction, and while walking traces simple, non-self-intersecting one-ring polygons by storing the vertices along the way. This is possible since each intersection is first taught (using the pseudo-vertices) which is the next one given the incoming walking edge. When walking, the algorithm also stores where it has walked (since we must only walk over each (part of an) edge once), and keeps track of intersections that are new and from where another walk (and hence simple polygon) could be initiated. The resulting simple, one-ring polygons cover all input edges exactly once and don't self- or cross-intersect (but can touch at intersections). Hence, they form a set of nested rings.\n\n### Some notes on the algorithm:\n\n- We will talk about rings (arrays of `[x,y]`) and polygons (array of rings). The GeoJSON spec requires rings to be non-self- and non-cross-intersecting, but here the input rings can self- and cross-intersect (inter and intra ring). The output rings can't, since they are conform the spec. Therefore will talk about *input rings* or simply *rings* (non-conform), *output rings* (conform) and more generally *simple, non-self or cross-intersecting rings* (conform)\n- We say that a polygon self-intersects when it's rings either self-intersect of cross-intersect\n- Edges are oriented from their first to their second ring vertex. Hence, ring `i` edge `j` goes from vertex `j` to `j+1`. This direction or orientation of an edge is kept unchanged during the algorithm. We will only walk along this direction\n- We use the terms *ring edge*, *ring vertex*, *self-intersection vertex*, *intersection* (which includes *ring-vertex-intersection* and *self-intersection*) and *pseudo-vertex* (which includes *ring-pseudo-vertex* and *intersection-pseudo-vertex*)\n- At an intersection of two edges, two pseudo-vertices (intersection-pseudo-vertices) are one intersection (self-intersection) is present\n- At a ring vertex, one pseudo-vertex (ring-pseudo-vertex) and one intersection (ring-intersection) is present\n- A pseudo-vertex has an incoming and outgoing (crossing) edge\n- The following objects are stored and passed by the index in the list between brackets: intersections (`isectList`) and pseudo-vertices (`pseudoVtxListByRingAndEdge`)\n- The algorithm checks if the input has no non-unique vertices. This is mainly to prevent self-intersecting input polygons such as `[[0,0], [2,0], [1,1], [0,2], [1,3], [2,2], [1,1], [0,0]]`, whose self-intersections would not be detected. As such, many polygons which are non-simple, by the OGC definition, for other reasons than self-intersection, will not be allowed. An exception includes polygons with spikes or cuts such as `[[0, 0], [2, 0], [0, 2], [4, 2], [2, 2], [0, 0]]`, who are currently allowed and treated correctly, but make the output non-simple (by OGC definition). This could be prevented by checking for vertices on other edges.\n- The resulting component polygons are one-ring and simple (in the sense that their ring does not contain self-intersections) and two component simple polygons are either disjoint, touching in one or multiple vertices, or one fully encloses the other\n- This algorithm takes GeoJSON as input, be was developed for a euclidean (and not geodesic) setting. If used in a geodesic setting, the most important consideration to make is the computation of intersection points (which is practice is only an issue of the line segments are relatively long). Further we also note that winding numbers for area's larger than half of the globe are sometimes treated specially. All other concepts of this algorithm (convex angles, direction, ...) can be ported to a geodesic setting without problems.\n- Since v1.1.1, spatial indexes are used in the underlying computation of edge intersections and throughout the algorithm, to dramatically speed up the computations in case of large polygons\n\n### Differences with the original article\n\nThis code differs from the algorithm and nomenclature of the article it is inspired on in the following way:\n\n- The code was written based on the article text, and not ported directly from the enclosed C/C++ code\n- This implementation expanded the algorithm to polygons containing inner and outer rings\n- No constructors are used, except `PseudoVtx` and `Isect`\n- Some variables are named differently: `edges` is called `LineSegments` in the article, `ringAndEdgeOut` is  `l`, `PseudoVtx` is `nVtx`, `Isect` is `intersection`, `nxtIsectAlongEdgeIn` is `index`, `ringAndEdge1` and `ringAndEdge2` are `origin1` and `origin2`, `pseudoVtxListByRingAndEdge` is `polygonEdgeArray`, `isectList` is `intersectionList` and `isectQueue` is `intersectioQueue`\n- `pseudoVtxListByRingAndEdge` contains the ring vertex at its end as the last item, and not the ring vertex at its start as the first item\n- `winding` is not implemented as a property of an intersection, but as its own queue\n\n## Changelog\n\n### 2.0.0 - 2025-12-22\n\n- This is now an ESM module written in TypeScript","readmeFilename":"README.md","users":{"peterobbin":true}}