#ifndef JSENGINE_H
#define JSENGINE_H
#include <QJSValue>
#include <QThreadPool>
#include "DoricExport.h"
#include "../DoricRegistry.h"
#include "DoricInterfaceJSE.h"
class DORIC_EXPORT DoricJSEngine : public QObject {
Q_OBJECT
private:
DoricInterfaceJSE *mJSE;
DoricRegistry *mRegistry = DoricRegistry::getInstance();
void loadBuiltinJS(QString assetName);
QString packageContextScript(QString contextId, QString content);
QString packageModuleScript(QString moduleName, QString content);
public:
QThreadPool mJSThreadPool;
explicit DoricJSEngine(QObject *parent = nullptr);
~DoricJSEngine();
QString prepareContext(QString contextId, QString script, QString source);
QString destroyContext(QString contextId);
QString invokeDoricMethod(QString method, QVariantList arguments);
DoricRegistry *getRegistry();
};
#endif // JSENGINE_H