move evaluate logic without transpiler to core

+ breaking change: evalScope is now imported from core
+ breaking change: deprecated extend is now removed
+ add repl.mjs
This commit is contained in:
Felix Roos 2022-11-06 12:12:43 +01:00
parent 0485632e22
commit 371af755df
14 changed files with 107 additions and 85 deletions

23
packages/core/repl.mjs Normal file
View file

@ -0,0 +1,23 @@
import { Cyclist } from './cyclist.mjs';
import { evaluate as _evaluate } from './evaluate.mjs';
export function repl({ interval, defaultOutput, onSchedulerError, onEvalError, onEval, getTime, transpiler }) {
const scheduler = new Cyclist({ interval, onTrigger: defaultOutput, onError: onSchedulerError, getTime });
const evaluate = async (code) => {
if (!code) {
throw new Error('no code to evaluate');
}
try {
const { pattern } = await _evaluate(code, transpiler);
scheduler.setPattern(pattern);
onEval({
pattern,
code,
});
} catch (err) {
onEvalError?.(err);
console.warn('eval error', err);
}
};
return { scheduler, evaluate };
}