A collection of JSON schemas to validate design decision inputs.
This collection of schemas validates inputs for all built-in decision types and models.
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());
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.
[!IMPORTANT] Do not add
type: module
orexports
fields topackage.json
as 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 ) |
-
$
npm run dev
- usesesbuild
to watch andtsc
to emit declarations on rebuild. -
$
npm run build
- usesesbuild
to builddist/cjs
andtsc
to emit declarations. -
$
npm run test
/npm run test:watch
- 🚧 no tests. -
$
npm run lint
/npm run lint:fix
- uses @noodlestan/eslint-config.
Copyright (c) 2024 Noodlestan.
Published under a MIT license.