Skip to content

Repository files navigation

kuzzle-types

The TypeScript types of the Kuzzle API contract — documents, requests, responses, notifications, mappings, security definitions — shared by the server (kuzzle) and the JavaScript SDK (kuzzle-sdk).

You usually do not need to install it. kuzzle and kuzzle-sdk depend on it and re-export every type under the same name, so keep importing from the package you already use:

import { KDocument, KDocumentContent } from "kuzzle-sdk"; // or from "kuzzle"

Install it directly only for code that must describe the API without depending on either — a shared model package, a front end that does not use the SDK:

npm install kuzzle-types
import type { KDocument, KDocumentContent } from "kuzzle-types";

interface Asset extends KDocumentContent {
  model: string;
}

function label(asset: KDocument<Asset>): string {
  return `${asset._id} (${asset._source.model})`;
}

Guarantees

  • Types only. No runtime code and no dependencies, enforced in CI (npm run test:types-only). Several copies of this package in one node_modules are harmless: its types are structural.
  • Same types as kuzzle-sdk 7.17.1 at the seed, asserted type by type (tests/sdk-equivalence.ts). Document (deprecated) is the one exception in form: an interface here, a class in the SDK, which keeps it. Since then, additions only: optional ResponsePayload.error.props (1.1.0).
  • Semantic versioning. A change that can break a consumer's type check is a major.

Contributing

npm ci
npm test   # lint + type tests + build + types-only check

Commits follow Conventional Commits; releases are published by semantic-release from master (stable) and beta (prerelease).

This package comes from ADR-0002 in the Kuzzle repository: the server owns its API contract, and the SDK builds on it.

About

Shared TypeScript types of the Kuzzle API contract (types only)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages