UNPKG

4.36 kBSource Map (JSON)View Raw
1{"version":3,"file":"echo.js","sourceRoot":"","sources":["echo.ts"],"names":[],"mappings":";;AAAA,uCAAsD;AACtD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AAEhC,2CAAoE;AACpE,yCAA0C;AAC1C,+CAAuC;AACvC,6DAAoD;AACpD,MAAM,EAAE,kBAAkB,EAAE,GAAG,mBAAM,CAAA;AAErC,MAAM,+BAA+B,GAAG,EAAE,GAAG,CAAC,CAAA;AAC9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAEjE,MAAqB,cAAc;IAIjC,YAAa,IAAqB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAM,CAAC,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAY,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,aAAqB,EACrB,EAAE,YAAY,EAAE,QAAQ,EAGvB;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,+BAA+B,EAAE;YAC9D,MAAM,IAAI,kBAAkB,CAAC,iDAAiD,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC3G;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;YAC5D,MAAM,IAAI,kBAAkB,CAAC,8CAA8C,CAAC,CAAA;SAC7E;QAED,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAE5C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;QAErC,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEnE,GAAG,CAAC,KAAK,CAAC,+DAA+D,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;YAExK,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;YAE1E,MAAM,MAAM,GAAG,IAAI,kBAAM,EAAE,CAAA;YAE3B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAE9B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAEvB,OAAO,QAAQ,CAAC,gCAAmB,CAAC;gBAClC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,WAAW,EAAE,aAAa;gBAC1B,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAClF,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE;aACzB,CAAC,EAAE,OAAO,CAAC,CAAA;SACb;aAAM;YACL,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE,aAAa,CAAC,CAAA;YAC/E,MAAM,IAAI,kBAAkB,CAAC,2BAA2B,CAAC,CAAA;SAC1D;IACH,CAAC;CACF;AAxDD,iCAwDC","sourcesContent":["import { create as createLogger } from '../common/log'\nconst log = createLogger('echo')\nimport reduct = require('reduct')\nimport { serializeIlpPrepare, IlpPrepare, Errors } from 'ilp-packet'\nimport { Reader, Writer } from 'oer-utils'\nimport Config from '../services/config'\nimport RouteBuilder from '../services/route-builder'\nconst { InvalidPacketError } = Errors\n\nconst MINIMUM_ECHO_PACKET_DATA_LENGTH = 16 + 1\nconst ECHO_DATA_PREFIX = Buffer.from('ECHOECHOECHOECHO', 'ascii')\n\nexport default class EchoController {\n private config: Config\n private routeBuilder: RouteBuilder\n\n constructor (deps: reduct.Injector) {\n this.config = deps(Config)\n this.routeBuilder = deps(RouteBuilder)\n }\n\n async handle (\n data: Buffer,\n sourceAccount: string,\n { parsedPacket, outbound }: {\n parsedPacket: IlpPrepare,\n outbound: (data: Buffer, accountId: string) => Promise<Buffer>\n }\n ) {\n if (parsedPacket.data.length < MINIMUM_ECHO_PACKET_DATA_LENGTH) {\n throw new InvalidPacketError('packet data too short for echo request. length=' + parsedPacket.data.length)\n }\n\n if (!parsedPacket.data.slice(0, 16).equals(ECHO_DATA_PREFIX)) {\n throw new InvalidPacketError('packet data does not start with ECHO prefix.')\n }\n\n const reader = new Reader(parsedPacket.data)\n\n reader.skip(ECHO_DATA_PREFIX.length)\n\n const type = reader.readUInt8Number()\n\n if (type === 0) {\n const sourceAddress = reader.readVarOctetString().toString('ascii')\n\n log.trace('responding to ping. sourceAccount=%s sourceAddress=%s cond=%s', sourceAccount, sourceAddress, parsedPacket.executionCondition.slice(0, 9).toString('base64'))\n\n const nextHop = this.routeBuilder.getNextHop(sourceAccount, sourceAddress)\n\n const writer = new Writer()\n\n writer.write(ECHO_DATA_PREFIX)\n\n writer.writeUInt8(0x01) // type = response\n\n return outbound(serializeIlpPrepare({\n amount: parsedPacket.amount,\n destination: sourceAddress,\n executionCondition: parsedPacket.executionCondition,\n expiresAt: new Date(Number(parsedPacket.expiresAt) - this.config.minMessageWindow),\n data: writer.getBuffer()\n }), nextHop)\n } else {\n log.error('received unexpected ping response. sourceAccount=%s', sourceAccount)\n throw new InvalidPacketError('unexpected ping response.')\n }\n }\n}\n"]}
\No newline at end of file