@coherentglobal/spark-execute-sdk 0.3.2 → 0.3.4
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/README.md +8 -0
- package/dist/browser.js +352 -302
- package/package.json +2 -2
- package/src/browser.js +16 -46
- package/src/node.js +17 -80
- package/test/spark-sdk.test.js +5 -13
- package/types/browser.d.ts +0 -6
- package/types/browser.d.ts.map +1 -1
- package/types/node.d.ts +0 -12
- package/types/node.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coherentglobal/spark-execute-sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"mains": "index.js",
|
|
6
6
|
"browser": "dist/browser.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"author": "",
|
|
21
21
|
"license": "ISC",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@coherentglobal/wasm-runner": "^0.0.
|
|
23
|
+
"@coherentglobal/wasm-runner": "^0.0.46",
|
|
24
24
|
"@types/node": "^18.7.18",
|
|
25
25
|
"axios": "^0.27.2",
|
|
26
26
|
"chai": "^4.3.6",
|
package/src/browser.js
CHANGED
|
@@ -4,8 +4,7 @@ const { WasmRunner } = require("@coherentglobal/wasm-runner");
|
|
|
4
4
|
const validate = require("./validate.js");
|
|
5
5
|
const processModels = require("./models.js");
|
|
6
6
|
|
|
7
|
-
let registry =
|
|
8
|
-
let INVOCATION_CACHE = [];
|
|
7
|
+
let registry = {};
|
|
9
8
|
|
|
10
9
|
class Spark {
|
|
11
10
|
/**
|
|
@@ -84,31 +83,6 @@ class Spark {
|
|
|
84
83
|
|
|
85
84
|
return model;
|
|
86
85
|
}
|
|
87
|
-
/**
|
|
88
|
-
*
|
|
89
|
-
* @param {string} versionId
|
|
90
|
-
*/
|
|
91
|
-
async load(versionId) {
|
|
92
|
-
const { versionId: versionUuid, binary: modelPath } =
|
|
93
|
-
this._getModel(versionId);
|
|
94
|
-
|
|
95
|
-
console.log("SPARK load: ", modelPath);
|
|
96
|
-
if (!utils.isEmpty(registry)) {
|
|
97
|
-
registry = new WasmRunner();
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
await registry.append({
|
|
101
|
-
id: versionUuid,
|
|
102
|
-
url: modelPath,
|
|
103
|
-
// size,
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
INVOCATION_CACHE = [...INVOCATION_CACHE, { id: versionUuid }];
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
isExist = (model) => {
|
|
110
|
-
return registry.isExist(model);
|
|
111
|
-
};
|
|
112
86
|
|
|
113
87
|
/**
|
|
114
88
|
* Execute model
|
|
@@ -118,22 +92,14 @@ class Spark {
|
|
|
118
92
|
* @returns {object}
|
|
119
93
|
*/
|
|
120
94
|
async execute(input, version_id) {
|
|
121
|
-
if (!input.request_meta.version_id && !input.request_meta.version_uuid) {
|
|
122
|
-
input.request_meta.version_id = version_id;
|
|
123
|
-
}
|
|
124
95
|
const versionID =
|
|
125
|
-
|
|
96
|
+
version_id ||
|
|
97
|
+
input.request_meta.version_id ||
|
|
98
|
+
input.request_meta.version_uuid;
|
|
126
99
|
|
|
127
100
|
const model = this._getModel(versionID);
|
|
128
101
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// logger.info({
|
|
132
|
-
// EventType: "ExecuteModel",
|
|
133
|
-
// TextMessage: `Execute uuid: ${model.versionId}`,
|
|
134
|
-
// });
|
|
135
|
-
|
|
136
|
-
if (input && this.isExist(model.versionId)) {
|
|
102
|
+
if (input) {
|
|
137
103
|
let modelUrl = "";
|
|
138
104
|
|
|
139
105
|
if (
|
|
@@ -163,7 +129,6 @@ class Spark {
|
|
|
163
129
|
headers: { ...{ "content-type": "application/json" }, ...header },
|
|
164
130
|
};
|
|
165
131
|
|
|
166
|
-
// console.log("OPTIONS", options);
|
|
167
132
|
modelUrl = new URL(
|
|
168
133
|
`/${this.tenant}/api/v3/version/${input.request_meta.version_id}`,
|
|
169
134
|
this.url
|
|
@@ -177,13 +142,18 @@ class Spark {
|
|
|
177
142
|
throw new WasmRunnerErrors.UnauthorizedError();
|
|
178
143
|
}
|
|
179
144
|
} else if (this.isCompatible) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
INVOCATION_CACHE[modelIndex].lastUsed = Date.now();
|
|
145
|
+
if (!(registry instanceof WasmRunner)) {
|
|
146
|
+
registry = new WasmRunner();
|
|
147
|
+
}
|
|
185
148
|
|
|
186
|
-
|
|
149
|
+
if (!registry.isExist(versionID)) {
|
|
150
|
+
await registry.append({
|
|
151
|
+
id: versionID,
|
|
152
|
+
url: model.binary,
|
|
153
|
+
// size,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
const result = await registry.execute(input, versionID);
|
|
187
157
|
|
|
188
158
|
return result;
|
|
189
159
|
} else {
|
package/src/node.js
CHANGED
|
@@ -6,9 +6,8 @@ const validate = require("./validate.js");
|
|
|
6
6
|
const processModels = require("./models.js");
|
|
7
7
|
const got = require("got");
|
|
8
8
|
|
|
9
|
-
// const resolverDir = path.join(__dirname, "/tenant_resolver");
|
|
10
9
|
let registry = [];
|
|
11
|
-
|
|
10
|
+
|
|
12
11
|
class Spark {
|
|
13
12
|
/**
|
|
14
13
|
* @param {object} config
|
|
@@ -52,12 +51,6 @@ class Spark {
|
|
|
52
51
|
* @private
|
|
53
52
|
*/
|
|
54
53
|
this.fallbackEnabled = false;
|
|
55
|
-
|
|
56
|
-
// (async () => {
|
|
57
|
-
// if (!(await utils.isPathExist(resolverDir))) {
|
|
58
|
-
// await fs.promises.mkdir(resolverDir, { mode: 0o750 });
|
|
59
|
-
// }
|
|
60
|
-
// })();
|
|
61
54
|
}
|
|
62
55
|
|
|
63
56
|
/**
|
|
@@ -101,66 +94,6 @@ class Spark {
|
|
|
101
94
|
return model;
|
|
102
95
|
}
|
|
103
96
|
|
|
104
|
-
/**
|
|
105
|
-
*
|
|
106
|
-
* @param {string} versionId
|
|
107
|
-
*/
|
|
108
|
-
async load(versionId) {
|
|
109
|
-
const { versionId: versionUuid, binary: modelPath } =
|
|
110
|
-
this._getModel(versionId);
|
|
111
|
-
|
|
112
|
-
logger.info({
|
|
113
|
-
EventType: "ModelInfo",
|
|
114
|
-
TextMessage: `Append model tenant: ${this.tenant} uuid: ${versionUuid}`,
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// if (!registry[this.tenant]) {
|
|
118
|
-
if (!utils.isEmpty(registry)) {
|
|
119
|
-
// const resolverPath = path.join(
|
|
120
|
-
// resolverDir,
|
|
121
|
-
// `externalResolver_${this.tenant}.js`
|
|
122
|
-
// );
|
|
123
|
-
|
|
124
|
-
// const template = await fs.promises.readFile(
|
|
125
|
-
// require.resolve("./resolver/externalResolver"),
|
|
126
|
-
// {
|
|
127
|
-
// encoding: "utf8",
|
|
128
|
-
// flag: "r",
|
|
129
|
-
// }
|
|
130
|
-
// );
|
|
131
|
-
|
|
132
|
-
// await fs.promises.writeFile(
|
|
133
|
-
// resolverPath,
|
|
134
|
-
// template.replace("%%tenant_to_replace%%", this.tenant)
|
|
135
|
-
// );
|
|
136
|
-
|
|
137
|
-
registry = new WasmRunner();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
console.log("APPENDING");
|
|
141
|
-
await registry.append({
|
|
142
|
-
id: versionUuid,
|
|
143
|
-
url: modelPath,
|
|
144
|
-
// size,
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
INVOCATION_CACHE = [
|
|
148
|
-
...INVOCATION_CACHE,
|
|
149
|
-
{ id: versionUuid },
|
|
150
|
-
// { id: versionUuid, tenant: this.tenant },
|
|
151
|
-
];
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Check for exiting Model
|
|
156
|
-
*
|
|
157
|
-
* @param {string} model
|
|
158
|
-
* @returns {boolean}
|
|
159
|
-
*/
|
|
160
|
-
isExist = (model) => {
|
|
161
|
-
return registry.isExist(model);
|
|
162
|
-
};
|
|
163
|
-
|
|
164
97
|
/**
|
|
165
98
|
* Execute model
|
|
166
99
|
*
|
|
@@ -169,22 +102,21 @@ class Spark {
|
|
|
169
102
|
* @returns {object}
|
|
170
103
|
*/
|
|
171
104
|
async execute(input, version_id) {
|
|
172
|
-
if (!input.request_meta.version_id && !input.request_meta.version_uuid) {
|
|
173
|
-
input.request_meta.version_id = version_id;
|
|
174
|
-
}
|
|
175
105
|
const versionID =
|
|
176
|
-
|
|
106
|
+
version_id ||
|
|
107
|
+
input.request_meta.version_id ||
|
|
108
|
+
input.request_meta.version_uuid;
|
|
177
109
|
|
|
178
110
|
const model = this._getModel(versionID);
|
|
179
111
|
|
|
180
|
-
await this.load(model.versionId);
|
|
112
|
+
// await this.load(model.versionId);
|
|
181
113
|
|
|
182
114
|
logger.info({
|
|
183
115
|
EventType: "ExecuteModel",
|
|
184
116
|
TextMessage: `Execute uuid: ${model.versionId}`,
|
|
185
117
|
});
|
|
186
118
|
|
|
187
|
-
if (
|
|
119
|
+
if (input) {
|
|
188
120
|
let modelUrl = "";
|
|
189
121
|
|
|
190
122
|
if (
|
|
@@ -226,13 +158,18 @@ class Spark {
|
|
|
226
158
|
throw new WasmRunnerErrors.UnauthorizedError();
|
|
227
159
|
}
|
|
228
160
|
} else if (this.isCompatible) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
INVOCATION_CACHE[modelIndex].lastUsed = Date.now();
|
|
161
|
+
if (!(registry instanceof WasmRunner)) {
|
|
162
|
+
registry = new WasmRunner();
|
|
163
|
+
}
|
|
234
164
|
|
|
235
|
-
|
|
165
|
+
if (!registry.isExist(versionID)) {
|
|
166
|
+
await registry.append({
|
|
167
|
+
id: versionID,
|
|
168
|
+
url: model.binary,
|
|
169
|
+
// size,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
const result = await registry.execute(input, versionID);
|
|
236
173
|
|
|
237
174
|
return result;
|
|
238
175
|
} else {
|
package/test/spark-sdk.test.js
CHANGED
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
const Spark = require("../src/
|
|
1
|
+
const Spark = require("../src/node");
|
|
2
2
|
const dummyConfig = require("./mock-data/dummy-config.json");
|
|
3
3
|
const should = require("should");
|
|
4
4
|
const validMockData = require("./mock-data/valid.json");
|
|
5
5
|
|
|
6
6
|
describe("Spark Execute", async function () {
|
|
7
|
-
it("should load model", async function () {
|
|
8
|
-
const tenant = "test";
|
|
9
|
-
const model = "dummy-model-uuid";
|
|
10
|
-
const spark = new Spark(dummyConfig);
|
|
11
|
-
await spark.load(model);
|
|
12
|
-
|
|
13
|
-
should(spark.isExist(tenant, model)).be.true();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
7
|
it("should execute model", async function () {
|
|
17
8
|
const model = "dummy-model-uuid";
|
|
18
9
|
const spark = new Spark(dummyConfig);
|
|
19
|
-
await spark.load(model);
|
|
20
10
|
|
|
21
11
|
const res = await spark.execute(validMockData);
|
|
22
|
-
|
|
23
|
-
//
|
|
12
|
+
|
|
13
|
+
// const data = JSON.parse(res);
|
|
14
|
+
const data =
|
|
15
|
+
typeof res === "object" ? JSON.parse(JSON.stringify(res)) : res;
|
|
24
16
|
|
|
25
17
|
data.response_data.should.exist;
|
|
26
18
|
data.response_data.outputs.should.exist;
|
package/types/browser.d.ts
CHANGED
package/types/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.js"],"names":[],"mappings":";AAQA;IACE;;OAEG;IACH,oBAFW,MAAM,EAwChB;IArCC;;OAEG;IACH,eAAyC;IAMzC;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,iBAAwB;IACxB;;OAEG;IACH,cAAwC;IACxC;;OAEG;IACH,YAAc;IACd;;OAEG;IACH,qBAA2C;IAC3C;;OAEG;IACH,cAAwC;IACxC;;OAEG;IACH,wBAA4B;IAE9B;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAKlB;IACD;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAUlB;IACD;;;;OAIG;IACH,cAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,eAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAyElB;CACF"}
|
package/types/node.d.ts
CHANGED
|
@@ -54,18 +54,6 @@ declare class Spark {
|
|
|
54
54
|
* @returns {boolean}
|
|
55
55
|
*/
|
|
56
56
|
_getModel(id: string): boolean;
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* @param {string} versionId
|
|
60
|
-
*/
|
|
61
|
-
load(versionId: string): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Check for exiting Model
|
|
64
|
-
*
|
|
65
|
-
* @param {string} model
|
|
66
|
-
* @returns {boolean}
|
|
67
|
-
*/
|
|
68
|
-
isExist: (model: string) => boolean;
|
|
69
57
|
/**
|
|
70
58
|
* Execute model
|
|
71
59
|
*
|
package/types/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.js"],"names":[],"mappings":";AAUA;IACE;;OAEG;IACH,oBAFW,MAAM,EAyChB;IAtCC;;OAEG;IACH,eAAyC;IAMzC;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,iBAAwB;IACxB;;OAEG;IACH,cAAwC;IACxC;;OAEG;IACH,YAAc;IACd;;OAEG;IACH,qBAA2C;IAC3C;;OAEG;IACH,cAAwC;IAExC;;OAEG;IACH,wBAA4B;IAG9B;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,eAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAmFlB;CAMF"}
|