@coherentglobal/spark-execute-sdk 0.8.4 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/browser.js +39 -1
  2. package/package.json +2 -2
package/dist/browser.js CHANGED
@@ -1593,6 +1593,44 @@ var WasmRunner = /*#__PURE__*/function () {
1593
1593
  return _execute.apply(this, arguments);
1594
1594
  }
1595
1595
  return execute;
1596
+ }()
1597
+ /**
1598
+ * Dispose all resources: terminate all running workers.
1599
+ *
1600
+ * @async
1601
+ * @returns {Promise<void>}
1602
+ */
1603
+ )
1604
+ }, {
1605
+ key: "dispose",
1606
+ value: (function () {
1607
+ var _dispose = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
1608
+ var _this2 = this;
1609
+ var modelIds;
1610
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
1611
+ while (1) switch (_context15.prev = _context15.next) {
1612
+ case 0:
1613
+ this._logger.debug({}, "Disposing all resources");
1614
+ // Terminate all running models
1615
+ modelIds = this.models.map(function (model) {
1616
+ return model.id;
1617
+ });
1618
+ _context15.next = 4;
1619
+ return Promise.all(modelIds.map(function (id) {
1620
+ return _this2.remove(id);
1621
+ }));
1622
+ case 4:
1623
+ this._logger.debug({}, "All resources disposed");
1624
+ case 5:
1625
+ case "end":
1626
+ return _context15.stop();
1627
+ }
1628
+ }, _callee15, this);
1629
+ }));
1630
+ function dispose() {
1631
+ return _dispose.apply(this, arguments);
1632
+ }
1633
+ return dispose;
1596
1634
  }())
1597
1635
  }]);
1598
1636
  return WasmRunner;
