@coherentglobal/spark-execute-sdk 0.4.15 → 0.4.16

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.
package/dist/browser.js CHANGED
@@ -1056,15 +1056,30 @@ var WasmRunner = /*#__PURE__*/function () {
1056
1056
  *
1057
1057
  * @param {RunnerConfig} wasmRunnerConfig
1058
1058
  */
1059
- function WasmRunner() {
1060
- var license = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1059
+ function WasmRunner(wasmRunnerConfig) {
1061
1060
  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCallback;
1061
+ var license = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
1062
1062
  (0, _classCallCheck2["default"])(this, WasmRunner);
1063
1063
  utils.isCompatible();
1064
1064
  this.license = license;
1065
1065
  this.callback = callback;
1066
1066
  this.models = [];
1067
1067
  this._logger = new logger_1["default"]();
1068
+ if (!utils.isEmpty(wasmRunnerConfig)) {
1069
+ if (Array.isArray(wasmRunnerConfig)) {
1070
+ this.models = wasmRunnerConfig.map(function (wsconfig) {
1071
+ return {
1072
+ id: wsconfig.id,
1073
+ url: wsconfig.url
1074
+ };
1075
+ });
1076
+ } else if ((0, _typeof2["default"])(wasmRunnerConfig) === "object") {
1077
+ this.models = [{
1078
+ id: wasmRunnerConfig.id,
1079
+ url: wasmRunnerConfig.url
1080
+ }];
1081
+ }
1082
+ }
1068
1083
  }
1069
1084
  (0, _createClass2["default"])(WasmRunner, [{
1070
1085
  key: "setLogLevel",
@@ -7399,13 +7414,13 @@ var Spark = /*#__PURE__*/function () {
7399
7414
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7400
7415
  (0, _classCallCheck2["default"])(this, Spark);
7401
7416
  /**
7402
- * @private
7403
- */
7417
+ * @private
7418
+ */
7404
7419
  this._registry = undefined;
7405
7420
 
7406
7421
  /**
7407
- * @private
7408
- */
7422
+ * @private
7423
+ */
7409
7424
  if (options !== null && options !== void 0 && options.log) {
7410
7425
  this.logger = options.log;
7411
7426
  }
@@ -7442,8 +7457,8 @@ var Spark = /*#__PURE__*/function () {
7442
7457
  this.priority = ["model", "onlineEndpoint"];
7443
7458
 
7444
7459
  /**
7445
- * @private
7446
- */
7460
+ * @private
7461
+ */
7447
7462
  this.model = this._models((_this$config6 = this.config) === null || _this$config6 === void 0 ? void 0 : _this$config6.nodeGenModels);
7448
7463
  }
7449
7464
  (0, _createClass2["default"])(Spark, [{
@@ -7462,7 +7477,7 @@ var Spark = /*#__PURE__*/function () {
7462
7477
  value: function _models(nodegen) {
7463
7478
  this.log({
7464
7479
  eventType: "spark._models",
7465
- msg: 'Parse models'
7480
+ msg: "Parse models"
7466
7481
  });
7467
7482
  var models = [];
7468
7483
  for (var i = 0; i < nodegen.length; i++) {
@@ -7492,7 +7507,7 @@ var Spark = /*#__PURE__*/function () {
7492
7507
  value: function validateConfig(config) {
7493
7508
  var start = Date.now();
7494
7509
  this.log({
7495
- eventType: 'spark.validateconfig.start'
7510
+ eventType: "spark.validateconfig.start"
7496
7511
  });
7497
7512
  var _validate = validate(config),
7498
7513
  value = _validate.value,
@@ -7500,7 +7515,7 @@ var Spark = /*#__PURE__*/function () {
7500
7515
  if (!error) {
7501
7516
  var end = Date.now();
7502
7517
  this.log({
7503
- eventType: 'spark.validateconfig.startend',
7518
+ eventType: "spark.validateconfig.startend",
7504
7519
  duration: end - start
7505
7520
  });
7506
7521
  return value;
@@ -7508,7 +7523,7 @@ var Spark = /*#__PURE__*/function () {
7508
7523
  var message = JSON.stringify(error.details);
7509
7524
  var _end = Date.now();
7510
7525
  this.log({
7511
- eventType: 'spark.validateconfig.startend.error',
7526
+ eventType: "spark.validateconfig.startend.error",
7512
7527
  duration: _end - start
7513
7528
  });
7514
7529
  throw new Error("ValidationError: ".concat(message));
@@ -7560,7 +7575,7 @@ var Spark = /*#__PURE__*/function () {
7560
7575
  _context.next = 2;
7561
7576
  break;
7562
7577
  }
7563
- throw new WasmRunnerErrors.BadRequestError('Spark initialize is required. Please call initialize method');
7578
+ throw new WasmRunnerErrors.BadRequestError("Spark initialize is required. Please call initialize method");
7564
7579
  case 2:
7565
7580
  versionID = version_id || (input === null || input === void 0 ? void 0 : (_input$request_meta = input.request_meta) === null || _input$request_meta === void 0 ? void 0 : _input$request_meta.version_id) || (input === null || input === void 0 ? void 0 : (_input$request_meta2 = input.request_meta) === null || _input$request_meta2 === void 0 ? void 0 : _input$request_meta2.version_uuid);
7566
7581
  lookup = {
@@ -7598,7 +7613,7 @@ var Spark = /*#__PURE__*/function () {
7598
7613
  value: function () {
7599
7614
  var _offlineModel = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(input, versionID) {
7600
7615
  var _this = this;
7601
- var model, modelVersionId, callback, _model2$metaData$Engi, _model2$metaData, _model2$metaData$Engi2, _model2$metaData$Engi3, _model2$metaData2, _model2$metaData2$Eng, _model2, result;
7616
+ var model, modelVersionId, callback, _model2$metaData$Engi, _model2$metaData, _model2$metaData$Engi2, _model2$metaData$Engi3, _model2$metaData2, _model2$metaData2$Eng, _model2, retry, MAX_RETRY, error, duration, result, _model$metaData$Engin6, _model$metaData5, _model$metaData5$Engi, _model$metaData$Engin7, _model$metaData6, _model$metaData6$Engi, start;
7602
7617
  return _regenerator["default"].wrap(function _callee3$(_context3) {
7603
7618
  while (1) {
7604
7619
  switch (_context3.prev = _context3.next) {
@@ -7670,7 +7685,7 @@ var Spark = /*#__PURE__*/function () {
7670
7685
  return _ref2.apply(this, arguments);
7671
7686
  };
7672
7687
  }();
7673
- this._registry = new WasmRunner("", callback);
7688
+ this._registry = new WasmRunner(undefined, callback, "");
7674
7689
  }
7675
7690
  if (this._registry.isExist(modelVersionId)) {
7676
7691
  _context3.next = 10;
@@ -7687,21 +7702,61 @@ var Spark = /*#__PURE__*/function () {
7687
7702
  }
7688
7703
  });
7689
7704
  case 10:
7690
- _context3.next = 12;
7705
+ retry = 0;
7706
+ MAX_RETRY = 3;
7707
+ error = true;
7708
+ duration = 0;
7709
+ case 14:
7710
+ if (!(error && retry <= MAX_RETRY)) {
7711
+ _context3.next = 32;
7712
+ break;
7713
+ }
7714
+ _context3.next = 17;
7691
7715
  return this._registry.execute(input, modelVersionId, function () {});
7692
- case 12:
7716
+ case 17:
7693
7717
  result = _context3.sent;
7718
+ if (!result.executeError) {
7719
+ _context3.next = 27;
7720
+ break;
7721
+ }
7722
+ retry++;
7723
+ start = Date.now(); // this.log({ eventType: "spark.execute", msg: 'Retry Execute' });
7724
+ this._registry.remove(modelVersionId);
7725
+ _context3.next = 24;
7726
+ return this._registry.append({
7727
+ id: modelVersionId,
7728
+ url: model.binary,
7729
+ meta: {
7730
+ folder_name: (_model$metaData$Engin6 = model === null || model === void 0 ? void 0 : (_model$metaData5 = model.metaData) === null || _model$metaData5 === void 0 ? void 0 : (_model$metaData5$Engi = _model$metaData5.EngineInformation) === null || _model$metaData5$Engi === void 0 ? void 0 : _model$metaData5$Engi.ProductName) !== null && _model$metaData$Engin6 !== void 0 ? _model$metaData$Engin6 : "",
7731
+ service_name: (_model$metaData$Engin7 = model === null || model === void 0 ? void 0 : (_model$metaData6 = model.metaData) === null || _model$metaData6 === void 0 ? void 0 : (_model$metaData6$Engi = _model$metaData6.EngineInformation) === null || _model$metaData6$Engi === void 0 ? void 0 : _model$metaData6$Engi.ServiceName) !== null && _model$metaData$Engin7 !== void 0 ? _model$metaData$Engin7 : ""
7732
+ }
7733
+ });
7734
+ case 24:
7735
+ duration = duration + (Date.now() - start);
7736
+ _context3.next = 30;
7737
+ break;
7738
+ case 27:
7739
+ error = false;
7740
+ if (retry > 0 && result.response_meta && result.response_meta.process_time !== undefined) {
7741
+ result.response_meta.process_time = result.response_meta.process_time + duration;
7742
+ }
7694
7743
  return _context3.abrupt("return", result);
7695
- case 16:
7696
- _context3.prev = 16;
7744
+ case 30:
7745
+ _context3.next = 14;
7746
+ break;
7747
+ case 32:
7748
+ _context3.next = 37;
7749
+ break;
7750
+ case 34:
7751
+ _context3.prev = 34;
7697
7752
  _context3.t0 = _context3["catch"](4);
7698
7753
  return _context3.abrupt("return", _context3.t0);
7699
- case 19:
7754
+ case 37:
7700
7755
  case "end":
7701
7756
  return _context3.stop();
7702
7757
  }
7703
7758
  }
7704
- }, _callee3, this, [[4, 16]]);
7759
+ }, _callee3, this, [[4, 34]]);
7705
7760
  }));
7706
7761
  function offlineModel(_x3, _x4) {
7707
7762
  return _offlineModel.apply(this, arguments);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coherentglobal/spark-execute-sdk",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "",
5
5
  "main": "src/node.js",
6
6
  "browser": "dist/browser.js",
@@ -23,7 +23,7 @@
23
23
  "author": "",
24
24
  "license": "ISC",
25
25
  "dependencies": {
26
- "@coherentglobal/wasm-runner": "^0.0.80",
26
+ "@coherentglobal/wasm-runner": "^0.0.82",
27
27
  "@types/node": "^18.7.18",
28
28
  "axios": "^0.27.2",
29
29
  "fs": "^0.0.1-security",
package/src/browser.js CHANGED
@@ -5,23 +5,21 @@ const validate = require("./validate.js");
5
5
  const processModels = require("./models.js");
6
6
  const findModel = require("./findModels.js");
7
7
 
8
-
9
-
10
8
  class Spark {
11
9
  /**
12
10
  * @param {object} config
13
11
  */
14
12
  constructor(config, options = {}) {
15
13
  /**
16
- * @private
17
- */
14
+ * @private
15
+ */
18
16
  this._registry = undefined;
19
17
 
20
18
  /**
21
- * @private
22
- */
19
+ * @private
20
+ */
23
21
  if (options?.log) {
24
- this.logger = options.log
22
+ this.logger = options.log;
25
23
  }
26
24
 
27
25
  /**
@@ -59,13 +57,13 @@ class Spark {
59
57
  this.priority = ["model", "onlineEndpoint"];
60
58
 
61
59
  /**
62
- * @private
63
- */
60
+ * @private
61
+ */
64
62
  this.model = this._models(this.config?.nodeGenModels);
65
63
  }
66
64
 
67
65
  log(msg) {
68
- this.logger && this.logger(msg)
66
+ this.logger && this.logger(msg);
69
67
  }
70
68
 
71
69
  /**
@@ -74,16 +72,23 @@ class Spark {
74
72
  * @returns {object}
75
73
  */
76
74
  _models(nodegen) {
77
- this.log({ eventType: "spark._models", msg: 'Parse models' })
75
+ this.log({ eventType: "spark._models", msg: "Parse models" });
78
76
  const models = [];
79
77
 
80
78
  for (let i = 0; i < nodegen.length; i++) {
81
79
  const startDate = Date.now();
82
- this.log({ eventType: "spark._models.processModels.start", msg: `Start process model ${i}` });
80
+ this.log({
81
+ eventType: "spark._models.processModels.start",
82
+ msg: `Start process model ${i}`,
83
+ });
83
84
  const model = processModels(nodegen[i], i, this.log.bind(this));
84
85
  const endDate = Date.now();
85
- this.log({ eventType: "spark._models.processModels.end", msg: `End process model ${i}`, duration: endDate - startDate });
86
- models.push(model)
86
+ this.log({
87
+ eventType: "spark._models.processModels.end",
88
+ msg: `End process model ${i}`,
89
+ duration: endDate - startDate,
90
+ });
91
+ models.push(model);
87
92
  }
88
93
 
89
94
  return models;
@@ -95,16 +100,22 @@ class Spark {
95
100
  */
96
101
  validateConfig(config) {
97
102
  const start = Date.now();
98
- this.log({ eventType: 'spark.validateconfig.start' })
103
+ this.log({ eventType: "spark.validateconfig.start" });
99
104
  const { value, error } = validate(config);
100
105
  if (!error) {
101
106
  const end = Date.now();
102
- this.log({ eventType: 'spark.validateconfig.startend', duration: end - start })
107
+ this.log({
108
+ eventType: "spark.validateconfig.startend",
109
+ duration: end - start,
110
+ });
103
111
  return value;
104
112
  } else {
105
113
  const message = JSON.stringify(error.details);
106
114
  const end = Date.now();
107
- this.log({ eventType: 'spark.validateconfig.startend.error', duration: end - start })
115
+ this.log({
116
+ eventType: "spark.validateconfig.startend.error",
117
+ duration: end - start,
118
+ });
108
119
  throw new Error(`ValidationError: ${message}`);
109
120
  }
110
121
  }
@@ -140,7 +151,9 @@ class Spark {
140
151
  */
141
152
  async execute(input, version_id) {
142
153
  if (this.model == undefined) {
143
- throw new WasmRunnerErrors.BadRequestError('Spark initialize is required. Please call initialize method')
154
+ throw new WasmRunnerErrors.BadRequestError(
155
+ "Spark initialize is required. Please call initialize method"
156
+ );
144
157
  }
145
158
 
146
159
  const versionID =
@@ -211,7 +224,7 @@ class Spark {
211
224
  }
212
225
  return hasVersionId;
213
226
  };
214
- this._registry = new WasmRunner("", callback);
227
+ this._registry = new WasmRunner(undefined, callback, "");
215
228
  }
216
229
 
217
230
  if (!this._registry.isExist(modelVersionId)) {
@@ -226,8 +239,35 @@ class Spark {
226
239
  },
227
240
  });
228
241
  }
229
- const result = await this._registry.execute(input, modelVersionId, () => { });
230
- return result;
242
+ let retry = 0;
243
+ const MAX_RETRY = 3;
244
+ let error = true;
245
+ let duration = 0
246
+ while (error && retry <= MAX_RETRY) {
247
+ const result = await this._registry.execute(input, modelVersionId, () => { });
248
+
249
+ if (result.executeError) {
250
+ retry++;
251
+ const start = Date.now()
252
+ // this.log({ eventType: "spark.execute", msg: 'Retry Execute' });
253
+ this._registry.remove(modelVersionId);
254
+ await this._registry.append({
255
+ id: modelVersionId,
256
+ url: model.binary,
257
+ meta: {
258
+ folder_name: model?.metaData?.EngineInformation?.ProductName ?? "",
259
+ service_name: model?.metaData?.EngineInformation?.ServiceName ?? "",
260
+ },
261
+ });
262
+ duration = duration + (Date.now() - start);
263
+ } else {
264
+ error = false;
265
+ if (retry > 0 && result.response_meta && result.response_meta.process_time !== undefined) {
266
+ result.response_meta.process_time = result.response_meta.process_time + duration;
267
+ }
268
+ return result;
269
+ }
270
+ }
231
271
  } catch (err) {
232
272
  return err;
233
273
  }
@@ -5,8 +5,8 @@ declare class Spark {
5
5
  */
6
6
  constructor(config: object, options?: {});
7
7
  /**
8
- * @private
9
- */
8
+ * @private
9
+ */
10
10
  private _registry;
11
11
  logger: any;
12
12
  /**
@@ -38,8 +38,8 @@ declare class Spark {
38
38
  */
39
39
  private priority;
40
40
  /**
41
- * @private
42
- */
41
+ * @private
42
+ */
43
43
  private model;
44
44
  log(msg: any): void;
45
45
  /**
@@ -69,7 +69,7 @@ declare class Spark {
69
69
  * @returns {object}
70
70
  */
71
71
  execute(input: object, version_id?: string | undefined): object;
72
- offlineModel(input: any, versionID: any): Promise<unknown>;
72
+ offlineModel(input: any, versionID: any): Promise<any>;
73
73
  onlineModelEndpoint(input: any, versionID: any): Promise<any>;
74
74
  }
75
75
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.js"],"names":[],"mappings":";AASA;IACE;;OAEG;IACH,oBAFW,MAAM,gBAqDhB;IAlDC;;MAEE;IACF,kBAA0B;IAMxB,YAAyB;IAG3B;;OAEG;IACH,eAAyC;IAEzC;;OAEG;IACH,eAAsD;IACtD;;OAEG;IACH,iBAA0D;IAC1D;;OAEG;IACH,cAGI;IACJ;;OAEG;IACH,YAAgD;IAChD;;OAEG;IACH,qBAA2C;IAE3C;;OAEG;IACH,iBAA2C;IAE3C;;MAEE;IACF,cAAqD;IAGvD,oBAEC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAgBlB;IACD;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAgBlB;IACD;;;;OAIG;IACH,cAHW,MAAM,GACJ,OAAO,CAOnB;IAED,wDASC;IAED;;;;;;OAMG;IACH,eAJW,MAAM,oCAEJ,MAAM,CAuBlB;IAED,2DAsEC;IAED,8DA6CC;CACF"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.js"],"names":[],"mappings":";AAOA;IACE;;OAEG;IACH,oBAFW,MAAM,gBAqDhB;IAlDC;;OAEG;IACH,kBAA0B;IAMxB,YAAyB;IAG3B;;OAEG;IACH,eAAyC;IAEzC;;OAEG;IACH,eAAsD;IACtD;;OAEG;IACH,iBAA0D;IAC1D;;OAEG;IACH,cAGI;IACJ;;OAEG;IACH,YAAgD;IAChD;;OAEG;IACH,qBAA2C;IAE3C;;OAEG;IACH,iBAA2C;IAE3C;;OAEG;IACH,cAAqD;IAGvD,oBAEC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAuBlB;IACD;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAsBlB;IACD;;;;OAIG;IACH,cAHW,MAAM,GACJ,OAAO,CAOnB;IAED,wDASC;IAED;;;;;;OAMG;IACH,eAJW,MAAM,oCAEJ,MAAM,CAyBlB;IAED,uDAiGC;IAED,8DA6CC;CACF"}