{"id":18739541,"url":"https://github.com/springmeyer/shapely.js","last_synced_at":"2026-03-10T11:04:55.063Z","repository":{"id":11876216,"uuid":"14436959","full_name":"springmeyer/shapely.js","owner":"springmeyer","description":"Node.js geometry library","archived":false,"fork":false,"pushed_at":"2013-12-12T03:15:00.000Z","size":236,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-08T23:42:04.624Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/springmeyer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-15T22:43:39.000Z","updated_at":"2019-08-13T15:30:05.000Z","dependencies_parsed_at":"2022-09-24T07:10:43.361Z","dependency_job_id":null,"html_url":"https://github.com/springmeyer/shapely.js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/springmeyer/shapely.js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Fshapely.js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Fshapely.js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Fshapely.js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Fshapely.js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/springmeyer","download_url":"https://codeload.github.com/springmeyer/shapely.js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Fshapely.js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30331651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T15:36:16.436Z","updated_at":"2026-03-10T11:04:55.038Z","avatar_url":"https://github.com/springmeyer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shapely.js\n\nNode.js geometry library. Bindings to [libgeos](http://trac.osgeo.org/geos/) using [node-ffi](https://github.com/rbranson/node-ffi). Inspired by [Shapely in python](http://toblerity.org/shapely/manual.html).\n\n[![Build Status](https://secure.travis-ci.org/springmeyer/shapely.js.png)](https://travis-ci.org/springmeyer/shapely.js)\n\nEXPERIMENTAL ONLY. No current releases.\n\nThis is an investigation into these questions:\n\n - How feasible is it to develop stable, cross platform, and reasonably fast node.js bindings to a C API using node-ffi, ref, ffi-generation, and node-weak?\n - What does a good Javascript API look like that leverages libgeos but hides the complexity?\n - How does an ffi-based approach perform compared to native calls in C++ or pure JS based geometry ops?\n\n## Requires\n\n- Node.js v0.10.x\n- node-gyp [Dependencies](https://github.com/TooTallNate/node-gyp/#installation): python, make, c++ compiler\n\n## Setup\n\nTo install:\n\n    git clone https://github.com/springmeyer/shapely.js.git\n    cd shapely.js\n    npm install\n\n## Test\n\n    npm test\n\n## Benchmarks\n\nWorking benchmarks at https://github.com/springmeyer/geom-ops-bench\n\n## Details\n\nAt build time this module automatically generates raw libgeos ffi bindings (in `lib/geos.js`) using a [patched](https://github.com/springmeyer/node-ffi-generate/commit/eae6d9c2212486eb76979adc1d1ef98cb4e579b9) version of [node-ffi-generate](https://github.com/tjfontaine/node-ffi-generate). Then it provides a nascent wrapper to start making the API simpler (in `index.js`).\n\n## See also\n\n- Python ffi bindings to libgeos: http://toblerity.org/shapely/manual.html\n- Ruby ffi bindings to libgeos: https://github.com/dark-panda/ffi-geos\n- Pure JS geometry ops: https://github.com/maxogden/geojson-js-utils\n- Pure JS geometry ops: https://github.com/chelm/shapely.js\n- Node C++ bindings to libgeos: https://github.com/kashif/node-geos\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringmeyer%2Fshapely.js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspringmeyer%2Fshapely.js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringmeyer%2Fshapely.js/lists"}