async function runAutomation(req, res) {
  try {
    const mongoose = require('mongoose');
    const { auth, id, } = req.params;
    const automationScript = await periodic.datas.get('standard_cron').load({ 
      query:getIdQuery(req.params.id),
    });
    utilities = utilities || periodic.locals.container.get(CONTAINER_NAME);

    if (!automationScript) return res.send(getError({ error: 'Invalid Automation', }));
    const cronAuth = automationScript.runtime_options.req_body.cron_properties.auth;
    if (cronAuth !== authMap[ auth ]) return res.send(getError({ error: 'Invalid Automation Authentication', }));
    const runAutomation = utilities.crons.runScript.bind({
      stop: () => {
        periodic.logger.debug('Automation ran to completion'); 
      },
    });
    const data = await runAutomation({ req, script: automationScript.runtime_options.script, });
    return res.send(routeUtils.formatResponse({
      result: 'success',
      data,
    }));
  } catch (e) {
    periodic.logger.error(e);
    return res.send(getError({ error: 'Invalid Automation Process', status:500, }));
  }
}
function getDataCoreController() {
  try {
    const dataCoreControllers = new Map();
    for (let [dataName, datum, ] of periodic.datas) {
      if (dataName === 'dblog_logger') {
        const CoreController = new CoreControllerModule(periodic, {
          compatibility: false,
          skip_responder: true,
          skip_db: true,
          skip_protocol: true,
        });
        CoreController.initialize_responder({
          adapter: 'json',
        });
        CoreController.initialize_protocol({
          adapter: 'http',
          api: 'rest',
        });
        CoreController.db[dataName] = datum;
        dataCoreControllers.set(dataName, {
          controller: CoreController,
          router: CoreController.protocol.api.implement({
            model_name: dataName,
            // override,
            dirname: path.join(periodic.config.app_root, '/node_modules/periodicjs.ext.dblogger/views'),
          }).router,
        });
      }
    }
    return (dataCoreControllers);
  } catch (e) {
    periodic.logger.error(e);
  }
}
 computeQueue.push({ task, }, function computeQueuePush(err) {
   tasks--;
   if (err) periodic.logger.error(err);
   else {
     process.send({
       event: 'compute-log',
       payload: {
         message: 'Completed task computation',
         meta: {
           task,
           clientlog: true,
         },
         status:getQueueStatus(),
       },
     });
   }
 });
async function runScript({ script, req, }) {
  const cronJobThisContext = this;
  try {
    const sandbox = {
      asyncMethod: async () => { },
      datasets,
      helpers:functionprops,
      periodic,
      request,
      Promisie,
      $,
      randomUA,
      $p:periodic,
      puppeteer,
      rebulma,
      rjx,
      crons,
      req,
      importHelpers:helpers,
      logger:periodic.logger,
      console,
      scripts,
    };
    vm.createContext(sandbox);
    vm.runInContext(`asyncMethod = async function _asyncMethod(){
  ${script}
}`, sandbox);
    const scriptStatus = await sandbox.asyncMethod();
    cronJobThisContext.stop();
    return scriptStatus;
  } catch (e) {
    cronJobThisContext.stop();
    periodic.logger.error(e);
    throw e;
  }
}
async function authenticateAutomation(req, res, next) {
  try {
    const { auth, id, } = req.params;
    req.query.format = 'json';
    if (!auth || ['go', 'process', 'run', ].includes(auth)===false) {
      res.status(401);
      return res.send(getError({ error: 'Invalid Authentication', }));
    } else {
      switch (auth) {
      case 'go':
        return next();
      case 'process':
        req.url = `/automation/authenticate/client/${auth}/${id}`;
        return periodic.app._router.handle(req, res, next);
      case 'run':
        req.url = `/automation/authenticate/bearer/${auth}/${id}`;
        return periodic.app._router.handle(req, res, next);
      }
    }
  } catch (e) {
    periodic.logger.error(e);
    return res.send(getError({ error: 'Invalid Authentication Process', status:500, }));
  }
}
 stop: () => {
   periodic.logger.debug('Automation ran to completion'); 
 },
 periodic.status.on('configuration-complete', (status) => {
   const dbloggerExtSettings = periodic.settings.extensions[ 'periodicjs.ext.dblogger' ];
   periodic.logger.add(utilities.winston.coreDataWinstonLogger, dbloggerExtSettings);
   utilities.reactapphelper.setReactAppTable();
 });
 userAuth(mockUserAuthReq, mockUserAuthRes, () => {
   if (periodic.config.debug) {
     periodic.logger.silly(`Configured ${service_name}, OAuth2 Bearer Authentication for (${capitalize(oauth2client_settings.user_entity_type || 'user')})${oauth2client_settings.user_email}`);
   }
 });