@@ -1772,7 +1810,7 @@ function buildWorkerFN(runtime, modelId) {
1772
1810
  var license = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
1773
1811
  var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
1774
1812
  var logLevel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "info";
1775
- return "\n ".concat(runtime, "\n\n const LOG_LEVEL = '").concat(logLevel, "';\n const MODEL_ID = '").concat(modelId, "';\n const metadata = ").concat(JSON.stringify(metadata), ";\n\n const license = '").concat(license, "';\n\n class MyEventEmitter{constructor(){this._events={},this._eventsOnce={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}once(e,t){this._eventsOnce[e]||(this._eventsOnce[e]=[]),this._eventsOnce[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(\"Can't emit an event. Event doesn't exits.\"+e);this._events[e]=this._events[e].filter(e=>e!==t)}emit(e,t){var r=e=>{e(t)};this._events[e]&&this._events[e].forEach(r),this._eventsOnce[e]&&(this._eventsOnce[e].forEach(r),this._eventsOnce[e]=[])}}class Logger{constructor(e){var t=e?e.level:\"info\";this.setLogLevel(t)}_getLogFormat(e,t,r){return{versionid:MODEL_ID,level:e||this._logLevel,time:Date.now(),msg:r,...t}}setLogLevel(e){if(!e)throw new Error(\"Log level is required with value like silent|trace|debug|info|warn|error|fatal\");switch(e.toLowerCase()){case\"silent\":this._logLevel=99;break;case\"trace\":this._logLevel=10;break;case\"debug\":this._logLevel=20;break;case\"info\":default:this._logLevel=30;break;case\"warn\":this._logLevel=40;break;case\"error\":this._logLevel=50;break;case\"fatal\":this._logLevel=60}}trace(e,t){this._logLevel<=10&&(e&&!t&&console.trace(this._getLogFormat(10,{},e)),e&&t&&console.trace(this._getLogFormat(10,e,t)))}debug(e,t){this._logLevel<=20&&(e&&!t&&console.debug(this._getLogFormat(20,{},e)),e&&t&&console.debug(this._getLogFormat(20,e,t)))}info(e,t){this._logLevel<=30&&(e&&!t&&console.info(this._getLogFormat(30,{},e)),e&&t&&console.info(this._getLogFormat(30,e,t)))}warn(e,t){this._logLevel<=40&&(e&&!t&&console.warn(this._getLogFormat(40,{},e)),e&&t&&console.warn(this._getLogFormat(40,e,t)))}error(e,t){this._logLevel<=50&&(e&&!t&&console.error(this._getLogFormat(50,{},e)),e&&t&&console.error(this._getLogFormat(50,e,t)))}fatal(e,t){this._logLevel<=60&&(e&&!t&&console.error(this._getLogFormat(60,{},e)),e&&t&&console.error(this._getLogFormat(60,e,t)))}}var logger=new Logger;LOG_LEVEL&&logger.setLogLevel(LOG_LEVEL);var wasm,wb,workerEventEmitter=new MyEventEmitter,ctx={},CALL_TYPE={0:\"SparkService\",1:\"ExternalApi\"},XcallResBuilder={Json:function(e,t,r,a,s,o){return JSON.stringify({metadata:{calltype:e,name:t,status:r,error_code:a,response_time:s},data:o||{}})},JsonV2:function(e,t,r,a,s,o,n){return JSON.stringify({...o,xcall_meta:{http_status_code:r,http_response_time:s,error_details:n}})},XML:()=>{}};function getContext(){return{...ctx,upStreamId:MODEL_ID}}function moduleInitialize(){Module().then(e=>{wasm=e,wb=e._construct();var t=new TextDecoder(\"utf-8\"),r=0;e.dispatch=async(a,s,o)=>{var n=new Uint8Array(e.HEAPU8.subarray(s,s+o)),c=t.decode(n).slice(),i=JSON.parse(c),l=i.folder_name,_=i.service_name,u=i.service_uri,m=i.xcall_version;if(logger.trace({requestData:i,ctx:getContext(),EventType:\"SparkService.Dispatch\"},\"Handle dispatch event\"),a===r)return await new Promise((e,t)=>{try{postMessage({requestData:i,context:getContext(),type:\"stall\"});var r=\"xcall-loopback-result-\"+l+_+u;workerEventEmitter.once(r,t=>{logger.trace({eventName:r,results:t},\"Handle xcall-loopback-result event\");var a=\"\";switch(m){case 2:case 3:a=XcallResBuilder.JsonV2(CALL_TYPE[0],u||\"folders/\"+l+\"/services/\"+_,202,\"\",0,t);break;default:a=XcallResBuilder.Json(CALL_TYPE[0],u||\"folders/\"+l+\"/services/\"+_,202,\"\",0,t)}e(a)})}catch(e){t(e)}})},postMessage(\"Initialized\")})}async function runComputation(e){if(!e)return new Error(\"No Event was placed\");var t=e.data[0],r=\"string\"==typeof t?JSON.parse(t):t,a=e.data[1];if(void 0===wasm||void 0===wb)return new Error(\"WASM is not ready\");ctx.headers||(ctx.headers={}),r?.request_meta?._ctx?.authorization&&(ctx.headers.authorization=r?.request_meta?._ctx?.authorization,delete r?.request_meta?._ctx?.authorization),r?.request_meta?._ctx?.secretkey&&(ctx.headers.secretkey=r?.request_meta?._ctx.secretkey,delete r?.request_meta?._ctx?.secretkey),r?.request_meta?._ctx?.[\"x-synthetic-key\"]&&(ctx.headers[\"x-synthetic-key\"]=r?.request_meta?._ctx?.[\"x-synthetic-key\"],delete r?.request_meta?._ctx?.[\"x-synthetic-key\"]),r?.request_meta?._ctx?.tenant&&(ctx.tenant=r?.request_meta?._ctx?.tenant,delete r?.request_meta?._ctx?.tenant),r?.request_meta?._ctx?.servicemap&&(ctx.servicemap=r?.request_meta?._ctx?.servicemap,delete r?.request_meta?._ctx.servicemap),r?.request_meta?._ctx?.upstreamVersionId&&(ctx.upstreamVersionId=r?.request_meta._ctx.upstreamVersionId,delete r.request_meta?._ctx?.upstreamVersionId),r?.request_meta?._ctx?.xcallChainId&&(ctx.xcallChainId=r?.request_meta?._ctx?.xcallChainId,delete r?.request_meta?._ctx.xcallChainId),r?.request_meta?._ctx?.correlationId&&(ctx.correlationId=r?.request_meta?._ctx.correlationId,delete r?.request_meta?._ctx.correlationId);var s=r?.request_meta?.service_category&&r?.request_meta?.service_category.split(\",\").some(e=>\"metadata\"===e.toLowerCase())&&void 0!==metadata,o=(new TextEncoder).encode(t),n=wasm._malloc(o.length),c=o.BYTES_PER_ELEMENT;wasm.HEAP8.set(o,n/c);var i=wasm._malloc(8);logger.debug({ctx:ctx},\"Context\");var l=await wasm.ccall(\"node_calc_v3\",\"number\",[\"number\",\"number\",\"number\",\"number\"],[wb,n,o.length,i],{async:!0}),_=wasm.getValue(i,\"i32\"),u=new Uint8Array(wasm.HEAPU8.subarray(l,l+_)),m=new TextDecoder(\"utf-8\").decode(u).slice();if(wasm._free(n),wasm._free(i),wasm._free(l),s){(m=JSON.parse(m)).response_data||(m.response_data={});var g=metadata?.ImageOutputs??[],d=g?g.reduce((e,t)=>t?.ImageName?(e[t.ImageName]=t?.Base64Content||\"\",e):e,{}):{};return m.response_data.outputs={...m.response_data?.outputs,...metadata?.Outputs,...d},[JSON.stringify(m),a]}return logger.debug({ctx:ctx},\"Context.Reset\"),ctx={},logger.debug({ctx:ctx},\"Context.Reset.Complete\"),[m,a]}moduleInitialize(),onmessage=function(e){var t=e,r=t.data[0],a=t.data[1];if(\"dispatch\"===t.data[2]){logger.trace(r,\"dispatching\");var s=r.folder_name,o=r.service_name,n=r.service_uri,{response:c}=r,i=\"xcall-loopback-result-\"+s+o+n;workerEventEmitter.emit(i,c)}else runComputation(t).then(e=>{postMessage(e)}).catch(e=>{postMessage([JSON.stringify({executeError:e.message}),a])})};\n\n");
1813
+ return "\n ".concat(runtime, "\n\n const LOG_LEVEL = '").concat(logLevel, "';\n const MODEL_ID = '").concat(modelId, "';\n const metadata = ").concat(JSON.stringify(metadata), ";\n\n const license = '").concat(license, "';\n\n class MyEventEmitter{constructor(){this._events={},this._eventsOnce={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}once(e,t){this._eventsOnce[e]||(this._eventsOnce[e]=[]),this._eventsOnce[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(\"Can't emit an event. Event doesn't exits.\"+e);this._events[e]=this._events[e].filter(e=>e!==t)}emit(e,t){var r=e=>{e(t)};this._events[e]&&this._events[e].forEach(r),this._eventsOnce[e]&&(this._eventsOnce[e].forEach(r),this._eventsOnce[e]=[])}}class Logger{constructor(e){var t=e?e.level:\"info\";this.setLogLevel(t)}_getLogFormat(e,t,r){return{versionid:MODEL_ID,level:e||this._logLevel,time:Date.now(),msg:r,...t}}setLogLevel(e){if(!e)throw new Error(\"Log level is required with value like silent|trace|debug|info|warn|error|fatal\");switch(e.toLowerCase()){case\"silent\":this._logLevel=99;break;case\"trace\":this._logLevel=10;break;case\"debug\":this._logLevel=20;break;case\"info\":default:this._logLevel=30;break;case\"warn\":this._logLevel=40;break;case\"error\":this._logLevel=50;break;case\"fatal\":this._logLevel=60}}trace(e,t){this._logLevel<=10&&(e&&!t&&console.trace(this._getLogFormat(10,{},e)),e&&t&&console.trace(this._getLogFormat(10,e,t)))}debug(e,t){this._logLevel<=20&&(e&&!t&&console.debug(this._getLogFormat(20,{},e)),e&&t&&console.debug(this._getLogFormat(20,e,t)))}info(e,t){this._logLevel<=30&&(e&&!t&&console.info(this._getLogFormat(30,{},e)),e&&t&&console.info(this._getLogFormat(30,e,t)))}warn(e,t){this._logLevel<=40&&(e&&!t&&console.warn(this._getLogFormat(40,{},e)),e&&t&&console.warn(this._getLogFormat(40,e,t)))}error(e,t){this._logLevel<=50&&(e&&!t&&console.error(this._getLogFormat(50,{},e)),e&&t&&console.error(this._getLogFormat(50,e,t)))}fatal(e,t){this._logLevel<=60&&(e&&!t&&console.error(this._getLogFormat(60,{},e)),e&&t&&console.error(this._getLogFormat(60,e,t)))}}var logger=new Logger;LOG_LEVEL&&logger.setLogLevel(LOG_LEVEL);var wasm,wb,workerEventEmitter=new MyEventEmitter,ctx={},CALL_TYPE={0:\"SparkService\",1:\"ExternalApi\"},XcallResBuilder={Json:function(e,t,r,a,s,o){return JSON.stringify({metadata:{calltype:e,name:t,status:r,error_code:a,response_time:s},data:o||{}})},JsonV2:function(e,t,r,a,s,o,n){return JSON.stringify({...o,xcall_meta:{http_status_code:r,http_response_time:s,error_details:n}})},XML:()=>{}};function getContext(){return{...ctx,upStreamId:MODEL_ID}}function moduleInitialize(){Module().then(e=>{wasm=e,wb=e._construct();var t=new TextDecoder(\"utf-8\"),r=0;e.dispatch=async(a,s,o)=>{var n=new Uint8Array(e.HEAPU8.subarray(s,s+o)),c=t.decode(n).slice(),i=JSON.parse(c),l=i.folder_name,_=i.service_name,u=i.service_uri,m=i.xcall_version;if(logger.trace({requestData:i,ctx:getContext(),EventType:\"SparkService.Dispatch\"},\"Handle dispatch event\"),a===r)return await new Promise((e,t)=>{try{postMessage({requestData:i,context:getContext(),type:\"stall\"});var r=\"xcall-loopback-result-\"+l+_+u;workerEventEmitter.once(r,t=>{logger.trace({eventName:r,results:t},\"Handle xcall-loopback-result event\");var a=\"\";switch(m){case 2:case 3:a=XcallResBuilder.JsonV2(CALL_TYPE[0],u||\"folders/\"+l+\"/services/\"+_,202,\"\",0,t);break;default:a=XcallResBuilder.Json(CALL_TYPE[0],u||\"folders/\"+l+\"/services/\"+_,202,\"\",0,t)}e(a)})}catch(e){t(e)}})},postMessage(\"Initialized\")})}async function runComputation(e){if(!e)return new Error(\"No Event was placed\");var t=e.data[0],r=\"string\"==typeof t?JSON.parse(t):t,a=e.data[1];if(void 0===wasm||void 0===wb)return new Error(\"WASM is not ready\");ctx.headers||(ctx.headers={}),r?.request_meta?._ctx?.authorization&&(ctx.headers.authorization=r?.request_meta?._ctx?.authorization,delete r?.request_meta?._ctx?.authorization),r?.request_meta?._ctx?.secretkey&&(ctx.headers.secretkey=r?.request_meta?._ctx.secretkey,delete r?.request_meta?._ctx?.secretkey),r?.request_meta?._ctx?.[\"x-synthetic-key\"]&&(ctx.headers[\"x-synthetic-key\"]=r?.request_meta?._ctx?.[\"x-synthetic-key\"],delete r?.request_meta?._ctx?.[\"x-synthetic-key\"]),r?.request_meta?._ctx?.tenant&&(ctx.tenant=r?.request_meta?._ctx?.tenant,delete r?.request_meta?._ctx?.tenant),r?.request_meta?._ctx?.servicemap&&(ctx.servicemap=r?.request_meta?._ctx?.servicemap,delete r?.request_meta?._ctx.servicemap),r?.request_meta?._ctx?.upstreamVersionId&&(ctx.upstreamVersionId=r?.request_meta._ctx.upstreamVersionId,delete r.request_meta?._ctx?.upstreamVersionId),r?.request_meta?._ctx?.xcallChainId&&(ctx.xcallChainId=r?.request_meta?._ctx?.xcallChainId,delete r?.request_meta?._ctx.xcallChainId),r?.request_meta?._ctx?.correlationId&&(ctx.correlationId=r?.request_meta?._ctx.correlationId,delete r?.request_meta?._ctx.correlationId);var s=r?.request_meta?.service_category&&r?.request_meta?.service_category.split(\",\").some(e=>\"metadata\"===e.toLowerCase())&&void 0!==metadata,o=(new TextEncoder).encode(t),n=wasm._malloc(o.length),c=o.BYTES_PER_ELEMENT;wasm.HEAP8.set(o,n/c);var i=wasm._malloc(8);logger.debug({ctx:ctx},\"Context\");var l=await wasm.ccall(\"node_calc_v3\",\"number\",[\"number\",\"number\",\"number\",\"number\"],[wb,n,o.length,i],{async:!0});l>>>=0;var _=wasm.getValue(i,\"i32\"),u=new Uint8Array(wasm.HEAPU8.subarray(l,l+_)),m=new TextDecoder(\"utf-8\").decode(u).slice();if(wasm._free(n),wasm._free(i),wasm._free(l),s){(m=JSON.parse(m)).response_data||(m.response_data={});var g=metadata?.ImageOutputs??[],d=g?g.reduce((e,t)=>t?.ImageName?(e[t.ImageName]=t?.Base64Content||\"\",e):e,{}):{};return m.response_data.outputs={...m.response_data?.outputs,...metadata?.Outputs,...d},[JSON.stringify(m),a]}return logger.debug({ctx:ctx},\"Context.Reset\"),ctx={},logger.debug({ctx:ctx},\"Context.Reset.Complete\"),[m,a]}moduleInitialize(),onmessage=function(e){var t=e,r=t.data[0],a=t.data[1];if(\"dispatch\"===t.data[2]){logger.trace(r,\"dispatching\");var s=r.folder_name,o=r.service_name,n=r.service_uri,{response:c}=r,i=\"xcall-loopback-result-\"+s+o+n;workerEventEmitter.emit(i,c)}else runComputation(t).then(e=>{postMessage(e)}).catch(e=>{postMessage([JSON.stringify({executeError:e.message}),a])})};\n\n");
1776
1814
  }
1777
1815
 
1778
1816
  },{}],38:[function(require,module,exports){
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coherentglobal/spark-execute-sdk",
3
- "version": "0.8.4",
3
+ "version": "0.8.6",
4
4
  "description": "Coherent Spark Execute SDK for Node.js and Browser",
5
5
  "main": "src/node.js",
6
6
  "browser": "dist/browser.js",
@@ -30,7 +30,7 @@
30
30
  "author": "",
31
31
  "license": "ISC",
32
32
  "dependencies": {
33
- "@coherentglobal/wasm-runner": "^0.2.4",
33
+ "@coherentglobal/wasm-runner": "^0.3.2",
34
34
  "@types/node": "^18.7.18",
35
35
  "axios": "^1.6.7",
36
36
  "fs": "^0.0.1-security",