Files
nodejs.esm-library/experiments/res1.mjs

63 lines
1.8 KiB
JavaScript

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
*/