@ledgerhq/device-signer-kit-bitcoin 1.3.1 → 1.3.2
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/lib/cjs/internal/app-binder/task/ExtractTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ExtractTransactionTask.js.map +2 -2
- package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
- package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
- package/lib/cjs/package.json +1 -1
- package/lib/esm/internal/app-binder/task/ExtractTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ExtractTransactionTask.js.map +2 -2
- package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
- package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
- package/lib/esm/package.json +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var T=Object.defineProperty;var
|
|
1
|
+
"use strict";var T=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var V=(n,t)=>{for(var a in t)T(n,a,{get:t[a],enumerable:!0})},E=(n,t,a,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of P(t))!B.call(n,s)&&s!==a&&T(n,s,{get:()=>t[s],enumerable:!(f=U(t,s))||f.enumerable});return n};var _=n=>E(T({},"__esModule",{value:!0}),n);var b={};V(b,{ExtractTransactionTask:()=>h});module.exports=_(b);var u=require("@ledgerhq/device-management-kit"),r=require("../../psbt/model/Psbt"),d=require("../../utils/Varint");class h{constructor(t,a){this._args=t;this._valueParser=a}run(){const{psbt:t}=this._args,a=new u.ByteArrayBuilder,f=t.getGlobalValue(r.PsbtGlobal.VERSION).chain(e=>this._valueParser.getUInt32LE(e.data)).orDefault(0);a.add32BitUIntToData(f,!1);const s=t.getInputValue(0,r.PsbtIn.WITNESS_UTXO).isJust();s&&a.addBufferToData(Uint8Array.from([0,1]));const p=t.getGlobalValue(r.PsbtGlobal.INPUT_COUNT).chain(e=>this._valueParser.getVarint(e.data)).orDefault(0);a.addBufferToData((0,d.encodeVarint)(p).extract());const I=new u.ByteArrayBuilder;for(let e=0;e<p;e++){a.addBufferToData(t.getInputValue(e,r.PsbtIn.PREVIOUS_TXID).mapOrDefault(o=>o.data,new Uint8Array));const c=t.getInputValue(e,r.PsbtIn.OUTPUT_INDEX).chain(o=>this._valueParser.getUInt32LE(o.data)).orDefault(0);a.add32BitUIntToData(c,!1);const l=t.getInputValue(e,r.PsbtIn.FINAL_SCRIPTSIG).mapOrDefault(o=>o.data,Uint8Array.from([]));a.addBufferToData((0,d.encodeVarint)(l.length).extract()),a.addBufferToData(l);const i=t.getInputValue(e,r.PsbtIn.SEQUENCE).chain(o=>this._valueParser.getUInt32LE(o.data)).orDefault(0);if(a.add32BitUIntToData(i,!1),s){const o=t.getInputValue(e,r.PsbtIn.FINAL_SCRIPTWITNESS).mapOrDefault(m=>m.data,Uint8Array.from([]));I.addBufferToData(o)}}const g=t.getGlobalValue(r.PsbtGlobal.OUTPUT_COUNT).chain(e=>this._valueParser.getVarint(e.data)).orDefault(0);a.addBufferToData((0,d.encodeVarint)(g).extract());for(let e=0;e<g;e++){const c=t.getOutputValue(e,r.PsbtOut.AMOUNT).chain(i=>this._valueParser.getInt64LE(i.data)).orDefault(0n),l=t.getOutputValue(e,r.PsbtOut.SCRIPT).mapOrDefault(i=>i.data,new Uint8Array);a.add64BitIntToData(c,!1),a.addBufferToData((0,d.encodeVarint)(l.length).extract()),a.addBufferToData(l)}a.addBufferToData(I.build());const D=t.getGlobalValue(r.PsbtGlobal.FALLBACK_LOCKTIME).chain(e=>this._valueParser.getUInt32LE(e.data)).orDefault(0);return a.add32BitUIntToData(D,!1),(0,u.CommandResultFactory)({data:(0,u.bufferToHexaString)(a.build())})}}0&&(module.exports={ExtractTransactionTask});
|
|
2
2
|
//# sourceMappingURL=ExtractTransactionTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ExtractTransactionTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport {\n type Psbt,\n PsbtGlobal,\n PsbtIn,\n PsbtOut,\n} from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\ntype ExtractTransactionTaskArgs = {\n psbt: Psbt;\n};\n\nexport class ExtractTransactionTask {\n constructor(\n private readonly _args: ExtractTransactionTaskArgs,\n private readonly _valueParser: ValueParser,\n ) {}\n\n /**\n * Processes a PSBT (Partially Signed Bitcoin Transaction) and constructs a finalized Bitcoin transaction.\n *\n * @return {CommandResult<HexaString, BtcErrorCodes>} A `CommandResult` object containing the resulting serialized transaction\n * as a hexadecimal string (without the \"0x\" prefix) on success, or an error code (`BtcErrorCodes`) on failure.\n */\n run(): CommandResult<HexaString, BtcErrorCodes> {\n const { psbt } = this._args;\n const transaction = new ByteArrayBuilder();\n const psbtVersion = psbt\n .getGlobalValue(PsbtGlobal.VERSION)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(psbtVersion, false);\n const isSegwit = psbt.getInputValue(0, PsbtIn.WITNESS_UTXO).isJust();\n if (isSegwit) {\n transaction.addBufferToData(Uint8Array.from([0, 0x01]));\n }\n const inputCount = psbt\n .getGlobalValue(PsbtGlobal.INPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n\n transaction.addBufferToData(encodeVarint(inputCount).extract()!);\n const witnessBuffer = new ByteArrayBuilder();\n for (let i = 0; i < inputCount; i++) {\n transaction.addBufferToData(\n psbt\n .getInputValue(i, PsbtIn.PREVIOUS_TXID)\n .mapOrDefault((v) => v.data,
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CAGPC,EAKO,qCAEPC,EAA6B,kCAMtB,MAAMJ,CAAuB,CAClC,YACmBK,EACAC,EACjB,CAFiB,WAAAD,EACA,kBAAAC,CAChB,CAQH,KAAgD,CAC9C,KAAM,CAAE,KAAAC,CAAK,EAAI,KAAK,MAChBC,EAAc,IAAI,mBAClBC,EAAcF,EACjB,eAAe,aAAW,OAAO,EACjC,MAAOG,GAAU,KAAK,aAAa,YAAYA,EAAM,IAAI,CAAC,EAC1D,UAAU,CAAC,EACdF,EAAY,mBAAmBC,EAAa,EAAK,EACjD,MAAME,EAAWJ,EAAK,cAAc,EAAG,SAAO,YAAY,EAAE,OAAO,EAC/DI,GACFH,EAAY,gBAAgB,WAAW,KAAK,CAAC,EAAG,CAAI,CAAC,CAAC,EAExD,MAAMI,EAAaL,EAChB,eAAe,aAAW,WAAW,EACrC,MAAOG,GAAU,KAAK,aAAa,UAAUA,EAAM,IAAI,CAAC,EACxD,UAAU,CAAC,EAEdF,EAAY,mBAAgB,gBAAaI,CAAU,EAAE,QAAQ,CAAE,EAC/D,MAAMC,EAAgB,IAAI,mBAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAYE,IAAK,CACnCN,EAAY,gBACVD,EACG,cAAcO,EAAG,SAAO,aAAa,EACrC,aAAcC,GAAMA,EAAE,KAAM,
|
|
4
|
+
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport {\n type Psbt,\n PsbtGlobal,\n PsbtIn,\n PsbtOut,\n} from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\ntype ExtractTransactionTaskArgs = {\n psbt: Psbt;\n};\n\nexport class ExtractTransactionTask {\n constructor(\n private readonly _args: ExtractTransactionTaskArgs,\n private readonly _valueParser: ValueParser,\n ) {}\n\n /**\n * Processes a PSBT (Partially Signed Bitcoin Transaction) and constructs a finalized Bitcoin transaction.\n *\n * @return {CommandResult<HexaString, BtcErrorCodes>} A `CommandResult` object containing the resulting serialized transaction\n * as a hexadecimal string (without the \"0x\" prefix) on success, or an error code (`BtcErrorCodes`) on failure.\n */\n run(): CommandResult<HexaString, BtcErrorCodes> {\n const { psbt } = this._args;\n const transaction = new ByteArrayBuilder();\n const psbtVersion = psbt\n .getGlobalValue(PsbtGlobal.VERSION)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(psbtVersion, false);\n const isSegwit = psbt.getInputValue(0, PsbtIn.WITNESS_UTXO).isJust();\n if (isSegwit) {\n transaction.addBufferToData(Uint8Array.from([0, 0x01]));\n }\n const inputCount = psbt\n .getGlobalValue(PsbtGlobal.INPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n\n transaction.addBufferToData(encodeVarint(inputCount).extract()!);\n const witnessBuffer = new ByteArrayBuilder();\n for (let i = 0; i < inputCount; i++) {\n transaction.addBufferToData(\n psbt\n .getInputValue(i, PsbtIn.PREVIOUS_TXID)\n .mapOrDefault((v) => v.data, new Uint8Array()),\n );\n const outputIndex = psbt\n .getInputValue(i, PsbtIn.OUTPUT_INDEX)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(outputIndex, false);\n const scriptSig = psbt\n .getInputValue(i, PsbtIn.FINAL_SCRIPTSIG)\n .mapOrDefault((v) => v.data, Uint8Array.from([]));\n transaction.addBufferToData(encodeVarint(scriptSig.length).extract()!);\n transaction.addBufferToData(scriptSig);\n const sequence = psbt\n .getInputValue(i, PsbtIn.SEQUENCE)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(sequence, false);\n if (isSegwit) {\n const witness = psbt\n .getInputValue(i, PsbtIn.FINAL_SCRIPTWITNESS)\n .mapOrDefault((v) => v.data, Uint8Array.from([]));\n witnessBuffer.addBufferToData(witness);\n }\n }\n const outputCount = psbt\n .getGlobalValue(PsbtGlobal.OUTPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n transaction.addBufferToData(encodeVarint(outputCount).extract()!);\n for (let o = 0; o < outputCount; o++) {\n const amount = psbt\n .getOutputValue(o, PsbtOut.AMOUNT)\n .chain((value) => this._valueParser.getInt64LE(value.data))\n .orDefault(0n);\n const script = psbt\n .getOutputValue(o, PsbtOut.SCRIPT)\n .mapOrDefault((v) => v.data, new Uint8Array());\n transaction.add64BitIntToData(amount, false);\n transaction.addBufferToData(encodeVarint(script.length).extract()!);\n transaction.addBufferToData(script);\n }\n transaction.addBufferToData(witnessBuffer.build());\n const locktime = psbt\n .getGlobalValue(PsbtGlobal.FALLBACK_LOCKTIME)\n .chain((v) => this._valueParser.getUInt32LE(v.data))\n .orDefault(0);\n transaction.add32BitUIntToData(locktime, false);\n return CommandResultFactory({\n data: bufferToHexaString(transaction.build()),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CAGPC,EAKO,qCAEPC,EAA6B,kCAMtB,MAAMJ,CAAuB,CAClC,YACmBK,EACAC,EACjB,CAFiB,WAAAD,EACA,kBAAAC,CAChB,CAQH,KAAgD,CAC9C,KAAM,CAAE,KAAAC,CAAK,EAAI,KAAK,MAChBC,EAAc,IAAI,mBAClBC,EAAcF,EACjB,eAAe,aAAW,OAAO,EACjC,MAAOG,GAAU,KAAK,aAAa,YAAYA,EAAM,IAAI,CAAC,EAC1D,UAAU,CAAC,EACdF,EAAY,mBAAmBC,EAAa,EAAK,EACjD,MAAME,EAAWJ,EAAK,cAAc,EAAG,SAAO,YAAY,EAAE,OAAO,EAC/DI,GACFH,EAAY,gBAAgB,WAAW,KAAK,CAAC,EAAG,CAAI,CAAC,CAAC,EAExD,MAAMI,EAAaL,EAChB,eAAe,aAAW,WAAW,EACrC,MAAOG,GAAU,KAAK,aAAa,UAAUA,EAAM,IAAI,CAAC,EACxD,UAAU,CAAC,EAEdF,EAAY,mBAAgB,gBAAaI,CAAU,EAAE,QAAQ,CAAE,EAC/D,MAAMC,EAAgB,IAAI,mBAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAYE,IAAK,CACnCN,EAAY,gBACVD,EACG,cAAcO,EAAG,SAAO,aAAa,EACrC,aAAcC,GAAMA,EAAE,KAAM,IAAI,UAAY,CACjD,EACA,MAAMC,EAAcT,EACjB,cAAcO,EAAG,SAAO,YAAY,EACpC,MAAOJ,GAAU,KAAK,aAAa,YAAYA,EAAM,IAAI,CAAC,EAC1D,UAAU,CAAC,EACdF,EAAY,mBAAmBQ,EAAa,EAAK,EACjD,MAAMC,EAAYV,EACf,cAAcO,EAAG,SAAO,eAAe,EACvC,aAAcC,GAAMA,EAAE,KAAM,WAAW,KAAK,CAAC,CAAC,CAAC,EAClDP,EAAY,mBAAgB,gBAAaS,EAAU,MAAM,EAAE,QAAQ,CAAE,EACrET,EAAY,gBAAgBS,CAAS,EACrC,MAAMC,EAAWX,EACd,cAAcO,EAAG,SAAO,QAAQ,EAChC,MAAOJ,GAAU,KAAK,aAAa,YAAYA,EAAM,IAAI,CAAC,EAC1D,UAAU,CAAC,EAEd,GADAF,EAAY,mBAAmBU,EAAU,EAAK,EAC1CP,EAAU,CACZ,MAAMQ,EAAUZ,EACb,cAAcO,EAAG,SAAO,mBAAmB,EAC3C,aAAcC,GAAMA,EAAE,KAAM,WAAW,KAAK,CAAC,CAAC,CAAC,EAClDF,EAAc,gBAAgBM,CAAO,CACvC,CACF,CACA,MAAMC,EAAcb,EACjB,eAAe,aAAW,YAAY,EACtC,MAAOG,GAAU,KAAK,aAAa,UAAUA,EAAM,IAAI,CAAC,EACxD,UAAU,CAAC,EACdF,EAAY,mBAAgB,gBAAaY,CAAW,EAAE,QAAQ,CAAE,EAChE,QAASC,EAAI,EAAGA,EAAID,EAAaC,IAAK,CACpC,MAAMC,EAASf,EACZ,eAAec,EAAG,UAAQ,MAAM,EAChC,MAAOX,GAAU,KAAK,aAAa,WAAWA,EAAM,IAAI,CAAC,EACzD,UAAU,EAAE,EACTa,EAAShB,EACZ,eAAec,EAAG,UAAQ,MAAM,EAChC,aAAcN,GAAMA,EAAE,KAAM,IAAI,UAAY,EAC/CP,EAAY,kBAAkBc,EAAQ,EAAK,EAC3Cd,EAAY,mBAAgB,gBAAae,EAAO,MAAM,EAAE,QAAQ,CAAE,EAClEf,EAAY,gBAAgBe,CAAM,CACpC,CACAf,EAAY,gBAAgBK,EAAc,MAAM,CAAC,EACjD,MAAMW,EAAWjB,EACd,eAAe,aAAW,iBAAiB,EAC3C,MAAOQ,GAAM,KAAK,aAAa,YAAYA,EAAE,IAAI,CAAC,EAClD,UAAU,CAAC,EACd,OAAAP,EAAY,mBAAmBgB,EAAU,EAAK,KACvC,wBAAqB,CAC1B,QAAM,sBAAmBhB,EAAY,MAAM,CAAC,CAC9C,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["ExtractTransactionTask_exports", "__export", "ExtractTransactionTask", "__toCommonJS", "import_device_management_kit", "import_Psbt", "import_Varint", "_args", "_valueParser", "psbt", "transaction", "psbtVersion", "value", "isSegwit", "inputCount", "witnessBuffer", "i", "v", "outputIndex", "scriptSig", "sequence", "witness", "outputCount", "o", "amount", "script", "locktime"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var P=Object.create;var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(o,
|
|
1
|
+
"use strict";var P=Object.create;var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(o,f,c,a)=>{if(f&&typeof f=="object"||typeof f=="function")for(let n of k(f))!R.call(o,n)&&n!==c&&l(o,n,{get:()=>f[n],enumerable:!(a=x(f,n))||a.enumerable});return o};var S=(o,f,c)=>(c=o!=null?P(B(o)):{},h(f||!o||!o.__esModule?l(c,"default",{value:o,enumerable:!0}):c,o));var m=require("@ledgerhq/device-management-kit"),E=S(require("bitcoinjs-lib")),t=require("purify-ts"),u=require("../../../psbt/model/Psbt"),b=require("./DefaultPsbtMapper");describe("DefaultPsbtMapper tests",()=>{const o="70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000",f="cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=",c=(0,m.hexaStringToBuffer)(o),a=vi.fn(),n={deserialize:a},A=vi.fn(),d={normalize:A},s=()=>new u.Psbt;beforeEach(()=>{vi.resetAllMocks()}),it("Map hex string",()=>{const e=s(),r=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(o);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map base64 string",()=>{const e=s(),r=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(f);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map bjs transaction",()=>{const e=s(),r=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(E.Psbt.fromHex(o));expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map byte array",()=>{const e=s(),r=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map invalid string",()=>{const e=s(),r=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map("some non base64 string!");expect(p.isRight()).toStrictEqual(!1)}),it("Parser failure",()=>{const e=s();a.mockReturnValueOnce((0,t.Left)(new Error)),A.mockReturnValueOnce((0,t.Right)(e));const i=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(i.isRight()).toStrictEqual(!1)}),it("Normalizer failure",()=>{const e=s();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Left)(new Error));const i=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(i.isRight()).toStrictEqual(!1)})});
|
|
2
2
|
//# sourceMappingURL=DefaultPsbtMapper.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/psbt/service/psbt/DefaultPsbtMapper.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize = vi.fn();\n const mockSerializer: DefaultPsbtSerializer = {\n deserialize: mockDeserialize,\n } as unknown as DefaultPsbtSerializer;\n\n // Mock PsbtV2Normalizer\n const mockNormalize = vi.fn();\n const mockNormalizer: DefaultPsbtV2Normalizer = {\n normalize: mockNormalize,\n } as unknown as DefaultPsbtV2Normalizer;\n\n // Mocked psbt\n const createPsbt = () => new Psbt();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Map hex string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_HEX);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map base64 string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_BASE64);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map bjs transaction\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(bjs.Psbt.fromHex(SERIALIZED_PSBT_V0_HEX));\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map byte array\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map invalid string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(\"some
|
|
5
|
-
"mappings": "wdAAA,IAAAA,EAAmC,2CACnCC,EAAqB,4BACrBC,EAA4B,qBAE5BC,EAAqB,qCAErBC,EAAkC,+BAIlC,SAAS,0BAA2B,IAAM,CAExC,MAAMC,EACJ,ymCACIC,EACJ,mvBACIC,KAAqB,sBAAmBF,CAAsB,EAG9DG,EAAkB,GAAG,GAAG,EACxBC,EAAwC,CAC5C,YAAaD,CACf,EAGME,EAAgB,GAAG,GAAG,EACtBC,EAA0C,CAC9C,UAAWD,CACb,EAGME,EAAa,IAAM,IAAI,OAE7B,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,GAAG,iBAAkB,IAAM,CAEzB,MAAMC,EAAaD,EAAW,EACxBE,EAAiBF,EAAW,EAClCJ,EAAgB,uBAAoB,SAAMK,CAAU,CAAC,EACrDH,EAAc,uBAAoB,SAAMI,CAAc,CAAC,EAIvD,MAAMC,EAHS,IAAI,oBAAkBN,EAAgBE,CAAc,EAG7C,IAAIN,CAAsB,EAGhD,OAAOG,CAAe,EAAE,qBAAqBD,CAAkB,EAC/D,OAAOG,CAAa,EAAE,qBAAqBG,CAAU,EACrD,OAAOE,EAAO,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC3C,OAAOA,EAAO,aAAa,CAAC,EAAE,cAAcD,CAAc,CAC5D,CAAC,EAED,GAAG,oBAAqB,IAAM,CAE5B,MAAMD,EAAaD,EAAW,EACxBE,EAAiBF,EAAW,EAClCJ,EAAgB,uBAAoB,SAAMK,CAAU,CAAC,EACrDH,EAAc,uBAAoB,SAAMI,CAAc,CAAC,EAIvD,MAAMC,EAHS,IAAI,oBAAkBN,EAAgBE,CAAc,EAG7C,IAAIL,CAAyB,EAGnD,OAAOE,CAAe,EAAE,qBAAqBD,CAAkB,EAC/D,OAAOG,CAAa,EAAE,qBAAqBG,CAAU,EACrD,OAAOE,EAAO,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC3C,OAAOA,EAAO,aAAa,CAAC,EAAE,cAAcD,CAAc,CAC5D,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMD,EAAaD,EAAW,EACxBE,EAAiBF,EAAW,EAClCJ,EAAgB,uBAAoB,SAAMK,CAAU,CAAC,EACrDH,EAAc,uBAAoB,SAAMI,CAAc,CAAC,EAIvD,MAAMC,EAHS,IAAI,oBAAkBN,EAAgBE,CAAc,EAG7C,IAAIV,EAAI,KAAK,QAAQI,CAAsB,CAAC,EAGlE,OAAOG,CAAe,EAAE,qBAAqBD,CAAkB,EAC/D,OAAOG,CAAa,EAAE,qBAAqBG,CAAU,EACrD,OAAOE,EAAO,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC3C,OAAOA,EAAO,aAAa,CAAC,EAAE,cAAcD,CAAc,CAC5D,CAAC,EAED,GAAG,iBAAkB,IAAM,CAEzB,MAAMD,EAAaD,EAAW,EACxBE,EAAiBF,EAAW,EAClCJ,EAAgB,uBAAoB,SAAMK,CAAU,CAAC,EACrDH,EAAc,uBAAoB,SAAMI,CAAc,CAAC,EAIvD,MAAMC,EAHS,IAAI,oBAAkBN,EAAgBE,CAAc,EAG7C,IAAIJ,CAAkB,EAG5C,OAAOC,CAAe,EAAE,qBAAqBD,CAAkB,EAC/D,OAAOG,CAAa,EAAE,qBAAqBG,CAAU,EACrD,OAAOE,EAAO,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC3C,OAAOA,EAAO,aAAa,CAAC,EAAE,cAAcD,CAAc,CAC5D,CAAC,EAED,GAAG,qBAAsB,IAAM,CAE7B,MAAMD,EAAaD,EAAW,EACxBE,EAAiBF,EAAW,EAClCJ,EAAgB,uBAAoB,SAAMK,CAAU,CAAC,EACrDH,EAAc,uBAAoB,SAAMI,CAAc,CAAC,EAIvD,MAAMC,EAHS,IAAI,oBAAkBN,EAAgBE,CAAc,EAG7C,IAAI,
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize = vi.fn();\n const mockSerializer: DefaultPsbtSerializer = {\n deserialize: mockDeserialize,\n } as unknown as DefaultPsbtSerializer;\n\n // Mock PsbtV2Normalizer\n const mockNormalize = vi.fn();\n const mockNormalizer: DefaultPsbtV2Normalizer = {\n normalize: mockNormalize,\n } as unknown as DefaultPsbtV2Normalizer;\n\n // Mocked psbt\n const createPsbt = () => new Psbt();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Map hex string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_HEX);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map base64 string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_BASE64);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map bjs transaction\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(bjs.Psbt.fromHex(SERIALIZED_PSBT_V0_HEX));\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map byte array\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map invalid string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(\"some non base64 string!\");\n\n // Then\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Parser failure\", () => {\n // Given\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Left(new Error()));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Normalizer failure\", () => {\n // Given\n const parsedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Left(new Error()));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_device_management_kit", "bjs", "import_purify_ts", "import_Psbt", "import_DefaultPsbtMapper", "SERIALIZED_PSBT_V0_HEX", "SERIALIZED_PSBT_V0_BASE64", "SERIALIZED_PSBT_V0", "mockDeserialize", "mockSerializer", "mockNormalize", "mockNormalizer", "createPsbt", "parsedPsbt", "normalizedPsbt", "mapped"]
|
|
7
7
|
}
|
package/lib/cjs/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{bufferToHexaString as
|
|
1
|
+
import{bufferToHexaString as U,ByteArrayBuilder as p,CommandResultFactory as P}from"@ledgerhq/device-management-kit";import{PsbtGlobal as u,PsbtIn as o,PsbtOut as I}from"../../psbt/model/Psbt";import{encodeVarint as l}from"../../utils/Varint";class h{constructor(e,a){this._args=e;this._valueParser=a}run(){const{psbt:e}=this._args,a=new p,g=e.getGlobalValue(u.VERSION).chain(t=>this._valueParser.getUInt32LE(t.data)).orDefault(0);a.add32BitUIntToData(g,!1);const d=e.getInputValue(0,o.WITNESS_UTXO).isJust();d&&a.addBufferToData(Uint8Array.from([0,1]));const f=e.getGlobalValue(u.INPUT_COUNT).chain(t=>this._valueParser.getVarint(t.data)).orDefault(0);a.addBufferToData(l(f).extract());const c=new p;for(let t=0;t<f;t++){a.addBufferToData(e.getInputValue(t,o.PREVIOUS_TXID).mapOrDefault(r=>r.data,new Uint8Array));const i=e.getInputValue(t,o.OUTPUT_INDEX).chain(r=>this._valueParser.getUInt32LE(r.data)).orDefault(0);a.add32BitUIntToData(i,!1);const n=e.getInputValue(t,o.FINAL_SCRIPTSIG).mapOrDefault(r=>r.data,Uint8Array.from([]));a.addBufferToData(l(n.length).extract()),a.addBufferToData(n);const s=e.getInputValue(t,o.SEQUENCE).chain(r=>this._valueParser.getUInt32LE(r.data)).orDefault(0);if(a.add32BitUIntToData(s,!1),d){const r=e.getInputValue(t,o.FINAL_SCRIPTWITNESS).mapOrDefault(m=>m.data,Uint8Array.from([]));c.addBufferToData(r)}}const T=e.getGlobalValue(u.OUTPUT_COUNT).chain(t=>this._valueParser.getVarint(t.data)).orDefault(0);a.addBufferToData(l(T).extract());for(let t=0;t<T;t++){const i=e.getOutputValue(t,I.AMOUNT).chain(s=>this._valueParser.getInt64LE(s.data)).orDefault(0n),n=e.getOutputValue(t,I.SCRIPT).mapOrDefault(s=>s.data,new Uint8Array);a.add64BitIntToData(i,!1),a.addBufferToData(l(n.length).extract()),a.addBufferToData(n)}a.addBufferToData(c.build());const D=e.getGlobalValue(u.FALLBACK_LOCKTIME).chain(t=>this._valueParser.getUInt32LE(t.data)).orDefault(0);return a.add32BitUIntToData(D,!1),P({data:U(a.build())})}}export{h as ExtractTransactionTask};
|
|
2
2
|
//# sourceMappingURL=ExtractTransactionTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ExtractTransactionTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport {\n type Psbt,\n PsbtGlobal,\n PsbtIn,\n PsbtOut,\n} from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\ntype ExtractTransactionTaskArgs = {\n psbt: Psbt;\n};\n\nexport class ExtractTransactionTask {\n constructor(\n private readonly _args: ExtractTransactionTaskArgs,\n private readonly _valueParser: ValueParser,\n ) {}\n\n /**\n * Processes a PSBT (Partially Signed Bitcoin Transaction) and constructs a finalized Bitcoin transaction.\n *\n * @return {CommandResult<HexaString, BtcErrorCodes>} A `CommandResult` object containing the resulting serialized transaction\n * as a hexadecimal string (without the \"0x\" prefix) on success, or an error code (`BtcErrorCodes`) on failure.\n */\n run(): CommandResult<HexaString, BtcErrorCodes> {\n const { psbt } = this._args;\n const transaction = new ByteArrayBuilder();\n const psbtVersion = psbt\n .getGlobalValue(PsbtGlobal.VERSION)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(psbtVersion, false);\n const isSegwit = psbt.getInputValue(0, PsbtIn.WITNESS_UTXO).isJust();\n if (isSegwit) {\n transaction.addBufferToData(Uint8Array.from([0, 0x01]));\n }\n const inputCount = psbt\n .getGlobalValue(PsbtGlobal.INPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n\n transaction.addBufferToData(encodeVarint(inputCount).extract()!);\n const witnessBuffer = new ByteArrayBuilder();\n for (let i = 0; i < inputCount; i++) {\n transaction.addBufferToData(\n psbt\n .getInputValue(i, PsbtIn.PREVIOUS_TXID)\n .mapOrDefault((v) => v.data,
|
|
5
|
-
"mappings": "AAAA,OACE,sBAAAA,EACA,oBAAAC,EAEA,wBAAAC,MAEK,kCAGP,OAEE,cAAAC,EACA,UAAAC,EACA,WAAAC,MACK,4BAEP,OAAS,gBAAAC,MAAoB,yBAMtB,MAAMC,CAAuB,CAClC,YACmBC,EACAC,EACjB,CAFiB,WAAAD,EACA,kBAAAC,CAChB,CAQH,KAAgD,CAC9C,KAAM,CAAE,KAAAC,CAAK,EAAI,KAAK,MAChBC,EAAc,IAAIV,EAClBW,EAAcF,EACjB,eAAeP,EAAW,OAAO,EACjC,MAAOU,GAAU,KAAK,aAAa,YAAYA,EAAM,IAAI,CAAC,EAC1D,UAAU,CAAC,EACdF,EAAY,mBAAmBC,EAAa,EAAK,EACjD,MAAME,EAAWJ,EAAK,cAAc,EAAGN,EAAO,YAAY,EAAE,OAAO,EAC/DU,GACFH,EAAY,gBAAgB,WAAW,KAAK,CAAC,EAAG,CAAI,CAAC,CAAC,EAExD,MAAMI,EAAaL,EAChB,eAAeP,EAAW,WAAW,EACrC,MAAOU,GAAU,KAAK,aAAa,UAAUA,EAAM,IAAI,CAAC,EACxD,UAAU,CAAC,EAEdF,EAAY,gBAAgBL,EAAaS,CAAU,EAAE,QAAQ,CAAE,EAC/D,MAAMC,EAAgB,IAAIf,EAC1B,QAASgB,EAAI,EAAGA,EAAIF,EAAYE,IAAK,CACnCN,EAAY,gBACVD,EACG,cAAcO,EAAGb,EAAO,aAAa,EACrC,aAAcc,GAAMA,EAAE,KAAM,
|
|
4
|
+
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport {\n type Psbt,\n PsbtGlobal,\n PsbtIn,\n PsbtOut,\n} from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\ntype ExtractTransactionTaskArgs = {\n psbt: Psbt;\n};\n\nexport class ExtractTransactionTask {\n constructor(\n private readonly _args: ExtractTransactionTaskArgs,\n private readonly _valueParser: ValueParser,\n ) {}\n\n /**\n * Processes a PSBT (Partially Signed Bitcoin Transaction) and constructs a finalized Bitcoin transaction.\n *\n * @return {CommandResult<HexaString, BtcErrorCodes>} A `CommandResult` object containing the resulting serialized transaction\n * as a hexadecimal string (without the \"0x\" prefix) on success, or an error code (`BtcErrorCodes`) on failure.\n */\n run(): CommandResult<HexaString, BtcErrorCodes> {\n const { psbt } = this._args;\n const transaction = new ByteArrayBuilder();\n const psbtVersion = psbt\n .getGlobalValue(PsbtGlobal.VERSION)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(psbtVersion, false);\n const isSegwit = psbt.getInputValue(0, PsbtIn.WITNESS_UTXO).isJust();\n if (isSegwit) {\n transaction.addBufferToData(Uint8Array.from([0, 0x01]));\n }\n const inputCount = psbt\n .getGlobalValue(PsbtGlobal.INPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n\n transaction.addBufferToData(encodeVarint(inputCount).extract()!);\n const witnessBuffer = new ByteArrayBuilder();\n for (let i = 0; i < inputCount; i++) {\n transaction.addBufferToData(\n psbt\n .getInputValue(i, PsbtIn.PREVIOUS_TXID)\n .mapOrDefault((v) => v.data, new Uint8Array()),\n );\n const outputIndex = psbt\n .getInputValue(i, PsbtIn.OUTPUT_INDEX)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(outputIndex, false);\n const scriptSig = psbt\n .getInputValue(i, PsbtIn.FINAL_SCRIPTSIG)\n .mapOrDefault((v) => v.data, Uint8Array.from([]));\n transaction.addBufferToData(encodeVarint(scriptSig.length).extract()!);\n transaction.addBufferToData(scriptSig);\n const sequence = psbt\n .getInputValue(i, PsbtIn.SEQUENCE)\n .chain((value) => this._valueParser.getUInt32LE(value.data))\n .orDefault(0);\n transaction.add32BitUIntToData(sequence, false);\n if (isSegwit) {\n const witness = psbt\n .getInputValue(i, PsbtIn.FINAL_SCRIPTWITNESS)\n .mapOrDefault((v) => v.data, Uint8Array.from([]));\n witnessBuffer.addBufferToData(witness);\n }\n }\n const outputCount = psbt\n .getGlobalValue(PsbtGlobal.OUTPUT_COUNT)\n .chain((value) => this._valueParser.getVarint(value.data))\n .orDefault(0);\n transaction.addBufferToData(encodeVarint(outputCount).extract()!);\n for (let o = 0; o < outputCount; o++) {\n const amount = psbt\n .getOutputValue(o, PsbtOut.AMOUNT)\n .chain((value) => this._valueParser.getInt64LE(value.data))\n .orDefault(0n);\n const script = psbt\n .getOutputValue(o, PsbtOut.SCRIPT)\n .mapOrDefault((v) => v.data, new Uint8Array());\n transaction.add64BitIntToData(amount, false);\n transaction.addBufferToData(encodeVarint(script.length).extract()!);\n transaction.addBufferToData(script);\n }\n transaction.addBufferToData(witnessBuffer.build());\n const locktime = psbt\n .getGlobalValue(PsbtGlobal.FALLBACK_LOCKTIME)\n .chain((v) => this._valueParser.getUInt32LE(v.data))\n .orDefault(0);\n transaction.add32BitUIntToData(locktime, false);\n return CommandResultFactory({\n data: bufferToHexaString(transaction.build()),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["bufferToHexaString", "ByteArrayBuilder", "CommandResultFactory", "PsbtGlobal", "PsbtIn", "PsbtOut", "encodeVarint", "ExtractTransactionTask", "_args", "_valueParser", "psbt", "transaction", "psbtVersion", "value", "isSegwit", "inputCount", "witnessBuffer", "i", "v", "outputIndex", "scriptSig", "sequence", "witness", "outputCount", "o", "amount", "script", "locktime"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{hexaStringToBuffer as m}from"@ledgerhq/device-management-kit";import*as u from"bitcoinjs-lib";import{Left as d,Right as n}from"purify-ts";import{Psbt as P}from"../../../psbt/model/Psbt";import{DefaultPsbtMapper as i}from"./DefaultPsbtMapper";describe("DefaultPsbtMapper tests",()=>{const b="70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000",l="cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=",A=m(b),t=vi.fn(),
|
|
1
|
+
import{hexaStringToBuffer as m}from"@ledgerhq/device-management-kit";import*as u from"bitcoinjs-lib";import{Left as d,Right as n}from"purify-ts";import{Psbt as P}from"../../../psbt/model/Psbt";import{DefaultPsbtMapper as i}from"./DefaultPsbtMapper";describe("DefaultPsbtMapper tests",()=>{const b="70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000",l="cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=",A=m(b),t=vi.fn(),s={deserialize:t},c=vi.fn(),f={normalize:c},o=()=>new P;beforeEach(()=>{vi.resetAllMocks()}),it("Map hex string",()=>{const e=o(),a=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(n(a));const r=new i(s,f).map(b);expect(t).toHaveBeenCalledWith(A),expect(c).toHaveBeenCalledWith(e),expect(r.isRight()).toStrictEqual(!0),expect(r.unsafeCoerce()).toStrictEqual(a)}),it("Map base64 string",()=>{const e=o(),a=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(n(a));const r=new i(s,f).map(l);expect(t).toHaveBeenCalledWith(A),expect(c).toHaveBeenCalledWith(e),expect(r.isRight()).toStrictEqual(!0),expect(r.unsafeCoerce()).toStrictEqual(a)}),it("Map bjs transaction",()=>{const e=o(),a=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(n(a));const r=new i(s,f).map(u.Psbt.fromHex(b));expect(t).toHaveBeenCalledWith(A),expect(c).toHaveBeenCalledWith(e),expect(r.isRight()).toStrictEqual(!0),expect(r.unsafeCoerce()).toStrictEqual(a)}),it("Map byte array",()=>{const e=o(),a=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(n(a));const r=new i(s,f).map(A);expect(t).toHaveBeenCalledWith(A),expect(c).toHaveBeenCalledWith(e),expect(r.isRight()).toStrictEqual(!0),expect(r.unsafeCoerce()).toStrictEqual(a)}),it("Map invalid string",()=>{const e=o(),a=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(n(a));const r=new i(s,f).map("some non base64 string!");expect(r.isRight()).toStrictEqual(!1)}),it("Parser failure",()=>{const e=o();t.mockReturnValueOnce(d(new Error)),c.mockReturnValueOnce(n(e));const p=new i(s,f).map(A);expect(t).toHaveBeenCalledWith(A),expect(p.isRight()).toStrictEqual(!1)}),it("Normalizer failure",()=>{const e=o();t.mockReturnValueOnce(n(e)),c.mockReturnValueOnce(d(new Error));const p=new i(s,f).map(A);expect(t).toHaveBeenCalledWith(A),expect(c).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!1)})});
|
|
2
2
|
//# sourceMappingURL=DefaultPsbtMapper.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/psbt/service/psbt/DefaultPsbtMapper.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize = vi.fn();\n const mockSerializer: DefaultPsbtSerializer = {\n deserialize: mockDeserialize,\n } as unknown as DefaultPsbtSerializer;\n\n // Mock PsbtV2Normalizer\n const mockNormalize = vi.fn();\n const mockNormalizer: DefaultPsbtV2Normalizer = {\n normalize: mockNormalize,\n } as unknown as DefaultPsbtV2Normalizer;\n\n // Mocked psbt\n const createPsbt = () => new Psbt();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Map hex string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_HEX);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map base64 string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_BASE64);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map bjs transaction\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(bjs.Psbt.fromHex(SERIALIZED_PSBT_V0_HEX));\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map byte array\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map invalid string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(\"some
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize = vi.fn();\n const mockSerializer: DefaultPsbtSerializer = {\n deserialize: mockDeserialize,\n } as unknown as DefaultPsbtSerializer;\n\n // Mock PsbtV2Normalizer\n const mockNormalize = vi.fn();\n const mockNormalizer: DefaultPsbtV2Normalizer = {\n normalize: mockNormalize,\n } as unknown as DefaultPsbtV2Normalizer;\n\n // Mocked psbt\n const createPsbt = () => new Psbt();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Map hex string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_HEX);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map base64 string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_BASE64);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map bjs transaction\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(bjs.Psbt.fromHex(SERIALIZED_PSBT_V0_HEX));\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map byte array\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map invalid string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(\"some non base64 string!\");\n\n // Then\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Parser failure\", () => {\n // Given\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Left(new Error()));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Normalizer failure\", () => {\n // Given\n const parsedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Left(new Error()));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["hexaStringToBuffer", "bjs", "Left", "Right", "Psbt", "DefaultPsbtMapper", "SERIALIZED_PSBT_V0_HEX", "SERIALIZED_PSBT_V0_BASE64", "SERIALIZED_PSBT_V0", "mockDeserialize", "mockSerializer", "mockNormalize", "mockNormalizer", "createPsbt", "parsedPsbt", "normalizedPsbt", "mapped"]
|
|
7
7
|
}
|
package/lib/esm/package.json
CHANGED