diff --git a/src/payments/embed.js b/src/payments/embed.js index 0e2a0ae..800c8de 100644 --- a/src/payments/embed.js +++ b/src/payments/embed.js @@ -1,14 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +const networks_1 = require("../networks"); const bscript = require("../script"); const lazy = require("./lazy"); -const networks_1 = require("../networks"); const typef = require('typeforce'); const OPS = bscript.OPS; function stacksEqual(a, b) { if (a.length !== b.length) return false; - return a.every(function (x, i) { + return a.every((x, i) => { return x.equals(b[i]); }); } @@ -24,12 +24,12 @@ function p2data(a, opts) { }, a); const network = a.network || networks_1.bitcoin; const o = { network }; - lazy.prop(o, 'output', function () { + lazy.prop(o, 'output', () => { if (!a.data) return; return bscript.compile([OPS.OP_RETURN].concat(a.data)); }); - lazy.prop(o, 'data', function () { + lazy.prop(o, 'data', () => { if (!a.output) return; return bscript.decompile(a.output).slice(1); diff --git a/ts_src/payments/embed.ts b/ts_src/payments/embed.ts index d7a2b0f..38a8162 100644 --- a/ts_src/payments/embed.ts +++ b/ts_src/payments/embed.ts @@ -1,14 +1,15 @@ -import { Payment, PaymentOpts } from './index'; +import { bitcoin as BITCOIN_NETWORK } from '../networks'; import * as bscript from '../script'; +import { Payment, PaymentOpts, Stack } from './index'; import * as lazy from './lazy'; -import { bitcoin as BITCOIN_NETWORK } from '../networks'; + const typef = require('typeforce'); const OPS = bscript.OPS; -function stacksEqual(a: Array, b: Array): boolean { +function stacksEqual(a: Buffer[], b: Buffer[]): boolean { if (a.length !== b.length) return false; - return a.every(function(x, i) { + return a.every((x, i) => { return x.equals(b[i]); }); } @@ -28,15 +29,13 @@ export function p2data(a: Payment, opts?: PaymentOpts): Payment { ); const network = a.network || BITCOIN_NETWORK; - const o = { network }; + const o = { network } as Payment; - lazy.prop(o, 'output', function() { + lazy.prop(o, 'output', () => { if (!a.data) return; - return bscript.compile( - (>[OPS.OP_RETURN]).concat(a.data), - ); + return bscript.compile(([OPS.OP_RETURN] as Stack).concat(a.data)); }); - lazy.prop(o, 'data', function() { + lazy.prop(o, 'data', () => { if (!a.output) return; return bscript.decompile(a.output)!.slice(1); }); @@ -50,7 +49,7 @@ export function p2data(a: Payment, opts?: PaymentOpts): Payment { if (!chunks!.slice(1).every(typef.Buffer)) throw new TypeError('Output is invalid'); - if (a.data && !stacksEqual(a.data, >o.data)) + if (a.data && !stacksEqual(a.data, o.data as Buffer[])) throw new TypeError('Data mismatch'); } } diff --git a/ts_src/payments/index.ts b/ts_src/payments/index.ts index 6727eeb..4f6eb75 100644 --- a/ts_src/payments/index.ts +++ b/ts_src/payments/index.ts @@ -10,18 +10,18 @@ import { p2wsh } from './p2wsh'; export interface Payment { network?: Network; output?: Buffer; - data?: Array; + data?: Buffer[]; m?: number; n?: number; - pubkeys?: Array; + pubkeys?: Buffer[]; input?: Buffer; - signatures?: Array; + signatures?: Buffer[]; pubkey?: Buffer; signature?: Buffer; address?: string; hash?: Buffer; redeem?: Payment; - witness?: Array; + witness?: Buffer[]; } export interface PaymentOpts { @@ -29,6 +29,9 @@ export interface PaymentOpts { allowIncomplete?: boolean; } +export type StackElement = Buffer | number; +export type Stack = StackElement[]; + export { embed, p2ms, p2pk, p2pkh, p2sh, p2wpkh, p2wsh }; // TODO diff --git a/types/payments/index.d.ts b/types/payments/index.d.ts index 5afc847..3009bef 100644 --- a/types/payments/index.d.ts +++ b/types/payments/index.d.ts @@ -10,21 +10,23 @@ import { p2wsh } from './p2wsh'; export interface Payment { network?: Network; output?: Buffer; - data?: Array; + data?: Buffer[]; m?: number; n?: number; - pubkeys?: Array; + pubkeys?: Buffer[]; input?: Buffer; - signatures?: Array; + signatures?: Buffer[]; pubkey?: Buffer; signature?: Buffer; address?: string; hash?: Buffer; redeem?: Payment; - witness?: Array; + witness?: Buffer[]; } export interface PaymentOpts { validate?: boolean; allowIncomplete?: boolean; } +export declare type StackElement = Buffer | number; +export declare type Stack = StackElement[]; export { embed, p2ms, p2pk, p2pkh, p2sh, p2wpkh, p2wsh };