request-address
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -6,2 +6,3 @@ export declare enum MessageVersion { | ||
RequestAddress = "requestAddress", | ||
VerifyAddress = "verifyAddress", | ||
Address = "address" | ||
@@ -22,2 +23,7 @@ } | ||
}; | ||
export declare type VerifyAddressV0Message = { | ||
version: MessageVersion.V0; | ||
type: V0MessageType.VerifyAddress; | ||
bitcoinAddress: string; | ||
}; | ||
export declare type AddressV0Message = { | ||
@@ -30,5 +36,5 @@ version: MessageVersion.V0; | ||
}; | ||
export declare type Message = RequestAddressV0Message | AddressV0Message; | ||
export declare type Message = RequestAddressV0Message | VerifyAddressV0Message | AddressV0Message; | ||
export declare function serializeMessage(message: Message): string; | ||
export declare function parseMessage(value: any): Message; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -12,2 +12,3 @@ "use strict"; | ||
V0MessageType["RequestAddress"] = "requestAddress"; | ||
V0MessageType["VerifyAddress"] = "verifyAddress"; | ||
V0MessageType["Address"] = "address"; | ||
@@ -42,49 +43,61 @@ })(V0MessageType = exports.V0MessageType || (exports.V0MessageType = {})); | ||
const { type } = object; | ||
if (!(0, utils_1.isOneOf)(type, V0MessageType.RequestAddress, V0MessageType.Address)) { | ||
if (!(0, utils_1.isOneOf)(type, V0MessageType.RequestAddress, V0MessageType.VerifyAddress, V0MessageType.Address)) { | ||
throw new Error('invalid type'); | ||
} | ||
switch (type) { | ||
case V0MessageType.RequestAddress: | ||
const { withMessageSignature } = object; | ||
if (!(0, utils_1.isString)(withMessageSignature) && !(0, utils_1.isNullish)(withMessageSignature)) { | ||
throw new Error('message signature indicator invalid'); | ||
} | ||
const { withExtendedPublicKey } = object; | ||
if (!(0, utils_1.isBoolean)(withExtendedPublicKey) && !(0, utils_1.isNullish)(withExtendedPublicKey)) { | ||
throw new Error('extended public key indicator invalid'); | ||
} | ||
const { withScriptType } = object; | ||
if (!(0, utils_1.isOneOf)(withScriptType, ...Object.values(RequestAddressV0MessageScriptType)) && !(0, utils_1.isNullish)(withScriptType)) { | ||
throw new Error('script type indicator invalid'); | ||
} | ||
return { | ||
version, | ||
type, | ||
withMessageSignature, | ||
withExtendedPublicKey, | ||
withScriptType, | ||
}; | ||
case V0MessageType.Address: | ||
const { bitcoinAddress } = object; | ||
if (!(0, utils_1.isString)(bitcoinAddress)) { | ||
throw new Error('bitcoin address missing'); | ||
} | ||
const { signature } = object; | ||
if (!(0, utils_1.isString)(signature) && !(0, utils_1.isNullish)(signature)) { | ||
throw new Error('signature invalid'); | ||
} | ||
const { extendedPublicKey } = object; | ||
if (!(0, utils_1.isString)(extendedPublicKey) && !(0, utils_1.isNullish)(extendedPublicKey)) { | ||
throw new Error('extended public key invalid'); | ||
} | ||
return { | ||
version, | ||
type, | ||
bitcoinAddress, | ||
signature, | ||
extendedPublicKey, | ||
}; | ||
default: | ||
throw new Error('unsupported type'); | ||
if (type === V0MessageType.RequestAddress) { | ||
const { withMessageSignature } = object; | ||
if (!(0, utils_1.isString)(withMessageSignature) && !(0, utils_1.isNullish)(withMessageSignature)) { | ||
throw new Error('message signature indicator invalid'); | ||
} | ||
const { withExtendedPublicKey } = object; | ||
if (!(0, utils_1.isBoolean)(withExtendedPublicKey) && !(0, utils_1.isNullish)(withExtendedPublicKey)) { | ||
throw new Error('extended public key indicator invalid'); | ||
} | ||
const { withScriptType } = object; | ||
if (!(0, utils_1.isOneOf)(withScriptType, ...Object.values(RequestAddressV0MessageScriptType)) && !(0, utils_1.isNullish)(withScriptType)) { | ||
throw new Error('script type indicator invalid'); | ||
} | ||
return { | ||
version, | ||
type, | ||
withMessageSignature, | ||
withExtendedPublicKey, | ||
withScriptType, | ||
}; | ||
} | ||
else if (type === V0MessageType.VerifyAddress) { | ||
const { bitcoinAddress } = object; | ||
if (!(0, utils_1.isString)(bitcoinAddress)) { | ||
throw new Error('bitcoin address missing'); | ||
} | ||
return { | ||
version, | ||
type, | ||
bitcoinAddress, | ||
}; | ||
} | ||
else if (type === V0MessageType.Address) { | ||
const { bitcoinAddress } = object; | ||
if (!(0, utils_1.isString)(bitcoinAddress)) { | ||
throw new Error('bitcoin address missing'); | ||
} | ||
const { signature } = object; | ||
if (!(0, utils_1.isString)(signature) && !(0, utils_1.isNullish)(signature)) { | ||
throw new Error('signature invalid'); | ||
} | ||
const { extendedPublicKey } = object; | ||
if (!(0, utils_1.isString)(extendedPublicKey) && !(0, utils_1.isNullish)(extendedPublicKey)) { | ||
throw new Error('extended public key invalid'); | ||
} | ||
return { | ||
version, | ||
type, | ||
bitcoinAddress, | ||
signature, | ||
extendedPublicKey, | ||
}; | ||
} | ||
else { | ||
throw new Error('unsupported type'); | ||
} | ||
} | ||
@@ -91,0 +104,0 @@ throw new Error('unsupported version'); |
{ | ||
"name": "request-address", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "Request bitcoin address api messages", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -37,2 +37,12 @@ # `request-address` | ||
A user can be prompted to verify received address with `verifyAddress`: | ||
```json | ||
{ | ||
"version": "0", | ||
"type": "verifyAddress", | ||
"bitcoinAddress": "bc1qfd8phxz2vcazlfjtxqef94xjwulf5xyjghrxge" | ||
} | ||
``` | ||
## API | ||
@@ -55,2 +65,3 @@ | ||
| RequestAddressV0Message | ||
| VerifyAddressV0Message | ||
| AddressV0Message; | ||
@@ -71,2 +82,12 @@ ``` | ||
### `VerifyAddressV0Message` | ||
```ts | ||
type VerifyAddressV0Message = { | ||
version: MessageVersion.V0, | ||
type: V0MessageType.VerifyAddress, | ||
bitcoinAddress: string, | ||
}; | ||
``` | ||
### `AddressV0Message` | ||
@@ -100,2 +121,3 @@ | ||
RequestAddress = 'requestAddress', | ||
VerifyAddress = 'verifyAddress', | ||
Address = 'address', | ||
@@ -102,0 +124,0 @@ } |
Sorry, the diff of this file is not supported yet
11854
173
134