diff --git a/src/__test__/unit/builtInHandler.spec.ts b/src/__test__/unit/builtInHandler.spec.ts index 491b94e9..8f321990 100644 --- a/src/__test__/unit/builtInHandler.spec.ts +++ b/src/__test__/unit/builtInHandler.spec.ts @@ -5,6 +5,18 @@ import { KeyPair } from '../../internal/KeyPair'; import { Sig, defaultSigGuard, allowServiceFn } from '../../internal/builtins/Sig'; import { toUint8Array } from 'js-base64'; +const a10b20 = `{ + "a": 10, + "b": 20 +}`; + +const oneTwoThreeFour = `[ + 1, + 2, + 3, + 4 +]`; + describe('Tests for default handler', () => { // prettier-ignore each` @@ -48,6 +60,10 @@ describe('Tests for default handler', () => { ${'peer'} | ${'timeout'} | ${[200, ['test']]} | ${0} | ${['test']}} ${'peer'} | ${'timeout'} | ${[]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} ${'peer'} | ${'timeout'} | ${[200, 'test', 1]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} + + ${'debug'} | ${'stringify'} | ${[]} | ${0} | ${'""'}} + ${'debug'} | ${'stringify'} | ${[{a: 10, b: 20}]} | ${0} | ${a10b20}} + ${'debug'} | ${'stringify'} | ${[1, 2, 3, 4]} | ${0} | ${oneTwoThreeFour}} `.test( // diff --git a/src/internal/builtins/common.ts b/src/internal/builtins/common.ts index bbb7dee5..ce760841 100644 --- a/src/internal/builtins/common.ts +++ b/src/internal/builtins/common.ts @@ -18,6 +18,7 @@ import { CallServiceResult } from '@fluencelabs/avm-runner-interface'; import { encode, decode } from 'bs58'; import { sha256 } from 'multiformats/hashes/sha2'; import { ResultCodes } from '../commonTypes'; +import { jsonify } from '../utils' import Buffer from '../Buffer'; const success = (result: any): CallServiceResult => { @@ -128,6 +129,22 @@ export const builtInServices = { }, }, + debug: { + stringify: (req) => { + let out; + + if (req.args.length === 0) { + out = ''; + } else if (req.args.length === 1) { + out = req.args[0]; + } else { + out = req.args; + } + + return success(jsonify(out)); + }, + }, + peer: { timeout: (req) => { if (req.args.length !== 2) {