@izak0s/spacebring-api 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +658 -64
- package/dist/index.d.ts +658 -64
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ A fully-typed TypeScript client for the [Spacebring](https://www.spacebring.com)
|
|
|
17
17
|
- **Nested, discoverable API** — `sb.billing.invoices.pay(id)`, `sb.visitors.visits.checkIn(body)`
|
|
18
18
|
- **Auto-pagination** — every paginated list endpoint has an `iterate()` async generator that walks `nextPageToken` for you
|
|
19
19
|
- **Ergonomic returns** — single-property response envelopes are unwrapped: entities and plain arrays come back directly
|
|
20
|
+
- **Readable, named types** — entities (`Booking`, `Invoice`) and query parameters (`GetBookingsQuery`) are exported named types, so hovers show `Booking[]` instead of generated type soup, and enum filters are literal unions
|
|
20
21
|
- **Rich error handling** — non-2xx responses throw a typed `SpacebringError` carrying the status, parsed body, and the operation that failed; malformed 2xx bodies and stuck pagination tokens throw instead of failing silently
|
|
21
22
|
- **Resilient by default** — automatic retries for rate limits, gateway errors, and network failures (never replaying non-idempotent requests); optional per-attempt timeouts and `AbortSignal` cancellation on every method
|
|
22
23
|
- **Zero runtime dependencies** — Node ≥ 20, `fetch`-based
|
|
@@ -70,7 +71,7 @@ async function main() {
|
|
|
70
71
|
main().catch(console.error);
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
Entity types are exported by name — `import type { Booking, Invoice, Membership } from "@izak0s/spacebring-api"` — matching what the methods return (`get`/`create`/`update` resolve to the entity, `iterate()` yields it). Lower-level helpers too: `SpacebringConfig`, `SpacebringResources`, and the raw spec types `paths` / `components` / `operations`.
|
|
74
|
+
Entity types are exported by name — `import type { Booking, Invoice, Membership } from "@izak0s/spacebring-api"` — matching what the methods return (`get`/`create`/`update` resolve to the entity, `iterate()` yields it). Query parameters get named interfaces too (`GetBookingsQuery`, `GetInvoicesQuery`), with per-field docs from the spec and enum filters as literal unions. Lower-level helpers too: `SpacebringConfig`, `SpacebringResources`, and the raw spec types `paths` / `components` / `operations`.
|
|
74
75
|
|
|
75
76
|
### Data formats
|
|
76
77
|
|
|
@@ -141,7 +142,7 @@ const { data, error, response } = await sb.raw.GET("/networks/v1", {});
|
|
|
141
142
|
|
|
142
143
|
## Keeping up with API changes
|
|
143
144
|
|
|
144
|
-
The whole client (types + methods) is generated from Spacebring's OpenAPI spec; a
|
|
145
|
+
The whole client (types + methods) is generated from Spacebring's OpenAPI spec; a daily GitHub Action picks up spec changes and publishes a new version automatically. Details in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
145
146
|
|
|
146
147
|
---
|
|
147
148
|
|