{"id":48483309,"url":"https://github.com/meggsimum/geoserver-node-client","last_synced_at":"2026-04-07T09:01:30.413Z","repository":{"id":38822329,"uuid":"274612780","full_name":"meggsimum/geoserver-node-client","owner":"meggsimum","description":"Node.js client for GeoServer REST API","archived":false,"fork":false,"pushed_at":"2026-04-07T07:19:06.000Z","size":4444,"stargazers_count":57,"open_issues_count":18,"forks_count":17,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-07T08:08:54.087Z","etag":null,"topics":["api","geoserver","javascript","nodejs","rest"],"latest_commit_sha":null,"homepage":"","language":"PLpgSQL","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/meggsimum.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-06-24T08:11:09.000Z","updated_at":"2026-04-07T07:18:38.000Z","dependencies_parsed_at":"2023-10-11T13:34:25.279Z","dependency_job_id":"c656e1e1-ffe1-4620-b323-9abc1beb240d","html_url":"https://github.com/meggsimum/geoserver-node-client","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/meggsimum/geoserver-node-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meggsimum%2Fgeoserver-node-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meggsimum%2Fgeoserver-node-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meggsimum%2Fgeoserver-node-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meggsimum%2Fgeoserver-node-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meggsimum","download_url":"https://codeload.github.com/meggsimum/geoserver-node-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meggsimum%2Fgeoserver-node-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31506578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["api","geoserver","javascript","nodejs","rest"],"created_at":"2026-04-07T09:01:29.821Z","updated_at":"2026-04-07T09:01:30.404Z","avatar_url":"https://github.com/meggsimum.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GeoServer Node Client\n\n[![npm version](https://badge.fury.io/js/geoserver-node-client.svg)](https://www.npmjs.com/package/geoserver-node-client)\n[![Website](https://img.shields.io/website?up_message=API-Docs\u0026url=https%3A%2F%2Fmeggsimum.github.io%2Fgeoserver-node-client%2F)](https://meggsimum.github.io/geoserver-node-client)\n![GitHub Release Date](https://img.shields.io/github/release-date/meggsimum/geoserver-node-client)\n![GitHub last commit](https://img.shields.io/github/last-commit/meggsimum/geoserver-node-client)\n![CI Badge](https://github.com/meggsimum/geoserver-node-client/actions/workflows/ci-geoserver-node-client.yml/badge.svg)\n\n![GeoSever Node Client Logo](/img/geoserver-node-client-logo_150px.png)\n\nNode.js / JavaScript Client for the [GeoServer REST API](https://docs.geoserver.org/stable/en/user/rest/).\n\n## API-Docs\n\nDetailed [API-Docs](https://meggsimum.github.io/geoserver-node-client/) are automatically created with JSDoc.\n\n## Meta information\n\nCompatible with [GeoServer](https://geoserver.org)\n\n- v2.28.x\n- v2.27.x\n- v2.26.x (no more maintained and officially deprecated)\n- v2.25.x (no more maintained and officially deprecated)\n- v2.24.x (no more maintained and officially deprecated)\n- v2.23.x (no more maintained and officially deprecated)\n- v2.22.x (no more maintained and officially deprecated)\n- v2.21.x (no more maintained and officially deprecated)\n- v2.20.x (no more maintained and officially deprecated)\n- v2.19.x (no more maintained and officially deprecated)\n- v2.18.x (no more maintained and officially deprecated)\n- v2.17.x (no more maintained and officially deprecated)\n\n## Usage\n\n```shell\nnpm i geoserver-node-client\n```\n\nusage with require (ES5):\n\n```js\nvar grcImport = require('geoserver-node-client');\nvar GeoServerRestClient = grcImport.GeoServerRestClient;\n\nvar url = 'http://localhost:8080/geoserver/rest/';\nvar user = 'admin';\nvar pw = 'geoserver';\nvar grc = new GeoServerRestClient(url, user, pw);\n\nfunction main () {\n    grc.about.exists().then(function (result) {\n      console.log(result);\n    });\n};\n\nmain();\n```\n\nusage as ES module (ES6)\n\n```js\nimport {GeoServerRestClient} from 'geoserver-node-client';\n\nconst url = 'http://localhost:8080/geoserver/rest/';\nconst user = 'admin';\nconst pw = 'geoserver';\nconst grc = new GeoServerRestClient(url, user, pw);\n\nasync function main () {\n    const result =  await grc.about.exists();\n    console.log(result);\n};\n\nmain();\n```\n\n## Setup\n\nRun as local checkout (mainly for development purposes)\n\n```shell\ngit clone https://github.com/meggsimum/geoserver-node-client\n\ncd geoserver-node-client\n\nnpm install\n\nnpm run demo\n```\n\n## Error Handling\n\nA request either succeeds or throws the custom `GeoServerResponseError`. It has the standard `message` property with a \"human-readable\" text. Additionally the error has the property `geoServerOutput` which contains the direct response from GeoServer. This output is not guaranteed to exist and can either be a simple text or a complete HTML document. The latter is difficult to read, but might still be helpful for debugging. This example shows how these error properties can be used. It also shows how to filter by error type:\n\n```javascript\n  try {\n      // call any function from this library\n      await grc.styles.publish(workspace, styleName, sldBody)\n    } catch (error) {\n      // the standard error message\n      console.error(error.message);\n\n      // the whole error including stack trace and (if available) the property 'geoServerOutput'\n      console.error(error);\n\n      if (error instanceof GeoServerResponseError) {\n        // a GeoServer specific error happened\n      } else {\n        // another error happened\n      }\n    }\n```\n\n## Unit Tests\n\nFirst start a test setup using this Docker compose file:\n\n```shell\nGEOSERVER_VERSION=2.28.0 TEMP_DIR=/tmp/gs docker compose -f test/docker-compose.yml up\n```\n\nThen, in an other terminal, run:\n\n```shell\n# specify the GeoServer version and run the test suite\nGEOSERVER_VERSION=2.28.0 npm run test\n```\n\n## Release\n\nSetting a git tag and increasing the version in the `package.json` as well as releasing to npm is done via [release-it](https://github.com/release-it/release-it).\n\nThe GitHub release has to be performed manually based on the tag created by `release-it`.\n\nThis is the workflow for releasing:\n\n1. Make sure a `GITHUB_TOKEN` is available as environment variable. See [here](https://github.com/release-it/release-it/blob/master/docs/github-releases.md) for more information.\n\n```shell\nexport GITHUB_TOKEN=ADD-YOUR-TOKEN-HERE\n```\n\n2. Make sure you are logged in to npm and ensure you have the rights to make a release.\n\n```shell\nnpm login\n# then enter your credentials\n```\n\n3. Locally checkout the latest `main` branch that you would like to release, then run:\n\n```shell\nnpm run release\n```\n\n4. Follow the questions in the commandline.\n\n- automatically upgrades the version in `package.json`\n- makes a release commit and pushes it to GitHub\n- publishes the new version to npm\n\n## Who do I talk to?\n\nYou need professional support, maintenance or project-driven development around ***geoserver-node-client***? Please contact a service provider listed below:\n\n- meggsimum (Christian Mayer) - info __at## meggsimum ~~dot** de\n\n## Credits\n\nThis project was initiated by [meggsimum](https://meggsimum.de) within the [mFund](https://www.bmv.de/EN/Topics/Digital-Matters/mFund/mFund.html) research project **SAUBER**  and was further developed in the mFund research project **KLIPS**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeggsimum%2Fgeoserver-node-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeggsimum%2Fgeoserver-node-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeggsimum%2Fgeoserver-node-client/lists"}