npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@faiber/faiber-gis

v2.7.0

Published

Typed GIS client for datasets, GeoJSON edits, map publication, vector tiles, area imports, private places, the public place catalog, moderation and the integration outbox.

Readme

@faiber/faiber-gis

Typed GIS client for datasets, GeoJSON edits, map publication, vector tiles, area imports, private places, the public place catalog, moderation and the integration outbox.

npm install @faiber/faiber-gis @faiber/sdk-core
import { FaiberClient } from "@faiber/sdk-core";
import { GisApi } from "@faiber/faiber-gis";

const gis = new GisApi(new FaiberClient("gis", {
  domains: { gis: "https://gis.your-project.example" },
  axios: { withCredentials: true, timeout: 15_000 },
}));
const controller = new AbortController();
const response = await gis.operations.createDataset({
  name: "My map", attribution: "Original survey", license: "CC-BY-4.0",
  source: "Reviewed survey", scope: "user",
}, { signal: controller.signal });
console.log(response.status, response.data.data.id);

The browser needs an existing secure IDP cookie session and an origin allowed by the GIS deployment. GIS validates the session and checks the exact origin for cookie-authenticated mutations. A generic end-user Bearer token is not a substitute for this GIS identity flow. Trusted BFF credentials belong only on the server and must never be shipped to a browser. Public map and tile endpoints can be called without a session.

Every method returns the full Axios response, including status and headers, and accepts Axios request options. Cancellation rejects with Axios cancellation behavior; HTTP and transport failures reject with AxiosError. Authentication failures return401, permission/origin failures403, inaccessible resources commonly404, stale revisions409 and unavailable dependencies503. Inspect error.response when present; a network failure may have no response.

Feature geometry uses the six native GeoJSON types (Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon); the server checks coordinate ranges, batch sizes and PostGIS topology. Map styles expose typed sources, layers, light, center and zoom; paint/filter expressions retain JSON values. Coordinates use longitude then latitude; bbox values are west,south,east,north. Revision-checked mutations require expected_revision from the latest resource. Dataset publication and map publication are separate: a public map also requires a published, public dataset. Personal places remain private.

tile and publicTile return ArrayBuffer bytes while preserving headers. Import submission returns a queued job, not a completed or published dataset. Imports require the server's organization-specific authority configuration; missing configuration returns503. Submission and retry enforce a two-active-job limit per owner, returning429 when exceeded. imports() returns at most100 newest visible jobs; it has no pagination and omits the private lease token. Retry accepts only an owned failed current-protocol job and rechecks current authority and its original issuer binding.

Place assertions link an existing place to a social author; they do not transfer ownership. Outbox reads and acknowledgements require the dedicated integration permission.

For the complete client, install @faiber/faiber-ts-sdk and use sdk.gis. The published package's provenance.json identifies its supported backend source; deployment compatibility still depends on the project's service versions.