@noodlestan/designer-schemas
TypeScript icon, indicating that this package has built-in type declarations

0.0.14 • Public • Published

Designer Decisions - Schemas

A collection of JSON schemas to validate design decision inputs.

How to use

📖 Documentation

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: module or exports fields to package.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)

Scripts

  • $ npm run dev - uses esbuild to watch and tsc to emit declarations on rebuild.
  • $ npm run build - uses esbuild to build dist/cjs and tsc to 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.

/@noodlestan/designer-schemas/

    Package Sidebar

    Install

    npm i @noodlestan/designer-schemas

    Weekly Downloads

    5

    Version

    0.0.14

    License

    MIT

    Unpacked Size

    349 kB

    Total Files

    146

    Last publish

    Collaborators

    • noodlestan