@plumile/backoffice-core
v0.1.145
Published
Core types and helpers for Kronex backoffice runtime
Maintainers
Readme
@plumile/backoffice-core
Core types, manifests, URL state helpers, and pure utilities for Kronex backoffice runtimes.
Status
Specialized public package. This package is intended for backoffice implementations that adopt Kronex entity manifests, facet resolution, and URL state conventions.
Purpose
@plumile/backoffice-core contains the non-React foundation used by
@plumile/backoffice-react.
It provides:
- manifest builders for list-detail and tool entities
- detail-page normalization and validation helpers
- route and facet resolution helpers
- base64 and detail parameter encoding helpers
- URL state codecs and list defaults
- shared backoffice types
It does not provide:
- React components
- auth flows
- Relay environments
- application-specific business logic
Installation
npm install @plumile/backoffice-corePeer dependencies:
npm install react react-relaySome helpers depend on @plumile/filter-query and Relay runtime concepts
through the package dependency graph.
Main Public Surface
Builders
createListDetailManifestcreateToolManifestcreateListFacetcreatePickerFacetcreateDetailLayoutFacetcreateDetailPageFacetcreateToolFacet
Detail-page helpers
validateDetailPagesnormalizeDetailPagesresolveDefaultDetailPageresolveDetailPageByIdresolveDetailPageByPath
Resolution and routing
resolveBackofficeListFacetConfigresolveBackofficePickerFacetConfigresolveBackofficeDetailLayoutFacetConfigresolveBackofficeDetailPageFacetConfigresolveBackofficeToolFacetConfigresolveBackofficeToolRoute
URL and encoding helpers
encodeBackofficeDetailParamsdecodeBackofficeDetailParams- list URL state helpers from
state/*
Shared contracts
- constants and types exported from the package root
For the complete public entry points and subpaths, see
package.json and src/index.ts.
Quick Start
import {
createToolManifest,
normalizeDetailPages,
} from '@plumile/backoffice-core';
const pages = normalizeDetailPages({
mainPage: {
id: 'overview',
path: '',
content: ['summary'],
},
});
const manifest = createToolManifest({
id: 'jobs',
label: 'Jobs',
routes: {
list: '/jobs',
detail: (id) => `/jobs/${id}`,
detailPage: (id, pageId) => `/jobs/${id}/${pageId}`,
},
facets: {
summary: async () => {
return {
kind: 'tool',
id: 'summary',
label: () => 'Summary',
tool: {
id: 'jobs',
},
};
},
},
});
pages.defaultPage.id; // "overview"
manifest.kind; // "tool"Package Layout
builders.tsmanifest and facet builders used to define public backoffice contractsdetail/*detail-page normalization, validation, and resolution helpersresolve.tsroute and facet resolution helpers that attach resolved public behaviorstate/*list URL state codecs, defaults, and filter-query integrationtypes.tsshared backoffice contracts re-exported from the package root
Validation Notes
- public helpers should stay pure and testable in isolation
- resolution helpers and detail-page utilities are the primary behavioral contracts to validate in unit tests
- package docs should describe behavior by responsibility, not mirror every type export mechanically
Limitations
- this package is intentionally tied to Kronex backoffice concepts
- many types are most useful when paired with
@plumile/backoffice-react - it is not a generic CRUD framework
