import { Mapping_Resolver, Chained_Resolver } from '@efforting.tech/rule-processing/resolvers'; import { inspect } from 'node:util'; const vr = new Mapping_Resolver(); const tr = new Mapping_Resolver(new Map(), item => typeof item); const cr = new Chained_Resolver([vr, tr]); vr.rules.set('HELLO', {handler: () => 'WORLD'}); tr.rules.set('string', {extra_stuff: 'Yo!', handler: (c) => `World with context: ${inspect(c)}`}); console.log(cr.resolve('HELLO')); console.log(cr.resolve('hello')); console.log(cr.resolve(123)); /* OUTPUT WORLD World with context: { resolver: Chained_Resolver { chain_links: [ [Mapping_Resolver], [Mapping_Resolver] ] }, item: 'hello', extra_stuff: 'Yo!', handler: [Function: handler] } file:///srv/Projekt/efforting.tech/nodejs.esm-library/build/packages/rule-processing/resolv throw new Item_Unresolvable({ resolver: this, item }); ^ Item_Unresolvable [Error]: Cannot resolve item 123 of type "number" using resolver Chained_ at Chained_Resolver.resolve (file:///srv/Projekt/efforting.tech/nodejs.esm-library/buil at file:///srv/Projekt/efforting.tech/nodejs.esm-library/experiments/res1.mjs:17:16 at ModuleJob.run (node:internal/modules/esm/module_job:430:25) at async node:internal/modules/esm/loader:639:26 at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) { data: { resolver: Chained_Resolver { chain_links: [ Mapping_Resolver { rules: Map(1) { 'HELLO' => [Object] }, key_function: null }, Mapping_Resolver { rules: Map(1) { 'string' => [Object] }, key_function: [Function (anonymous)] } ] }, item: 123 } } Node.js v25.8.2 */