Added resolvers, unified package versioning and author section to fit with mono repo style

This commit is contained in:
2026-04-07 23:21:03 +02:00
parent 93bf577d8f
commit b5a487fcba
7 changed files with 123 additions and 112 deletions

View File

@@ -2,6 +2,7 @@
"name": "experiments",
"type": "module",
"dependencies": {
"@efforting.tech/errors": "link:../build/packages/errors"
"@efforting.tech/errors": "link:../build/packages/errors",
"@efforting.tech/rule-processing": "link:../build/packages/rule-processing"
}
}

View File

@@ -1,47 +1,6 @@
import { Item_Unresolvable } from '@efforting.tech/errors';
import { Mapping_Resolver, Chained_Resolver } from '@efforting.tech/rule-processing/resolvers';
class Abstract_Resolver {
resolve(item) {
const handler = this.resolve_handler(item);
if (!handler) {
throw new Item_Unresolvable({ resolver: this, item });
}
return handler({ resolver: this, item });
}
}
class Chained_Resolver extends Abstract_Resolver {
constructor(chain_links) {
super();
Object.assign(this, { chain_links });
}
resolve_handler(item) {
const { chain_links } = this;
for (const link of chain_links) {
const handler = link.resolve_handler(item);
if (handler) {
return handler;
}
}
}
}
class Mapping_Resolver {
constructor(rules=new Map(), key_function=null) {
Object.assign(this, { rules, key_function });
}
resolve_handler(item) {
const { key_function, rules } = this;
const key = key_function ? key_function(item) : item;
return rules.get(key);
}
}
const vr = new Mapping_Resolver();