MCPcopy Create free account
hub / github.com/dharmaprotocol/dharmaOS / encodeSequence

Method encodeSequence

src/encoder.js:300–344  ·  view source on GitHub ↗
({sequence, variables, wallet})

Source from the content-addressed store, hash-verified

298 }
299
300 static encodeSequence({sequence, variables, wallet}) {
301 const isAdvanced = sequence.some(({ actionScript, resultsToApply }) => (
302 !!resultsToApply && resultsToApply.length > 0 ||
303 Validator.isAdvanced(actionScript)
304 ));
305
306 let sequenceCallIndex = 0;
307 const encoded = [];
308 const sequenceKnownCallResultVariables = [];
309 const sequenceCallIndices = [];
310 let calls = [];
311 for (const { actionScript, resultsToApply } of sequence) {
312 const encoder = new Encoder(
313 actionScript, variables, wallet, isAdvanced
314 );
315
316 encoder.parseActionScriptDefinitions();
317 encoder.callIndex = sequenceCallIndex;
318 encoder.calls = calls;
319 sequenceCallIndices.push(sequenceCallIndex);
320
321 for (const { sequenceIndex, result, variable } of resultsToApply) {
322 const resultToApply = sequenceKnownCallResultVariables[sequenceIndex][result];
323 encoder.knownCallResultVariables[variable] = resultToApply;
324 }
325
326 encoded.push(encoder.encode());
327 calls = encoder.calls;
328 sequenceCallIndex = encoder.callIndex;
329 sequenceKnownCallResultVariables.push(encoder.knownCallResultVariables);
330 }
331
332 const callABIs = [].concat(...encoded.map(x => x.callABIs));
333 const resultToParse = encoded
334 .map(x => x.resultToParse)
335 .reduce((result, obj) => Object.assign({}, result, obj), {});
336
337 return {
338 calls,
339 callABIs,
340 resultToParse,
341 isAdvanced,
342 sequenceCallIndices,
343 };
344 }
345
346 static typeSizes(type) {
347 if (typeof type !== "string") {

Callers 1

evaluateSequenceFunction · 0.80

Calls 3

encodeMethod · 0.95
isAdvancedMethod · 0.80

Tested by

no test coverage detected