Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const process=require("process"),{Action:Action,BrainLogLevel:BrainLogLevel}=require("@supertenant/superconsts"),executeAction={Action:Action.Execute,Definition:{}};class SuperBrain{constructor(){this._initialized=!1,this._lib=null,this._config=null,this._serverless=-1!==["y","yes","true","t","1"].indexOf((process.env.SUPERTENANT_SUPERBRAIN_SERVERLESS??"").toLowerCase()),this._integration_circuit_breakers=(process.env.SUPERTENANT_SUPERMETER_INTEGRATION_CIRCUIT_BREAKERS??"").split(",").map((i=>i.trim()))}init(i,t){if(this._initialized)return null!=this._lib;if(this._initialized=!0,"string"!=typeof(i=i??""))throw new Error("configPath must be a string (or null/undefined)");this._lib=require("./binding.cjs");let e=t;if(null==e||""==e)try{e=process.env.npm_package_version||"unknown"}catch(i){e="unknown"}Object.keys(process.env).forEach((i=>{if("string"==typeof i&&(i.startsWith("SUPERTENANT_")||i.startsWith("SUPERBRAIN_")||i.startsWith("SUPERMETER_"))){const t=process.env[i];"string"==typeof t&&this._lib.setenv(i,t)}}));try{if(!this._lib.init(e,i,"nodejs",process.version))return this._lib=null,!1}catch(i){return this._lib=null,!1}return this._updateConfig(),!0}lib(){return this._lib}shutdown(i){if("number"!=typeof(i=i??1e4)||i<0)throw new Error("timeout must be a non-negative number (or null/undefined)");return!this._initialized||this._lib.shutdown(i)}isServerless(){return this._initialized&&null!==this._lib?this._lib.is_serverless():this._serverless}isCircuitBreakerEnabled(){return!(!this._initialized||null===this._lib)&&this._lib.is_circuit_breaker_enabled()}isIntegrationCircuitBreakerEnabled(i){if("string"!=typeof i||""===i)throw new Error("empty/non-string integrationModule");return-1!==this._integration_circuit_breakers.indexOf(i)||!(!this._initialized||null===this._lib)&&this._lib.is_integration_circuit_breaker_enabled(i)}enableCircuitBreaker(){return!(!this._initialized||null===this._lib)&&this._lib.enable_circuit_breaker()}log(i,t){if(this._initialized&&null!==this._lib){if("number"!=typeof i||"string"!=typeof t)throw new Error("level must be a number and msg must be a string");this._lib.log(i,t)}}openSpan(i,t,e){return this._initialized&&null!==this._lib?this._lib.open_span(i,t,e):null}pollSpanAction(i){if(!this._initialized||null===this._lib)return executeAction;const t=this._lib.poll_span_action(i);return this.getAction(t)}closeSpan(i,t){return!(!this._initialized||null===this._lib)&&this._lib.close_span(i,t)}_debugHasSpan(i){return!(!this._initialized||null===this._lib)&&this._lib._debug_has_span(i)}createTask(i,t,e){return!(!this._initialized||null===this._lib)&&this._lib.create_task(i,t,e)}createTaskAutoInc(i,t){return this._initialized&&null!==this._lib?this._lib.create_task_auto_inc(i,t):0}setLabelOnSharedData(i,t,e){return!(!this._initialized||null===this._lib)&&this._lib.set_label_on_shared_data(i,t,e)}finishTask(i){return!(!this._initialized||null===this._lib)&&this._lib.finish_task(i)}printVersion(){if(this._initialized&&null!==this._lib)return this._lib.print_version();console.log("@supertenant/superbrain printVersion: not initialized")}getAction(i){return i!==BigInt(Action.Execute)&&i?i===BigInt(Action.Execute)?executeAction:null!=this._config&&Object.prototype.hasOwnProperty.call(this._config,i)?this._config[String(i)]:(this._updateConfig(),null!=this._config&&Object.prototype.hasOwnProperty.call(this._config,i)?this._config[String(i)]:(this.log(BrainLogLevel.Error,`actionId ${i} not found in ${this._config}, defaulting to Execute`),executeAction)):executeAction}_updateConfig(){if(!this._initialized||null===this._lib)return!1;const i=this._lib.get_config();try{return this._config=JSON.parse(i),!0}catch(i){return this.log(BrainLogLevel.Error,`failed to parse config: ${i}`),!1}}}exports.superbrain=new SuperBrain;