@super-protocol/sdk-js 3.14.3-beta.0 → 3.14.3-beta.1
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/cjs/TIIGenerator.js +13 -6
- package/dist/mjs/TIIGenerator.js +13 -6
- package/package.json +1 -1
package/dist/cjs/TIIGenerator.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const index_js_1 = __importDefault(require("./crypto/index.js"));
|
|
7
7
|
const index_js_2 = require("./models/index.js");
|
|
8
8
|
const TeeInputGeneratorBase_js_1 = __importDefault(require("./TeeInputGeneratorBase.js"));
|
|
9
|
+
const constants_js_1 = require("./constants.js");
|
|
9
10
|
class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
10
11
|
static async buildTII(params) {
|
|
11
12
|
const triEncryption = await this.getVerifiedBlockEncryption(params.offerId, params.sgxApiUrl);
|
|
@@ -32,15 +33,21 @@ class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
|
32
33
|
const parentOrderInfo = await parentOrder.getOrderInfo();
|
|
33
34
|
const runtimeInputInfos = await this.generateRiiByOfferIds(parentOrderInfo.args.inputOffersIds);
|
|
34
35
|
if (solutionHash) {
|
|
35
|
-
if (runtimeInputInfos.find((rii) => rii.type === 'Solution')) {
|
|
36
|
-
throw new Error('Solution RII already exists');
|
|
37
|
-
}
|
|
38
36
|
const solutionRii = {
|
|
39
37
|
args: undefined,
|
|
40
38
|
hash: solutionHash,
|
|
41
|
-
type: '
|
|
39
|
+
type: 'Image',
|
|
42
40
|
};
|
|
43
|
-
runtimeInputInfos.
|
|
41
|
+
const generatedSolutionRiiIndex = runtimeInputInfos.findIndex((rii) => rii.type === solutionRii.type);
|
|
42
|
+
if (generatedSolutionRiiIndex !== -1) {
|
|
43
|
+
if (runtimeInputInfos[generatedSolutionRiiIndex].hash.hash !== constants_js_1.ZERO_HASH.hash) {
|
|
44
|
+
throw new Error('Workflow was created with a different solution');
|
|
45
|
+
}
|
|
46
|
+
runtimeInputInfos[generatedSolutionRiiIndex] = solutionRii;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
runtimeInputInfos.push(solutionRii);
|
|
50
|
+
}
|
|
44
51
|
}
|
|
45
52
|
return this.generateByOffer({
|
|
46
53
|
offerId: parentOrderInfo.offerId,
|
|
@@ -69,4 +76,4 @@ class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
|
69
76
|
}
|
|
70
77
|
}
|
|
71
78
|
exports.default = TIIGenerator;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlFQUF1QztBQUN2QyxnREFBb0Q7QUFXcEQsMEZBQStEO0FBQy9ELGlEQUEyQztBQUUzQyxNQUFNLFlBQWEsU0FBUSxrQ0FBcUI7SUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzdCLE1BR0M7UUFFRCxNQUFNLGFBQWEsR0FBZSxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FDckUsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsU0FBUyxDQUNqQixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBaUIsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUQsTUFBTSxrQkFBa0IsR0FBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RSxNQUFNLEdBQUcsR0FBZTtZQUN0QixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QixDQUFDO1FBQ0YsT0FBTztZQUNMLGlCQUFpQixFQUFFLE1BQU0sa0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsa0JBQWtCLENBQUM7WUFDNUYsWUFBWSxFQUFFLE1BQU0sa0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUM7U0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUE2QjtRQUN4RCxNQUFNLEdBQUcsR0FBRyxNQUFN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
|
package/dist/mjs/TIIGenerator.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Crypto from './crypto/index.js';
|
|
2
2
|
import { Order, TeeOffer } from './models/index.js';
|
|
3
3
|
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
4
|
+
import { ZERO_HASH } from './constants.js';
|
|
4
5
|
class TIIGenerator extends TeeInputGeneratorBase {
|
|
5
6
|
static async buildTII(params) {
|
|
6
7
|
const triEncryption = await this.getVerifiedBlockEncryption(params.offerId, params.sgxApiUrl);
|
|
@@ -27,15 +28,21 @@ class TIIGenerator extends TeeInputGeneratorBase {
|
|
|
27
28
|
const parentOrderInfo = await parentOrder.getOrderInfo();
|
|
28
29
|
const runtimeInputInfos = await this.generateRiiByOfferIds(parentOrderInfo.args.inputOffersIds);
|
|
29
30
|
if (solutionHash) {
|
|
30
|
-
if (runtimeInputInfos.find((rii) => rii.type === 'Solution')) {
|
|
31
|
-
throw new Error('Solution RII already exists');
|
|
32
|
-
}
|
|
33
31
|
const solutionRii = {
|
|
34
32
|
args: undefined,
|
|
35
33
|
hash: solutionHash,
|
|
36
|
-
type: '
|
|
34
|
+
type: 'Image',
|
|
37
35
|
};
|
|
38
|
-
runtimeInputInfos.
|
|
36
|
+
const generatedSolutionRiiIndex = runtimeInputInfos.findIndex((rii) => rii.type === solutionRii.type);
|
|
37
|
+
if (generatedSolutionRiiIndex !== -1) {
|
|
38
|
+
if (runtimeInputInfos[generatedSolutionRiiIndex].hash.hash !== ZERO_HASH.hash) {
|
|
39
|
+
throw new Error('Workflow was created with a different solution');
|
|
40
|
+
}
|
|
41
|
+
runtimeInputInfos[generatedSolutionRiiIndex] = solutionRii;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
runtimeInputInfos.push(solutionRii);
|
|
45
|
+
}
|
|
39
46
|
}
|
|
40
47
|
return this.generateByOffer({
|
|
41
48
|
offerId: parentOrderInfo.offerId,
|
|
@@ -64,4 +71,4 @@ class TIIGenerator extends TeeInputGeneratorBase {
|
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
73
|
export default TIIGenerator;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBV3BELE9BQU8scUJBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sWUFBYSxTQUFRLHFCQUFxQjtJQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDN0IsTUFHQztRQUVELE1BQU0sYUFBYSxHQUFlLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUNyRSxNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQWlCLE1BQU0sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVELE1BQU0sa0JBQWtCLEdBQWUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUUsTUFBTSxHQUFHLEdBQWU7WUFDdEIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtZQUMzQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDOUIsQ0FBQztRQUNGLE9BQU87WUFDTCxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsa0JBQWtCLENBQUM7WUFDNUYsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FB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
|