UNPKG

3.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"max-packet-amount.js","sourceRoot":"","sources":["max-packet-amount.ts"],"names":[],"mappings":";;AAAA,wCAAuC;AACvC,uCAAsD;AACtD,MAAM,GAAG,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAA;AACxD,+CAAoC;AACpC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;AAIhD,MAAqB,yBAAyB;IAG5C,YAAa,IAAQ,EAAE,EAAE,OAAO,EAAsB;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAE,SAAoB,EAAE,SAAiB;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAE3C,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,SAAS,CAAC,CAAA;SACpE;QAED,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAA;YACnD,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,IAAwC,EAAE,EAAE;oBACvE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;wBAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;wBAE1D,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;wBACjD,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;4BAC9B,GAAG,CAAC,KAAK,CAAC,sFAAsF,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;4BAClJ,MAAM,IAAI,mBAAmB,CAAC,oCAAoC,eAAe,iBAAiB,YAAY,CAAC,MAAM,EAAE,EAAE;gCACvH,cAAc,EAAE,YAAY,CAAC,MAAM;gCACnC,aAAa,EAAE,eAAe;6BAC/B,CAAC,CAAA;yBACH;qBACF;oBAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnB,CAAC;aACF,CAAC,CAAA;SACH;IAEH,CAAC;CACF;AAtCD,4CAsCC","sourcesContent":["import * as IlpPacket from 'ilp-packet'\nimport { create as createLogger } from '../common/log'\nconst log = createLogger('max-packet-amount-middleware')\nimport BigNumber from 'bignumber.js'\nconst { AmountTooLargeError } = IlpPacket.Errors\nimport { Middleware, MiddlewareCallback, MiddlewareServices, Pipelines } from '../types/middleware'\nimport { AccountInfo } from '../types/accounts'\n\nexport default class MaxPacketAmountMiddleware implements Middleware {\n private getInfo: (accountId: string) => AccountInfo\n\n constructor (opts: {}, { getInfo }: MiddlewareServices) {\n this.getInfo = getInfo\n }\n\n async applyToPipelines (pipelines: Pipelines, accountId: string) {\n const accountInfo = this.getInfo(accountId)\n\n if (!accountInfo) {\n throw new Error('account info unavailable. accountId=' + accountId)\n }\n\n if (accountInfo.maxPacketAmount) {\n const maxPacketAmount = accountInfo.maxPacketAmount\n pipelines.incomingData.insertLast({\n name: 'maxPacketAmount',\n method: async (data: Buffer, next: MiddlewareCallback<Buffer, Buffer>) => {\n if (data[0] === IlpPacket.Type.TYPE_ILP_PREPARE) {\n const parsedPacket = IlpPacket.deserializeIlpPrepare(data)\n\n const amount = new BigNumber(parsedPacket.amount)\n if (amount.gt(maxPacketAmount)) {\n log.debug('rejecting packet for exceeding max amount. accountId=%s maxAmount=%s actualAmount=%s', accountId, maxPacketAmount, parsedPacket.amount)\n throw new AmountTooLargeError(`packet size too large. maxAmount=${maxPacketAmount} actualAmount=${parsedPacket.amount}`, {\n receivedAmount: parsedPacket.amount,\n maximumAmount: maxPacketAmount\n })\n }\n }\n\n return next(data)\n }\n })\n }\n\n }\n}\n"]}
\No newline at end of file