@noodlestan/designer-schemas
v0.0.14
Published
A collection of JSON schemas to validate design decision inputs.
Readme
Designer Decisions - Schemas
A collection of JSON schemas to validate design decision inputs.

How to use
This collection of schemas validates inputs for all built-in decision types and models.
Schema Source
This exported constant defines where to locate the schema collection.
SchemaSource(s) are a way to pass schema collections by reference to decision validators and loaders such as buildStaticStore().
import { DEMO_DATA } from '@noodlestan/designer-decisions';
import {
createBuilderContext,
formatDecisionStatus,
formatError,
produceDecisions,
buildStaticStore,
} from '@noodlestan/designer-functions';
const options: BuilderOptions = {
decisions: [DEMO_DATA, './data'],
};
const context = createBuilderContext(options);
const build = buildStaticStore(context);
const store = await build();
if (context.hasErrors()) {
context()
.errors()
.forEach(error => console.error(formatError(error)));
throw new Error(`Store has errors.`);
}
const records = store.records();
const produced = produceDecisions(context, store);
produced.decisions().forEach(status => console.info(formatDecisionStatus(status)));
console.info('🐘', produced.summary());See also
Development
Make sure you README first.
[!IMPORTANT] This package publishes auto-generated JSON Schemas.
This package publishes a collection of JSON Schemas but these files are not checked-in anywhere.
The tool that generates the JSON files resides (and is executed from) the build tools in this repository.
This package exists solely to publish the schemas to NPM.
Build Targets
[!IMPORTANT] Do not add
type: moduleorexportsfields topackage.jsonas this will break Node.js ESM consumers.
This library is packaged for use both in bundlers such as Vite and Astro, as well as Node.js environments (CJS/ESM), and ts-node. For Node.js consumers, even those using import or await import() syntaxes, all imports resolve to the CJS build. This is only possible when the "type": "module" and "exports" fields are both omitted from the library's package.json.
| Consumer | Syntax | Resolves to |
| ------------------- | ------------- | ---------------------------------------- |
| Bundlers | ESM import | module → TS entry point src/index.ts |
| node script.js | CJS require | main → CJS build dist/cjs/index.js |
| node script.mjs | ESM import | main (ignores module) |
| ts-node script.ts | ESM import | main (ignores module) |
Scripts
- $
npm run dev- usesesbuildto watch andtscto emit declarations on rebuild. - $
npm run build- usesesbuildto builddist/cjsandtscto emit declarations. - $
npm run test/npm run test:watch- 🚧 no tests. - $
npm run lint/npm run lint:fix- uses @noodlestan/eslint-config.
MIT License
Copyright (c) 2024 Noodlestan.
Published under a MIT license.
