63 lines
1.8 KiB
JavaScript
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
|
|
|
|
|
|
|
|
|
|
*/ |