@haverstack/commons
v0.20.0
Published
Canonical Schema Commons type definitions for Haverstack — register commons types exactly as written
Maintainers
Readme
@haverstack/commons
Canonical Schema Commons type definitions for Haverstack.
The commons namespace org.haverstack is reserved for a small set of well-known,
neutrally-governed types (note, bookmark, task, ...) so that apps sharing a stack
can interoperate on the data shapes almost every personal app touches. That only works
if every app registers a commons type exactly as written — a modified copy under
the same typeId is schema drift, and the drift guard will (correctly) reject it. This
package makes that structural rather than social: import the constant, don't
hand-transcribe a schema out of markdown.
Status: Early development. Exports only Draft-status types — see
docs/commons/README.mdfor what Draft/Staged/Proposed mean. Proposed types have no intended writer yet and stay docs-only until they graduate.
Installation
npm install @haverstack/commonsUsage
import { Stack } from '@haverstack/core';
import { defineCommonsTypes, NOTE, TASK } from '@haverstack/commons';
// Register only the commons types your app actually writes.
await defineCommonsTypes(stack, [NOTE, TASK]);
const note = await stack.create(NOTE.id, { text: 'Hello, Haverstack!' });Each export (NOTE, BOOKMARK, TASK, CONTACT, ARTICLE, PLACE, PAGE, PHOTO,
POST) is a { id, name, schema } triple mirroring its type's stack.defineType(...) block in
docs/commons/ exactly.
defineCommonsTypes() is a thin loop over stack.defineType() — calling it again with
types already registered is the ordinary idempotent no-op path (see defineType's own
docs), so it's safe to call on every app startup.
Governance
The schemas here are not this package's to change. A type's shape, required core, and
conventions are decided by the process in
docs/commons/README.md § Governance —
propose additions or changes there, as an issue on haverstack/core titled
Commons: <proposal>. This package's constants are updated to match once a proposal
lands; it never carries a schema the docs don't also carry.
License
CC0 1.0 Universal — public domain.
Monorepo
Part of haverstack/core.
