From ae40c680de1c9cea9864334a117b3fe226ac4805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20L=C3=B6vqvist?= Date: Thu, 9 Apr 2026 20:11:50 +0200 Subject: [PATCH] Fixed bug in makefile due to renaming the tool script before, bumped version, made factories for easier schema definition --- Makefile | 2 +- experiments/{config.mjs => config1.mjs} | 0 experiments/config2.mjs | 9 +++++++++ package-manifest.yaml | 2 +- package.json | 5 +++++ source/data/field-configuration-factories.mjs | 20 +++++++++++++++++++ source/data/field-configuration.mjs | 1 + 7 files changed, 37 insertions(+), 2 deletions(-) rename experiments/{config.mjs => config1.mjs} (100%) create mode 100644 experiments/config2.mjs create mode 100644 package.json create mode 100644 source/data/field-configuration-factories.mjs diff --git a/Makefile b/Makefile index 520f035..fbf6111 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ build/packages: mkdir -p $@ - node tools/stage-for-pnpn.mjs package-manifest.yaml source $@ + node tools/stage-for-pnpm.mjs package-manifest.yaml source $@ publish: cd build/packages && ./publish-all.sh diff --git a/experiments/config.mjs b/experiments/config1.mjs similarity index 100% rename from experiments/config.mjs rename to experiments/config1.mjs diff --git a/experiments/config2.mjs b/experiments/config2.mjs new file mode 100644 index 0000000..637ccf6 --- /dev/null +++ b/experiments/config2.mjs @@ -0,0 +1,9 @@ +import * as F from '@efforting.tech/data/field-configuration-factories'; + +const s = new F.Schema({ + foo: F.value(123, 'The value'), + bar: F.factory((t) => `Field ${t.field_name} was not set`, 'The factory'), +}); + + +console.log(s.load()) // { foo: 123, bar: 'Field bar was not set' } diff --git a/package-manifest.yaml b/package-manifest.yaml index f225fdc..10cd438 100644 --- a/package-manifest.yaml +++ b/package-manifest.yaml @@ -1,6 +1,6 @@ scope: '@efforting.tech' registry: 'https://npm.efforting.tech/' -version: 0.2.4 +version: 0.2.5 author: name: 'Mikael Lövqvist' diff --git a/package.json b/package.json new file mode 100644 index 0000000..aef9cb0 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "experiments": "^0.3.0" + } +} diff --git a/source/data/field-configuration-factories.mjs b/source/data/field-configuration-factories.mjs new file mode 100644 index 0000000..4a05668 --- /dev/null +++ b/source/data/field-configuration-factories.mjs @@ -0,0 +1,20 @@ +import { Field_Configuration } from './field-configuration.mjs'; +export { Schema } from './field-configuration.mjs'; + +//constructor(validation_function=null, coercion_function=null, factory_function=null, expected_description=undefined) { + +export function value(default_value, description) { + return new Field_Configuration(null, null, () => default_value, description); +} + +export function factory(factory_function, description) { + return new Field_Configuration(null, null, factory_function, description); +} + +export function typed_value(coercion_function, default_value, description) { + return new Field_Configuration(null, coercion_function, () => default_value, description); +} + +export function typed_factory(coercion_function, factory_function, description) { + return new Field_Configuration(null, coercion_function, factory_function, description); +} \ No newline at end of file diff --git a/source/data/field-configuration.mjs b/source/data/field-configuration.mjs index 10c78fc..4971bfc 100644 --- a/source/data/field-configuration.mjs +++ b/source/data/field-configuration.mjs @@ -1,5 +1,6 @@ import { Data_Validation_Failed, Data_Coercion_Failed, Superfluous_Data_Field } from '@efforting.tech/errors'; + export class Field_Configuration { constructor(validation_function=null, coercion_function=null, factory_function=null, expected_description=undefined) { Object.assign(this, { validation_function, coercion_function, factory_function, expected_description });