mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 23:58:06 +01:00
33522a7b46
We use the `@keystonehq/bc-ur-registry` package for integration with Keystone devices. This package is peculiar as it not only ships with JavaScript files but also original TypeScript files. When we started adding support for TypeScript into the build system, we realized that the TypeScript files were apparently developed using a different TypeScript config than we use and therefore resulted in errors in our build process. So we added a patch which removed these TypeScript files so that we would fall back to using the compiled JavaScript files. This removed type information but fixed our build system. Since then, we've bumped this package and the files we removed have changed, so the patch is no longer valid. This commit recreates the patch so that we no longer get warnings from `patch-package`.
1974 lines
62 KiB
Diff
1974 lines
62 KiB
Diff
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/Bytes.ts b/node_modules/@keystonehq/bc-ur-registry/src/Bytes.ts
|
|
deleted file mode 100644
|
|
index a5f9f7d..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/Bytes.ts
|
|
+++ /dev/null
|
|
@@ -1,34 +0,0 @@
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-
|
|
-export class Bytes extends RegistryItem {
|
|
- getRegistryType = () => {
|
|
- return RegistryTypes.BYTES;
|
|
- };
|
|
-
|
|
- constructor(private bytes: Buffer) {
|
|
- super();
|
|
- }
|
|
-
|
|
- getData = () => this.bytes;
|
|
-
|
|
- toDataItem = () => {
|
|
- return new DataItem(this.bytes);
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const bytes = dataItem.getData();
|
|
- if (!bytes) {
|
|
- throw new Error(
|
|
- `#[ur-registry][Bytes][fn.fromDataItem]: decoded [dataItem][#data] is undefined: ${dataItem}`,
|
|
- );
|
|
- }
|
|
- return new Bytes(bytes);
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return Bytes.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoAccount.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoAccount.ts
|
|
deleted file mode 100644
|
|
index e6efeeb..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoAccount.ts
|
|
+++ /dev/null
|
|
@@ -1,58 +0,0 @@
|
|
-import { CryptoOutput } from '.';
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap } from './types';
|
|
-
|
|
-enum Keys {
|
|
- masterFingerprint = 1,
|
|
- outputDescriptors,
|
|
-}
|
|
-
|
|
-export class CryptoAccount extends RegistryItem {
|
|
- getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_ACCOUNT;
|
|
- };
|
|
-
|
|
- constructor(
|
|
- private masterFingerprint: Buffer,
|
|
- private outputDescriptors: CryptoOutput[],
|
|
- ) {
|
|
- super();
|
|
- }
|
|
-
|
|
- public getMasterFingerprint = () => this.masterFingerprint;
|
|
- public getOutputDescriptors = () => this.outputDescriptors;
|
|
-
|
|
- public toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- if (this.masterFingerprint) {
|
|
- map[Keys.masterFingerprint] = this.masterFingerprint.readUInt32BE(0);
|
|
- }
|
|
- if (this.outputDescriptors) {
|
|
- map[Keys.outputDescriptors] = this.outputDescriptors.map((item) =>
|
|
- item.toDataItem(),
|
|
- );
|
|
- }
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const map = dataItem.getData();
|
|
- const masterFingerprint = Buffer.alloc(4);
|
|
- const _masterFingerprint = map[Keys.masterFingerprint];
|
|
- if (_masterFingerprint) {
|
|
- masterFingerprint.writeUInt32BE(_masterFingerprint, 0);
|
|
- }
|
|
- const outputDescriptors = map[Keys.outputDescriptors] as DataItem[];
|
|
- const cryptoOutputs = outputDescriptors.map((item) =>
|
|
- CryptoOutput.fromDataItem(item),
|
|
- );
|
|
- return new CryptoAccount(masterFingerprint, cryptoOutputs);
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoAccount.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoCoinInfo.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoCoinInfo.ts
|
|
deleted file mode 100644
|
|
index 843b50c..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoCoinInfo.ts
|
|
+++ /dev/null
|
|
@@ -1,59 +0,0 @@
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap } from './types';
|
|
-
|
|
-enum Keys {
|
|
- type = '1',
|
|
- network = '2',
|
|
-}
|
|
-
|
|
-export enum Type {
|
|
- bitcoin = 0,
|
|
-}
|
|
-
|
|
-export enum Network {
|
|
- mainnet,
|
|
- testnet,
|
|
-}
|
|
-
|
|
-export class CryptoCoinInfo extends RegistryItem {
|
|
- getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_COIN_INFO;
|
|
- };
|
|
-
|
|
- constructor(private type?: Type, private network?: Network) {
|
|
- super();
|
|
- }
|
|
-
|
|
- public getType = () => {
|
|
- return this.type || Type.bitcoin;
|
|
- };
|
|
-
|
|
- public getNetwork = () => {
|
|
- return this.network || Network.mainnet;
|
|
- };
|
|
-
|
|
- public toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- if (this.type) {
|
|
- map[Keys.type] = this.type;
|
|
- }
|
|
- if (this.network) {
|
|
- map[Keys.network] = this.network;
|
|
- }
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const map = dataItem.getData();
|
|
- const type = map[Keys.type];
|
|
- const network = map[Keys.network];
|
|
- return new CryptoCoinInfo(type, network);
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoCoinInfo.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoECKey.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoECKey.ts
|
|
deleted file mode 100644
|
|
index 54c3c4b..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoECKey.ts
|
|
+++ /dev/null
|
|
@@ -1,68 +0,0 @@
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap, ICryptoKey } from './types';
|
|
-
|
|
-enum Keys {
|
|
- curve = 1,
|
|
- private,
|
|
- data,
|
|
-}
|
|
-
|
|
-export class CryptoECKey extends RegistryItem implements ICryptoKey {
|
|
- private data: Buffer;
|
|
- private curve: number | undefined;
|
|
- private privateKey: boolean | undefined;
|
|
- constructor(args: { data: Buffer; curve?: number; privateKey?: boolean }) {
|
|
- super();
|
|
- this.data = args.data;
|
|
- this.curve = args.curve;
|
|
- this.privateKey = args.privateKey || undefined;
|
|
- }
|
|
-
|
|
- isECKey = () => {
|
|
- return true;
|
|
- };
|
|
-
|
|
- public getCurve = () => this.curve || 0;
|
|
- public isPrivateKey = () => this.privateKey || false;
|
|
- public getData = () => this.data;
|
|
-
|
|
- getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_ECKEY;
|
|
- };
|
|
-
|
|
- toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- if (this.curve) {
|
|
- map[Keys.curve] = this.curve;
|
|
- }
|
|
- if (this.privateKey !== undefined) {
|
|
- map[Keys.private] = this.privateKey;
|
|
- }
|
|
- map[Keys.data] = this.data;
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- getOutputDescriptorContent = () => {
|
|
- return this.data.toString('hex');
|
|
- }
|
|
-
|
|
- static fromDataItem = (dataItem: DataItem) => {
|
|
- const map = dataItem.getData();
|
|
- const curve = map[Keys.curve];
|
|
- const privateKey = map[Keys.private];
|
|
- const data = map[Keys.data];
|
|
- if (!data) {
|
|
- throw new Error(
|
|
- `#[ur-registry][CryptoECKey][fn.fromDataItem]: decoded [dataItem][#data.data] is undefined: ${dataItem}`,
|
|
- );
|
|
- }
|
|
- return new CryptoECKey({ data, curve, privateKey });
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoECKey.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoHDKey.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoHDKey.ts
|
|
deleted file mode 100644
|
|
index 8fc2a82..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoHDKey.ts
|
|
+++ /dev/null
|
|
@@ -1,237 +0,0 @@
|
|
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
-// @ts-ignore
|
|
-import { encode } from 'bs58check';
|
|
-import { CryptoCoinInfo } from './CryptoCoinInfo';
|
|
-import { CryptoKeypath } from './CryptoKeypath';
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap, ICryptoKey } from './types';
|
|
-import { PathComponent } from './PathComponent';
|
|
-
|
|
-enum Keys {
|
|
- is_master = 1,
|
|
- is_private,
|
|
- key_data,
|
|
- chain_code,
|
|
- use_info,
|
|
- origin,
|
|
- children,
|
|
- parent_fingerprint,
|
|
- name,
|
|
- note,
|
|
-}
|
|
-
|
|
-type MasterKeyProps = {
|
|
- isMaster: true;
|
|
- key: Buffer;
|
|
- chainCode: Buffer;
|
|
-};
|
|
-
|
|
-type DeriveKeyProps = {
|
|
- isMaster: false;
|
|
- isPrivateKey?: boolean;
|
|
- key: Buffer;
|
|
- chainCode?: Buffer;
|
|
- useInfo?: CryptoCoinInfo;
|
|
- origin?: CryptoKeypath;
|
|
- children?: CryptoKeypath;
|
|
- parentFingerprint?: Buffer;
|
|
- name?: string;
|
|
- note?: string;
|
|
-};
|
|
-
|
|
-export class CryptoHDKey extends RegistryItem implements ICryptoKey {
|
|
- private master?: boolean;
|
|
- private privateKey?: boolean;
|
|
- private key?: Buffer;
|
|
- private chainCode?: Buffer;
|
|
- private useInfo?: CryptoCoinInfo;
|
|
- private origin?: CryptoKeypath;
|
|
- private children?: CryptoKeypath;
|
|
- private parentFingerprint?: Buffer;
|
|
- private name?: string;
|
|
- private note?: string;
|
|
-
|
|
- isECKey = () => {
|
|
- return false;
|
|
- };
|
|
-
|
|
- public getKey = () => this.key;
|
|
- public getChainCode = () => this.chainCode;
|
|
- public isMaster = () => this.master;
|
|
- public isPrivateKey = () => !!this.privateKey;
|
|
- public getUseInfo = () => this.useInfo;
|
|
- public getOrigin = () => this.origin;
|
|
- public getChildren = () => this.children;
|
|
- public getParentFingerprint = () => this.parentFingerprint;
|
|
- public getName = () => this.name;
|
|
- public getNote = () => this.note;
|
|
- public getBip32Key = () => {
|
|
- let version: Buffer;
|
|
- let depth: number;
|
|
- let index = 0;
|
|
- let parentFingerprint: Buffer = Buffer.alloc(4).fill(0);
|
|
- if (this.isMaster()) {
|
|
- // version bytes defined on https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#serialization-format
|
|
- version = Buffer.from('0488ADE4', 'hex');
|
|
- depth = 0;
|
|
- index = 0;
|
|
- } else {
|
|
- depth = this.getOrigin()?.getComponents().length || this.getOrigin()?.getDepth() as number;
|
|
- const paths = this.getOrigin()?.getComponents() as PathComponent[];
|
|
- const lastPath = paths[paths.length - 1];
|
|
- if (lastPath) {
|
|
- index = lastPath.isHardened() ? lastPath.getIndex()! + 0x80000000 : lastPath.getIndex()!;
|
|
- if (this.getParentFingerprint()) {
|
|
- parentFingerprint = this.getParentFingerprint() as Buffer;
|
|
- }
|
|
- }
|
|
- if (this.isPrivateKey()) {
|
|
- version = Buffer.from('0488ADE4', 'hex');
|
|
- } else {
|
|
- version = Buffer.from('0488B21E', 'hex');
|
|
- }
|
|
- }
|
|
- const depthBuffer = Buffer.alloc(1);
|
|
- depthBuffer.writeUInt8(depth, 0);
|
|
- const indexBuffer = Buffer.alloc(4);
|
|
- indexBuffer.writeUInt32BE(index, 0);
|
|
- const chainCode = this.getChainCode();
|
|
- const key = this.getKey();
|
|
- return encode(Buffer.concat([version, depthBuffer, parentFingerprint, indexBuffer, chainCode as Buffer, key as Buffer]));
|
|
- };
|
|
-
|
|
- public getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_HDKEY;
|
|
- };
|
|
-
|
|
- public getOutputDescriptorContent = () => {
|
|
- let result = '';
|
|
- if (this.getOrigin()) {
|
|
- if (this.getOrigin()?.getSourceFingerprint() && this.getOrigin()?.getPath()) {
|
|
- result += `${this.getOrigin()?.getSourceFingerprint()?.toString('hex')}/${this.getOrigin()?.getPath()}`;
|
|
- }
|
|
- }
|
|
- result += this.getBip32Key();
|
|
- if (this.getChildren()) {
|
|
- if (this.getChildren()?.getPath()) {
|
|
- result += `/${this.getChildren()?.getPath()}`;
|
|
- }
|
|
- }
|
|
- return result;
|
|
- };
|
|
-
|
|
- constructor(args: DeriveKeyProps | MasterKeyProps) {
|
|
- super();
|
|
- if (args.isMaster) {
|
|
- this.setupMasterKey(args);
|
|
- } else {
|
|
- this.setupDeriveKey(args as DeriveKeyProps);
|
|
- }
|
|
- }
|
|
-
|
|
- private setupMasterKey = (args: MasterKeyProps) => {
|
|
- this.master = true;
|
|
- this.key = args.key;
|
|
- this.chainCode = args.chainCode;
|
|
- };
|
|
-
|
|
- private setupDeriveKey = (args: DeriveKeyProps) => {
|
|
- this.master = false;
|
|
- this.privateKey = args.isPrivateKey;
|
|
- this.key = args.key;
|
|
- this.chainCode = args.chainCode;
|
|
- this.useInfo = args.useInfo;
|
|
- this.origin = args.origin;
|
|
- this.children = args.children;
|
|
- this.parentFingerprint = args.parentFingerprint;
|
|
- this.name = args.name;
|
|
- this.note = args.note;
|
|
- };
|
|
-
|
|
- public toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- if (this.master) {
|
|
- map[Keys.is_master] = true;
|
|
- map[Keys.key_data] = this.key;
|
|
- map[Keys.chain_code] = this.chainCode;
|
|
- } else {
|
|
- if (this.privateKey !== undefined) {
|
|
- map[Keys.is_private] = this.privateKey;
|
|
- }
|
|
- map[Keys.key_data] = this.key;
|
|
- if (this.chainCode) {
|
|
- map[Keys.chain_code] = this.chainCode;
|
|
- }
|
|
- if (this.useInfo) {
|
|
- const useInfo = this.useInfo.toDataItem();
|
|
- useInfo.setTag(this.useInfo.getRegistryType().getTag());
|
|
- map[Keys.use_info] = useInfo;
|
|
- }
|
|
- if (this.origin) {
|
|
- const origin = this.origin.toDataItem();
|
|
- origin.setTag(this.origin.getRegistryType().getTag());
|
|
- map[Keys.origin] = origin;
|
|
- }
|
|
- if (this.children) {
|
|
- const children = this.children.toDataItem();
|
|
- children.setTag(this.children.getRegistryType().getTag());
|
|
- map[Keys.children] = children;
|
|
- }
|
|
- if (this.parentFingerprint) {
|
|
- map[Keys.parent_fingerprint] = this.parentFingerprint.readUInt32BE(0);
|
|
- }
|
|
- if (this.name !== undefined) {
|
|
- map[Keys.name] = this.name;
|
|
- }
|
|
- if (this.note !== undefined) {
|
|
- map[Keys.note] = this.note;
|
|
- }
|
|
- }
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const map = dataItem.getData();
|
|
- const isMaster = !!map[Keys.is_master];
|
|
- const isPrivateKey = map[Keys.is_private];
|
|
- const key = map[Keys.key_data];
|
|
- const chainCode = map[Keys.chain_code];
|
|
- const useInfo = map[Keys.use_info]
|
|
- ? CryptoCoinInfo.fromDataItem(map[Keys.use_info])
|
|
- : undefined;
|
|
- const origin = map[Keys.origin]
|
|
- ? CryptoKeypath.fromDataItem(map[Keys.origin])
|
|
- : undefined;
|
|
- const children = map[Keys.children]
|
|
- ? CryptoKeypath.fromDataItem(map[Keys.children])
|
|
- : undefined;
|
|
- const _parentFingerprint = map[Keys.parent_fingerprint];
|
|
- let parentFingerprint: Buffer | undefined = undefined;
|
|
- if (_parentFingerprint) {
|
|
- parentFingerprint = Buffer.alloc(4);
|
|
- parentFingerprint.writeUInt32BE(_parentFingerprint, 0);
|
|
- }
|
|
- const name = map[Keys.name];
|
|
- const note = map[Keys.note];
|
|
-
|
|
- return new CryptoHDKey({
|
|
- isMaster,
|
|
- isPrivateKey,
|
|
- key,
|
|
- chainCode,
|
|
- useInfo,
|
|
- origin,
|
|
- children,
|
|
- parentFingerprint,
|
|
- name,
|
|
- note,
|
|
- });
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoHDKey.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoKeypath.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoKeypath.ts
|
|
deleted file mode 100644
|
|
index 00146ce..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoKeypath.ts
|
|
+++ /dev/null
|
|
@@ -1,96 +0,0 @@
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { PathComponent } from './PathComponent';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap } from './types';
|
|
-
|
|
-enum Keys {
|
|
- components = 1,
|
|
- source_fingerprint,
|
|
- depth,
|
|
-}
|
|
-
|
|
-export class CryptoKeypath extends RegistryItem {
|
|
- getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_KEYPATH;
|
|
- };
|
|
-
|
|
- constructor(
|
|
- private components: PathComponent[] = [],
|
|
- private sourceFingerprint?: Buffer,
|
|
- private depth?: number,
|
|
- ) {
|
|
- super();
|
|
- }
|
|
-
|
|
- public getPath = () => {
|
|
- if (this.components.length === 0) {
|
|
- return undefined;
|
|
- }
|
|
-
|
|
- const components = this.components.map((component) => {
|
|
- return `${component.isWildcard() ? '*' : component.getIndex()}${
|
|
- component.isHardened() ? "'" : ''
|
|
- }`;
|
|
- });
|
|
- return components.join('/');
|
|
- };
|
|
-
|
|
- public getComponents = () => this.components;
|
|
- public getSourceFingerprint = () => this.sourceFingerprint;
|
|
- public getDepth = () => this.depth;
|
|
-
|
|
- toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- const components: (number | boolean | any[])[] = [];
|
|
- this.components &&
|
|
- this.components.forEach((component) => {
|
|
- if (component.isWildcard()) {
|
|
- components.push([]);
|
|
- } else {
|
|
- components.push(component.getIndex() as number);
|
|
- }
|
|
- components.push(component.isHardened());
|
|
- });
|
|
- map[Keys.components] = components;
|
|
- if (this.sourceFingerprint) {
|
|
- map[Keys.source_fingerprint] = this.sourceFingerprint.readUInt32BE(0);
|
|
- }
|
|
- if (this.depth !== undefined) {
|
|
- map[Keys.depth] = this.depth;
|
|
- }
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- static fromDataItem = (dataItem: DataItem) => {
|
|
- const map: Record<string, any> = dataItem.getData();
|
|
- const pathComponents: PathComponent[] = [];
|
|
- const components = map[Keys.components] as any[];
|
|
- if (components) {
|
|
- for (let i = 0; i < components.length; i += 2) {
|
|
- const isHardened = components[i + 1];
|
|
- const path = components[i];
|
|
- if (typeof path === 'number') {
|
|
- pathComponents.push(
|
|
- new PathComponent({ index: path, hardened: isHardened }),
|
|
- );
|
|
- } else {
|
|
- pathComponents.push(new PathComponent({ hardened: isHardened }));
|
|
- }
|
|
- }
|
|
- }
|
|
- const _sourceFingerprint = map[Keys.source_fingerprint];
|
|
- let sourceFingerprint: Buffer | undefined;
|
|
- if (_sourceFingerprint) {
|
|
- sourceFingerprint = Buffer.alloc(4);
|
|
- sourceFingerprint.writeUInt32BE(_sourceFingerprint, 0);
|
|
- }
|
|
- const depth = map[Keys.depth];
|
|
- return new CryptoKeypath(pathComponents, sourceFingerprint, depth);
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoKeypath.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoOutput.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoOutput.ts
|
|
deleted file mode 100644
|
|
index 90abf6f..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoOutput.ts
|
|
+++ /dev/null
|
|
@@ -1,127 +0,0 @@
|
|
-import { CryptoECKey } from './CryptoECKey';
|
|
-import { CryptoHDKey } from './CryptoHDKey';
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { MultiKey } from './MultiKey';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { ScriptExpression, ScriptExpressions } from './ScriptExpression';
|
|
-
|
|
-export class CryptoOutput extends RegistryItem {
|
|
- public getRegistryType = () => {
|
|
- return RegistryTypes.CRYPTO_OUTPUT;
|
|
- };
|
|
-
|
|
- constructor(
|
|
- private scriptExpressions: ScriptExpression[],
|
|
- private cryptoKey: CryptoHDKey | CryptoECKey | MultiKey,
|
|
- ) {
|
|
- super();
|
|
- }
|
|
-
|
|
- public getCryptoKey = () => this.cryptoKey;
|
|
- public getHDKey = () => {
|
|
- if (this.cryptoKey instanceof CryptoHDKey) {
|
|
- return this.cryptoKey as CryptoHDKey;
|
|
- } else {
|
|
- return undefined;
|
|
- }
|
|
- };
|
|
- public getECKey = () => {
|
|
- if (this.cryptoKey instanceof CryptoECKey) {
|
|
- return this.cryptoKey as CryptoECKey;
|
|
- } else {
|
|
- return undefined;
|
|
- }
|
|
- };
|
|
-
|
|
- public getMultiKey = () => {
|
|
- if (this.cryptoKey instanceof MultiKey) {
|
|
- return this.cryptoKey as MultiKey;
|
|
- } else {
|
|
- return undefined;
|
|
- }
|
|
- };
|
|
-
|
|
- public getScriptExpressions = () => this.scriptExpressions;
|
|
-
|
|
- private _toOutputDescriptor = (seIndex: number): string => {
|
|
- if (seIndex >= this.scriptExpressions.length) {
|
|
- return this.cryptoKey.getOutputDescriptorContent();
|
|
- } else {
|
|
- return `${this.scriptExpressions[seIndex].getExpression()}(${this._toOutputDescriptor(seIndex + 1)})`;
|
|
- }
|
|
- };
|
|
-
|
|
- public toString = () => {
|
|
- return this._toOutputDescriptor(0);
|
|
- };
|
|
-
|
|
- toDataItem = () => {
|
|
- let dataItem = this.cryptoKey.toDataItem();
|
|
- if (
|
|
- this.cryptoKey instanceof CryptoECKey ||
|
|
- this.cryptoKey instanceof CryptoHDKey
|
|
- ) {
|
|
- dataItem.setTag(this.cryptoKey.getRegistryType().getTag());
|
|
- }
|
|
-
|
|
- const clonedSe = [...this.scriptExpressions];
|
|
-
|
|
- clonedSe.reverse().forEach((se) => {
|
|
- const tagValue = se.getTag();
|
|
- if (dataItem.getTag() === undefined) {
|
|
- dataItem.setTag(tagValue);
|
|
- } else {
|
|
- dataItem = new DataItem(dataItem, tagValue);
|
|
- }
|
|
- });
|
|
-
|
|
- return dataItem;
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const scriptExpressions: ScriptExpression[] = [];
|
|
- let _dataItem = dataItem;
|
|
- // eslint-disable-next-line no-constant-condition
|
|
- while (true) {
|
|
- let _tag = _dataItem.getTag();
|
|
- const se = ScriptExpression.fromTag(_tag as number);
|
|
- if (se) {
|
|
- scriptExpressions.push(se);
|
|
- if (_dataItem.getData() instanceof DataItem) {
|
|
- _dataItem = _dataItem.getData();
|
|
- _tag = _dataItem.getTag();
|
|
- } else {
|
|
- break;
|
|
- }
|
|
- } else {
|
|
- break;
|
|
- }
|
|
- }
|
|
- const seLength = scriptExpressions.length;
|
|
- const isMultiKey =
|
|
- seLength > 0 &&
|
|
- (scriptExpressions[seLength - 1].getExpression() ===
|
|
- ScriptExpressions.MULTISIG.getExpression() ||
|
|
- scriptExpressions[seLength - 1].getExpression() ===
|
|
- ScriptExpressions.SORTED_MULTISIG.getExpression());
|
|
- //TODO: judge is multi key by scriptExpressions
|
|
- if (isMultiKey) {
|
|
- const multiKey = MultiKey.fromDataItem(_dataItem);
|
|
- return new CryptoOutput(scriptExpressions, multiKey);
|
|
- }
|
|
-
|
|
- if (_dataItem.getTag() === RegistryTypes.CRYPTO_HDKEY.getTag()) {
|
|
- const cryptoHDKey = CryptoHDKey.fromDataItem(_dataItem);
|
|
- return new CryptoOutput(scriptExpressions, cryptoHDKey);
|
|
- } else {
|
|
- const cryptoECKey = CryptoECKey.fromDataItem(_dataItem);
|
|
- return new CryptoOutput(scriptExpressions, cryptoECKey);
|
|
- }
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoOutput.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/CryptoPSBT.ts b/node_modules/@keystonehq/bc-ur-registry/src/CryptoPSBT.ts
|
|
deleted file mode 100644
|
|
index 626b647..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/CryptoPSBT.ts
|
|
+++ /dev/null
|
|
@@ -1,32 +0,0 @@
|
|
-import { decodeToDataItem, DataItem } from './lib';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-
|
|
-export class CryptoPSBT extends RegistryItem {
|
|
- getRegistryType = () => RegistryTypes.CRYPTO_PSBT;
|
|
-
|
|
- constructor(private psbt: Buffer) {
|
|
- super();
|
|
- }
|
|
-
|
|
- public getPSBT = () => this.psbt;
|
|
-
|
|
- public toDataItem = () => {
|
|
- return new DataItem(this.psbt);
|
|
- };
|
|
-
|
|
- public static fromDataItem = (dataItem: DataItem) => {
|
|
- const psbt = dataItem.getData();
|
|
- if (!psbt) {
|
|
- throw new Error(
|
|
- `#[ur-registry][CryptoPSBT][fn.fromDataItem]: decoded [dataItem][#data] is undefined: ${dataItem}`,
|
|
- );
|
|
- }
|
|
- return new CryptoPSBT(psbt);
|
|
- };
|
|
-
|
|
- public static fromCBOR = (_cborPayload: Buffer) => {
|
|
- const dataItem = decodeToDataItem(_cborPayload);
|
|
- return CryptoPSBT.fromDataItem(dataItem);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/Decoder/index.ts b/node_modules/@keystonehq/bc-ur-registry/src/Decoder/index.ts
|
|
deleted file mode 100644
|
|
index 5d7e3fe..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/Decoder/index.ts
|
|
+++ /dev/null
|
|
@@ -1,41 +0,0 @@
|
|
-import { URDecoder } from '@ngraveio/bc-ur';
|
|
-import {
|
|
- Bytes,
|
|
- CryptoAccount,
|
|
- CryptoCoinInfo,
|
|
- CryptoECKey,
|
|
- CryptoHDKey,
|
|
- CryptoKeypath,
|
|
- CryptoOutput,
|
|
- CryptoPSBT,
|
|
-} from '..';
|
|
-import { RegistryTypes } from '../RegistryType';
|
|
-import { UnknownURTypeError } from '../errors';
|
|
-
|
|
-export class URRegistryDecoder extends URDecoder {
|
|
- public resultRegistryType = () => {
|
|
- const ur = this.resultUR();
|
|
- switch (ur.type) {
|
|
- case RegistryTypes.BYTES.getType():
|
|
- return Bytes.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_HDKEY.getType():
|
|
- return CryptoHDKey.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_KEYPATH.getType():
|
|
- return CryptoKeypath.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_COIN_INFO.getType():
|
|
- return CryptoCoinInfo.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_ECKEY.getType():
|
|
- return CryptoECKey.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_OUTPUT.getType():
|
|
- return CryptoOutput.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_PSBT.getType():
|
|
- return CryptoPSBT.fromCBOR(ur.cbor);
|
|
- case RegistryTypes.CRYPTO_ACCOUNT.getType():
|
|
- return CryptoAccount.fromCBOR(ur.cbor);
|
|
- default:
|
|
- throw new UnknownURTypeError(
|
|
- `#[ur-registry][Decoder][fn.resultRegistryType]: registry type ${ur.type} is not supported now`,
|
|
- );
|
|
- }
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/MultiKey.ts b/node_modules/@keystonehq/bc-ur-registry/src/MultiKey.ts
|
|
deleted file mode 100644
|
|
index ced19dc..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/MultiKey.ts
|
|
+++ /dev/null
|
|
@@ -1,60 +0,0 @@
|
|
-import { CryptoECKey } from './CryptoECKey';
|
|
-import { CryptoHDKey } from './CryptoHDKey';
|
|
-import { DataItem } from './lib/DataItem';
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryType, RegistryTypes } from './RegistryType';
|
|
-import { DataItemMap } from './types';
|
|
-
|
|
-enum Keys {
|
|
- threshold = 1,
|
|
- keys,
|
|
-}
|
|
-
|
|
-export class MultiKey extends RegistryItem {
|
|
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
- // @ts-ignore
|
|
- getRegistryType: () => RegistryType;
|
|
-
|
|
- constructor(
|
|
- private threshold: number,
|
|
- private keys: (CryptoECKey | CryptoHDKey)[],
|
|
- ) {
|
|
- super();
|
|
- }
|
|
-
|
|
- getThreshold = () => this.threshold;
|
|
- getKeys = () => this.keys;
|
|
-
|
|
- toDataItem = () => {
|
|
- const map: DataItemMap = {};
|
|
- map[Keys.threshold] = this.threshold;
|
|
- const keys: DataItem[] = this.keys.map((k) => {
|
|
- const dataItem = k.toDataItem();
|
|
- dataItem.setTag(k.getRegistryType().getTag());
|
|
- return dataItem;
|
|
- });
|
|
- map[Keys.keys] = keys;
|
|
- return new DataItem(map);
|
|
- };
|
|
-
|
|
- getOutputDescriptorContent = () => {
|
|
- return [this.getThreshold(),
|
|
- this.keys.map(k => k.getOutputDescriptorContent()).join(','),
|
|
- ].join(',');
|
|
- };
|
|
-
|
|
- static fromDataItem = (dataItem: DataItem) => {
|
|
- const map = dataItem.getData();
|
|
- const threshold = map[Keys.threshold];
|
|
- const _keys = map[Keys.keys] as DataItem[];
|
|
- const keys: (CryptoECKey | CryptoHDKey)[] = [];
|
|
- _keys.forEach((k) => {
|
|
- if (k.getTag() === RegistryTypes.CRYPTO_HDKEY.getTag()) {
|
|
- keys.push(CryptoHDKey.fromDataItem(k));
|
|
- } else if (k.getTag() === RegistryTypes.CRYPTO_ECKEY.getTag()) {
|
|
- keys.push(CryptoECKey.fromDataItem(k));
|
|
- }
|
|
- });
|
|
- return new MultiKey(threshold, keys);
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/PathComponent.ts b/node_modules/@keystonehq/bc-ur-registry/src/PathComponent.ts
|
|
deleted file mode 100644
|
|
index d41cb06..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/PathComponent.ts
|
|
+++ /dev/null
|
|
@@ -1,28 +0,0 @@
|
|
-export class PathComponent {
|
|
- public static readonly HARDENED_BIT = 0x80000000;
|
|
-
|
|
- private index?: number;
|
|
- private wildcard: boolean;
|
|
- private hardened: boolean;
|
|
-
|
|
- constructor(args: { index?: number; hardened: boolean }) {
|
|
- this.index = args.index;
|
|
- this.hardened = args.hardened;
|
|
-
|
|
- if (this.index !== undefined) {
|
|
- this.wildcard = false;
|
|
- } else {
|
|
- this.wildcard = true;
|
|
- }
|
|
-
|
|
- if (this.index && (this.index & PathComponent.HARDENED_BIT) !== 0) {
|
|
- throw new Error(
|
|
- `#[ur-registry][PathComponent][fn.constructor]: Invalid index ${this.index} - most significant bit cannot be set`,
|
|
- );
|
|
- }
|
|
- }
|
|
-
|
|
- public getIndex = () => this.index;
|
|
- public isWildcard = () => this.wildcard;
|
|
- public isHardened = () => this.hardened;
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/RegistryItem.ts b/node_modules/@keystonehq/bc-ur-registry/src/RegistryItem.ts
|
|
deleted file mode 100644
|
|
index 99139f7..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/RegistryItem.ts
|
|
+++ /dev/null
|
|
@@ -1,35 +0,0 @@
|
|
-import { UR, UREncoder } from '@ngraveio/bc-ur';
|
|
-import { encodeDataItem, DataItem } from './lib';
|
|
-import { RegistryType } from './RegistryType';
|
|
-
|
|
-export abstract class RegistryItem {
|
|
- abstract getRegistryType: () => RegistryType;
|
|
- abstract toDataItem: () => DataItem;
|
|
- public toCBOR = () => {
|
|
- if (this.toDataItem() === undefined) {
|
|
- throw new Error(
|
|
- `#[ur-registry][RegistryItem][fn.toCBOR]: registry ${this.getRegistryType()}'s method toDataItem returns undefined`,
|
|
- );
|
|
- }
|
|
- return encodeDataItem(this.toDataItem());
|
|
- };
|
|
-
|
|
- public toUR = () => {
|
|
- return new UR(this.toCBOR(), this.getRegistryType().getType());
|
|
- };
|
|
-
|
|
- public toUREncoder = (
|
|
- maxFragmentLength?: number,
|
|
- firstSeqNum?: number,
|
|
- minFragmentLength?: number,
|
|
- ) => {
|
|
- const ur = this.toUR();
|
|
- const urEncoder = new UREncoder(
|
|
- ur,
|
|
- maxFragmentLength,
|
|
- firstSeqNum,
|
|
- minFragmentLength,
|
|
- );
|
|
- return urEncoder;
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/RegistryType.ts b/node_modules/@keystonehq/bc-ur-registry/src/RegistryType.ts
|
|
deleted file mode 100644
|
|
index 64637bc..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/RegistryType.ts
|
|
+++ /dev/null
|
|
@@ -1,20 +0,0 @@
|
|
-// cbor registry types: https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-006-urtypes.md
|
|
-// Map<name, tag>
|
|
-
|
|
-export class RegistryType {
|
|
- constructor(private type: string, private tag?: number) {}
|
|
- getTag = () => this.tag;
|
|
- getType = () => this.type;
|
|
-}
|
|
-
|
|
-export const RegistryTypes = {
|
|
- UUID: new RegistryType('uuid', 37),
|
|
- BYTES: new RegistryType('bytes', undefined),
|
|
- CRYPTO_HDKEY: new RegistryType('crypto-hdkey', 303),
|
|
- CRYPTO_KEYPATH: new RegistryType('crypto-keypath', 304),
|
|
- CRYPTO_COIN_INFO: new RegistryType('crypto-coin-info', 305),
|
|
- CRYPTO_ECKEY: new RegistryType('crypto-eckey', 306),
|
|
- CRYPTO_OUTPUT: new RegistryType('crypto-output', 308),
|
|
- CRYPTO_PSBT: new RegistryType('crypto-psbt', 310),
|
|
- CRYPTO_ACCOUNT: new RegistryType('crypto-account', 311),
|
|
-};
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/ScriptExpression.ts b/node_modules/@keystonehq/bc-ur-registry/src/ScriptExpression.ts
|
|
deleted file mode 100644
|
|
index 8fbf0db..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/ScriptExpression.ts
|
|
+++ /dev/null
|
|
@@ -1,26 +0,0 @@
|
|
-export class ScriptExpression {
|
|
- constructor(private tag: number, private expression: string) {}
|
|
-
|
|
- public getTag = () => this.tag;
|
|
- public getExpression = () => this.expression;
|
|
-
|
|
- public static fromTag = (tag: number) => {
|
|
- const se = Object.values(ScriptExpressions).find(
|
|
- (se) => se.getTag() === tag,
|
|
- );
|
|
- return se;
|
|
- };
|
|
-}
|
|
-
|
|
-export const ScriptExpressions = {
|
|
- SCRIPT_HASH: new ScriptExpression(400, 'sh'),
|
|
- WITNESS_SCRIPT_HASH: new ScriptExpression(401, 'wsh'),
|
|
- PUBLIC_KEY: new ScriptExpression(402, 'pk'),
|
|
- PUBLIC_KEY_HASH: new ScriptExpression(403, 'pkh'),
|
|
- WITNESS_PUBLIC_KEY_HASH: new ScriptExpression(404, 'wpkh'),
|
|
- COMBO: new ScriptExpression(405, 'combo'),
|
|
- MULTISIG: new ScriptExpression(406, 'multi'),
|
|
- SORTED_MULTISIG: new ScriptExpression(407, 'sortedmulti'),
|
|
- ADDRESS: new ScriptExpression(307, 'addr'),
|
|
- RAW_SCRIPT: new ScriptExpression(408, 'raw'),
|
|
-};
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/errors/index.ts b/node_modules/@keystonehq/bc-ur-registry/src/errors/index.ts
|
|
deleted file mode 100644
|
|
index dd2b0bd..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/errors/index.ts
|
|
+++ /dev/null
|
|
@@ -1,5 +0,0 @@
|
|
-export class UnknownURTypeError extends Error {
|
|
- constructor(message: string) {
|
|
- super(message);
|
|
- }
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/index.ts b/node_modules/@keystonehq/bc-ur-registry/src/index.ts
|
|
deleted file mode 100644
|
|
index bb07bc8..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/index.ts
|
|
+++ /dev/null
|
|
@@ -1,110 +0,0 @@
|
|
-import './patchCBOR';
|
|
-
|
|
-import { CryptoHDKey } from './CryptoHDKey';
|
|
-import { CryptoKeypath } from './CryptoKeypath';
|
|
-import {
|
|
- CryptoCoinInfo,
|
|
- Type as CryptoCoinInfoType,
|
|
- Network as CryptoCoinInfoNetwork,
|
|
-} from './CryptoCoinInfo';
|
|
-import { CryptoECKey } from './CryptoECKey';
|
|
-import { Bytes } from './Bytes';
|
|
-import { CryptoOutput } from './CryptoOutput';
|
|
-import { CryptoPSBT } from './CryptoPSBT';
|
|
-import { CryptoAccount } from './CryptoAccount';
|
|
-import { URRegistryDecoder } from './Decoder';
|
|
-
|
|
-import { MultiKey } from './MultiKey';
|
|
-
|
|
-import { ScriptExpressions } from './ScriptExpression';
|
|
-import { PathComponent } from './PathComponent';
|
|
-
|
|
-import { RegistryItem } from './RegistryItem';
|
|
-import { RegistryTypes, RegistryType } from './RegistryType';
|
|
-
|
|
-import {
|
|
- addReader,
|
|
- addSemanticDecode,
|
|
- addSemanticEncode,
|
|
- addWriter,
|
|
- decodeToDataItem,
|
|
- encodeDataItem,
|
|
-} from './lib';
|
|
-
|
|
-export { DataItem } from './lib';
|
|
-
|
|
-import { patchTags } from './utils';
|
|
-
|
|
-const URlib = {
|
|
- URRegistryDecoder,
|
|
- Bytes,
|
|
- CryptoAccount,
|
|
- CryptoHDKey,
|
|
- CryptoKeypath,
|
|
- CryptoCoinInfo,
|
|
- CryptoCoinInfoType,
|
|
- CryptoCoinInfoNetwork,
|
|
- CryptoECKey,
|
|
- CryptoOutput,
|
|
- CryptoPSBT,
|
|
- MultiKey,
|
|
- ScriptExpressions,
|
|
- PathComponent,
|
|
-};
|
|
-
|
|
-const cbor = {
|
|
- addReader,
|
|
- addSemanticDecode,
|
|
- addSemanticEncode,
|
|
- addWriter,
|
|
- patchTags,
|
|
-};
|
|
-
|
|
-const extend = {
|
|
- RegistryTypes,
|
|
- RegistryItem,
|
|
- RegistryType,
|
|
-
|
|
- decodeToDataItem,
|
|
- encodeDataItem,
|
|
-
|
|
- cbor,
|
|
-};
|
|
-
|
|
-export {
|
|
- URRegistryDecoder,
|
|
- Bytes,
|
|
- CryptoAccount,
|
|
- CryptoHDKey,
|
|
- CryptoKeypath,
|
|
- CryptoCoinInfo,
|
|
- CryptoCoinInfoType,
|
|
- CryptoCoinInfoNetwork,
|
|
- CryptoECKey,
|
|
- CryptoOutput,
|
|
- CryptoPSBT,
|
|
- MultiKey,
|
|
- ScriptExpressions,
|
|
- PathComponent,
|
|
- extend,
|
|
-};
|
|
-
|
|
-export * from './errors';
|
|
-export * from './Decoder';
|
|
-export * from './lib';
|
|
-export * from './CryptoAccount'
|
|
-export * from './CryptoPSBT'
|
|
-export * from './CryptoHDKey'
|
|
-export * from './CryptoOutput'
|
|
-export * from './CryptoCoinInfo'
|
|
-export * from './CryptoECKey'
|
|
-export * from './MultiKey'
|
|
-export * from './CryptoKeypath'
|
|
-export * from './patchCBOR'
|
|
-export * from './PathComponent'
|
|
-export * from './RegistryItem'
|
|
-export * from './RegistryType'
|
|
-export * from './types'
|
|
-export * from './utils'
|
|
-
|
|
-export default URlib;
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/lib/DataItem.ts b/node_modules/@keystonehq/bc-ur-registry/src/lib/DataItem.ts
|
|
deleted file mode 100644
|
|
index 9727f7e..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/lib/DataItem.ts
|
|
+++ /dev/null
|
|
@@ -1,25 +0,0 @@
|
|
-export class DataItem {
|
|
- private tag?: number;
|
|
- private data: any;
|
|
-
|
|
- constructor(data: any, tag?: number) {
|
|
- this.data = data;
|
|
- this.tag = tag;
|
|
- }
|
|
-
|
|
- public setTag = (tag?: number) => {
|
|
- this.tag = tag;
|
|
- };
|
|
-
|
|
- public clearTag = () => {
|
|
- this.tag = undefined;
|
|
- };
|
|
-
|
|
- public getTag = () => {
|
|
- return this.tag;
|
|
- };
|
|
-
|
|
- public getData = () => {
|
|
- return this.data;
|
|
- };
|
|
-}
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.d.ts b/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.d.ts
|
|
deleted file mode 100644
|
|
index 6374ba7..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.d.ts
|
|
+++ /dev/null
|
|
@@ -1,36 +0,0 @@
|
|
-export namespace config {
|
|
- const useToJSON: boolean;
|
|
-}
|
|
-export function addWriter(format: any, writerFunction: any): void;
|
|
-export function addReader(format: any, readerFunction: any): void;
|
|
-export function encode(data: any, format: any): any;
|
|
-export function encodeDataItem(data: any, format?: any): any;
|
|
-export function decode(data: any, format: any): any;
|
|
-export function decodeToDataItem(data: any, format?: any): import("./DataItem").DataItem;
|
|
-export function addSemanticEncode(tag: any, fn: any): {
|
|
- config: {
|
|
- useToJSON: boolean;
|
|
- };
|
|
- addWriter: (format: any, writerFunction: any) => void;
|
|
- addReader: (format: any, readerFunction: any) => void;
|
|
- encode: (data: any, format: any) => any;
|
|
- encodeDataItem: (data: any, format: any) => any;
|
|
- decode: (data: any, format: any) => any;
|
|
- decodeToDataItem: (data: any, format: any) => import("./DataItem").DataItem;
|
|
- addSemanticEncode: (tag: any, fn: any) => any;
|
|
- addSemanticDecode: (tag: any, fn: any) => any;
|
|
-};
|
|
-export function addSemanticDecode(tag: any, fn: any): {
|
|
- config: {
|
|
- useToJSON: boolean;
|
|
- };
|
|
- addWriter: (format: any, writerFunction: any) => void;
|
|
- addReader: (format: any, readerFunction: any) => void;
|
|
- encode: (data: any, format: any) => any;
|
|
- encodeDataItem: (data: any, format: any) => any;
|
|
- decode: (data: any, format: any) => any;
|
|
- decodeToDataItem: (data: any, format: any) => import("./DataItem").DataItem;
|
|
- addSemanticEncode: (tag: any, fn: any) => any;
|
|
- addSemanticDecode: (tag: any, fn: any) => any;
|
|
-};
|
|
-//# sourceMappingURL=cbor-sync.d.ts.map
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.js b/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.js
|
|
deleted file mode 100644
|
|
index df8db90..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/lib/cbor-sync.js
|
|
+++ /dev/null
|
|
@@ -1,693 +0,0 @@
|
|
-(function (global, factory) {
|
|
- if (typeof define === 'function' && define.amd) {
|
|
- define([], factory);
|
|
- } else if (typeof module !== 'undefined' && module.exports) {
|
|
- module.exports = factory();
|
|
- } else {
|
|
- global.CBOR = factory();
|
|
- }
|
|
-})(this, function () {
|
|
- const { DataItem } = require('./DataItem');
|
|
- var CBOR = (function () {
|
|
- function BinaryHex(hex) {
|
|
- this.$hex = hex;
|
|
- }
|
|
- BinaryHex.prototype = {
|
|
- length: function () {
|
|
- return this.$hex.length / 2;
|
|
- },
|
|
- toString: function (format) {
|
|
- if (!format || format === 'hex' || format === 16) return this.$hex;
|
|
- if (format === 'utf-8') {
|
|
- var encoded = '';
|
|
- for (var i = 0; i < this.$hex.length; i += 2) {
|
|
- encoded += '%' + this.$hex.substring(i, i + 2);
|
|
- }
|
|
- return decodeURIComponent(encoded);
|
|
- }
|
|
- if (format === 'latin') {
|
|
- var encoded = [];
|
|
- for (var i = 0; i < this.$hex.length; i += 2) {
|
|
- encoded.push(parseInt(this.$hex.substring(i, i + 2), 16));
|
|
- }
|
|
- return String.fromCharCode.apply(String, encoded);
|
|
- }
|
|
- throw new Error('Unrecognised format: ' + format);
|
|
- },
|
|
- };
|
|
- BinaryHex.fromLatinString = function (latinString) {
|
|
- var hex = '';
|
|
- for (var i = 0; i < latinString.length; i++) {
|
|
- var pair = latinString.charCodeAt(i).toString(16);
|
|
- if (pair.length === 1) pair = '0' + pair;
|
|
- hex += pair;
|
|
- }
|
|
- return new BinaryHex(hex);
|
|
- };
|
|
- BinaryHex.fromUtf8String = function (utf8String) {
|
|
- var encoded = encodeURIComponent(utf8String);
|
|
- var hex = '';
|
|
- for (var i = 0; i < encoded.length; i++) {
|
|
- if (encoded.charAt(i) === '%') {
|
|
- hex += encoded.substring(i + 1, i + 3);
|
|
- i += 2;
|
|
- } else {
|
|
- var hexPair = encoded.charCodeAt(i).toString(16);
|
|
- if (hexPair.length < 2) hexPair = '0' + hexPair;
|
|
- hex += hexPair;
|
|
- }
|
|
- }
|
|
- return new BinaryHex(hex);
|
|
- };
|
|
-
|
|
- var semanticEncoders = [];
|
|
- var semanticDecoders = {};
|
|
-
|
|
- var notImplemented = function (label) {
|
|
- return function () {
|
|
- throw new Error(label + ' not implemented');
|
|
- };
|
|
- };
|
|
-
|
|
- function Reader() {}
|
|
- Reader.prototype = {
|
|
- peekByte: notImplemented('peekByte'),
|
|
- readByte: notImplemented('readByte'),
|
|
- readChunk: notImplemented('readChunk'),
|
|
- readFloat16: function () {
|
|
- var half = this.readUint16();
|
|
- var exponent = (half & 0x7fff) >> 10;
|
|
- var mantissa = half & 0x3ff;
|
|
- var negative = half & 0x8000;
|
|
- if (exponent === 0x1f) {
|
|
- if (mantissa === 0) {
|
|
- return negative ? -Infinity : Infinity;
|
|
- }
|
|
- return NaN;
|
|
- }
|
|
- var magnitude = exponent
|
|
- ? Math.pow(2, exponent - 25) * (1024 + mantissa)
|
|
- : Math.pow(2, -24) * mantissa;
|
|
- return negative ? -magnitude : magnitude;
|
|
- },
|
|
- readFloat32: function () {
|
|
- var intValue = this.readUint32();
|
|
- var exponent = (intValue & 0x7fffffff) >> 23;
|
|
- var mantissa = intValue & 0x7fffff;
|
|
- var negative = intValue & 0x80000000;
|
|
- if (exponent === 0xff) {
|
|
- if (mantissa === 0) {
|
|
- return negative ? -Infinity : Infinity;
|
|
- }
|
|
- return NaN;
|
|
- }
|
|
- var magnitude = exponent
|
|
- ? Math.pow(2, exponent - 23 - 127) * (8388608 + mantissa)
|
|
- : Math.pow(2, -23 - 126) * mantissa;
|
|
- return negative ? -magnitude : magnitude;
|
|
- },
|
|
- readFloat64: function () {
|
|
- var int1 = this.readUint32(),
|
|
- int2 = this.readUint32();
|
|
- var exponent = (int1 >> 20) & 0x7ff;
|
|
- var mantissa = (int1 & 0xfffff) * 4294967296 + int2;
|
|
- var negative = int1 & 0x80000000;
|
|
- if (exponent === 0x7ff) {
|
|
- if (mantissa === 0) {
|
|
- return negative ? -Infinity : Infinity;
|
|
- }
|
|
- return NaN;
|
|
- }
|
|
- var magnitude = exponent
|
|
- ? Math.pow(2, exponent - 52 - 1023) * (4503599627370496 + mantissa)
|
|
- : Math.pow(2, -52 - 1022) * mantissa;
|
|
- return negative ? -magnitude : magnitude;
|
|
- },
|
|
- readUint16: function () {
|
|
- return this.readByte() * 256 + this.readByte();
|
|
- },
|
|
- readUint32: function () {
|
|
- return this.readUint16() * 65536 + this.readUint16();
|
|
- },
|
|
- readUint64: function () {
|
|
- return this.readUint32() * 4294967296 + this.readUint32();
|
|
- },
|
|
- };
|
|
- function Writer() {}
|
|
- Writer.prototype = {
|
|
- writeByte: notImplemented('writeByte'),
|
|
- result: notImplemented('result'),
|
|
- writeFloat16: notImplemented('writeFloat16'),
|
|
- writeFloat32: notImplemented('writeFloat32'),
|
|
- writeFloat64: notImplemented('writeFloat64'),
|
|
- writeUint16: function (value) {
|
|
- this.writeByte((value >> 8) & 0xff);
|
|
- this.writeByte(value & 0xff);
|
|
- },
|
|
- writeUint32: function (value) {
|
|
- this.writeUint16((value >> 16) & 0xffff);
|
|
- this.writeUint16(value & 0xffff);
|
|
- },
|
|
- writeUint64: function (value) {
|
|
- if (value >= 9007199254740992 || value <= -9007199254740992) {
|
|
- throw new Error(
|
|
- 'Cannot encode Uint64 of: ' +
|
|
- value +
|
|
- ' magnitude to big (floating point errors)',
|
|
- );
|
|
- }
|
|
- this.writeUint32(Math.floor(value / 4294967296));
|
|
- this.writeUint32(value % 4294967296);
|
|
- },
|
|
- writeString: notImplemented('writeString'),
|
|
- canWriteBinary: function (chunk) {
|
|
- return false;
|
|
- },
|
|
- writeBinary: notImplemented('writeChunk'),
|
|
- };
|
|
-
|
|
- function readHeaderRaw(reader) {
|
|
- var firstByte = reader.readByte();
|
|
- var majorType = firstByte >> 5,
|
|
- value = firstByte & 0x1f;
|
|
- return { type: majorType, value: value };
|
|
- }
|
|
-
|
|
- function valueFromHeader(header, reader) {
|
|
- var value = header.value;
|
|
- if (value < 24) {
|
|
- return value;
|
|
- } else if (value == 24) {
|
|
- return reader.readByte();
|
|
- } else if (value == 25) {
|
|
- return reader.readUint16();
|
|
- } else if (value == 26) {
|
|
- return reader.readUint32();
|
|
- } else if (value == 27) {
|
|
- return reader.readUint64();
|
|
- } else if (value == 31) {
|
|
- // special value for non-terminating arrays/objects
|
|
- return null;
|
|
- }
|
|
- notImplemented('Additional info: ' + value)();
|
|
- }
|
|
-
|
|
- function writeHeaderRaw(type, value, writer) {
|
|
- writer.writeByte((type << 5) | value);
|
|
- }
|
|
-
|
|
- function writeHeader(type, value, writer) {
|
|
- var firstByte = type << 5;
|
|
- if (value < 24) {
|
|
- writer.writeByte(firstByte | value);
|
|
- } else if (value < 256) {
|
|
- writer.writeByte(firstByte | 24);
|
|
- writer.writeByte(value);
|
|
- } else if (value < 65536) {
|
|
- writer.writeByte(firstByte | 25);
|
|
- writer.writeUint16(value);
|
|
- } else if (value < 4294967296) {
|
|
- writer.writeByte(firstByte | 26);
|
|
- writer.writeUint32(value);
|
|
- } else {
|
|
- writer.writeByte(firstByte | 27);
|
|
- writer.writeUint64(value);
|
|
- }
|
|
- }
|
|
-
|
|
- var stopCode = new Error(); // Just a unique object, that won't compare strictly equal to anything else
|
|
-
|
|
- function decodeReader(reader) {
|
|
- var header = readHeaderRaw(reader);
|
|
- switch (header.type) {
|
|
- case 0:
|
|
- return valueFromHeader(header, reader);
|
|
- case 1:
|
|
- return -1 - valueFromHeader(header, reader);
|
|
- case 2:
|
|
- return reader.readChunk(valueFromHeader(header, reader));
|
|
- case 3:
|
|
- var buffer = reader.readChunk(valueFromHeader(header, reader));
|
|
- return buffer.toString('utf-8');
|
|
- case 4:
|
|
- case 5:
|
|
- var arrayLength = valueFromHeader(header, reader);
|
|
- var result = [];
|
|
- if (arrayLength !== null) {
|
|
- if (header.type === 5) {
|
|
- arrayLength *= 2;
|
|
- }
|
|
- for (var i = 0; i < arrayLength; i++) {
|
|
- result[i] = decodeReader(reader);
|
|
- }
|
|
- } else {
|
|
- var item;
|
|
- while ((item = decodeReader(reader)) !== stopCode) {
|
|
- result.push(item);
|
|
- }
|
|
- }
|
|
- if (header.type === 5) {
|
|
- var objResult = {};
|
|
- for (var i = 0; i < result.length; i += 2) {
|
|
- objResult[result[i]] = result[i + 1];
|
|
- }
|
|
- return objResult;
|
|
- } else {
|
|
- return result;
|
|
- }
|
|
- case 6:
|
|
- var tag = valueFromHeader(header, reader);
|
|
- var decoder = semanticDecoders[tag];
|
|
- var result = decodeReader(reader);
|
|
- return decoder ? decoder(result) : result;
|
|
- case 7:
|
|
- if (header.value === 25) {
|
|
- return reader.readFloat16();
|
|
- } else if (header.value === 26) {
|
|
- return reader.readFloat32();
|
|
- } else if (header.value === 27) {
|
|
- return reader.readFloat64();
|
|
- }
|
|
- switch (valueFromHeader(header, reader)) {
|
|
- case 20:
|
|
- return false;
|
|
- case 21:
|
|
- return true;
|
|
- case 22:
|
|
- return null;
|
|
- case 23:
|
|
- return undefined;
|
|
- case null:
|
|
- return stopCode;
|
|
- default:
|
|
- throw new Error('Unknown fixed value: ' + header.value);
|
|
- }
|
|
- default:
|
|
- throw new Error('Unsupported header: ' + JSON.stringify(header));
|
|
- }
|
|
- throw new Error('not implemented yet');
|
|
- }
|
|
-
|
|
- function encodeWriter(data, writer) {
|
|
- for (var i = 0; i < semanticEncoders.length; i++) {
|
|
- var replacement = semanticEncoders[i].fn(data);
|
|
- if (replacement !== undefined) {
|
|
- writeHeader(6, semanticEncoders[i].tag, writer);
|
|
- return encodeWriter(replacement, writer);
|
|
- }
|
|
- }
|
|
-
|
|
- if (data && typeof data.toCBOR === 'function') {
|
|
- data = data.toCBOR();
|
|
- }
|
|
-
|
|
- if (data === false) {
|
|
- writeHeader(7, 20, writer);
|
|
- } else if (data === true) {
|
|
- writeHeader(7, 21, writer);
|
|
- } else if (data === null) {
|
|
- writeHeader(7, 22, writer);
|
|
- } else if (data === undefined) {
|
|
- writeHeader(7, 23, writer);
|
|
- } else if (typeof data === 'number') {
|
|
- if (
|
|
- Math.floor(data) === data &&
|
|
- data < 9007199254740992 &&
|
|
- data > -9007199254740992
|
|
- ) {
|
|
- // Integer
|
|
- if (data < 0) {
|
|
- writeHeader(1, -1 - data, writer);
|
|
- } else {
|
|
- writeHeader(0, data, writer);
|
|
- }
|
|
- } else {
|
|
- writeHeaderRaw(7, 27, writer);
|
|
- writer.writeFloat64(data);
|
|
- }
|
|
- } else if (typeof data === 'string') {
|
|
- writer.writeString(data, function (length) {
|
|
- writeHeader(3, length, writer);
|
|
- });
|
|
- } else if (writer.canWriteBinary(data)) {
|
|
- writer.writeBinary(data, function (length) {
|
|
- writeHeader(2, length, writer);
|
|
- });
|
|
- } else if (typeof data === 'object') {
|
|
- if (api.config.useToJSON && typeof data.toJSON === 'function') {
|
|
- data = data.toJSON();
|
|
- }
|
|
- if (Array.isArray(data)) {
|
|
- writeHeader(4, data.length, writer);
|
|
- for (var i = 0; i < data.length; i++) {
|
|
- encodeWriter(data[i], writer);
|
|
- }
|
|
- } else {
|
|
- var keys = Object.keys(data);
|
|
- writeHeader(5, keys.length, writer);
|
|
- for (var i = 0; i < keys.length; i++) {
|
|
- const number = parseInt(keys[i]);
|
|
- if (isNaN(number)) {
|
|
- encodeWriter(keys[i], writer);
|
|
- encodeWriter(data[keys[i]], writer);
|
|
- } else {
|
|
- encodeWriter(number, writer);
|
|
- encodeWriter(data[keys[i]], writer);
|
|
- }
|
|
- }
|
|
- }
|
|
- } else {
|
|
- throw new Error('CBOR encoding not supported: ' + data);
|
|
- }
|
|
- }
|
|
-
|
|
- var readerFunctions = [];
|
|
- var writerFunctions = [];
|
|
-
|
|
- var api = {
|
|
- config: {
|
|
- useToJSON: true,
|
|
- },
|
|
- addWriter: function (format, writerFunction) {
|
|
- if (typeof format === 'string') {
|
|
- writerFunctions.push(function (f) {
|
|
- if (format === f) return writerFunction(f);
|
|
- });
|
|
- } else {
|
|
- writerFunctions.push(format);
|
|
- }
|
|
- },
|
|
- addReader: function (format, readerFunction) {
|
|
- if (typeof format === 'string') {
|
|
- readerFunctions.push(function (data, f) {
|
|
- if (format === f) return readerFunction(data, f);
|
|
- });
|
|
- } else {
|
|
- readerFunctions.push(format);
|
|
- }
|
|
- },
|
|
- encode: function (data, format) {
|
|
- for (var i = 0; i < writerFunctions.length; i++) {
|
|
- var func = writerFunctions[i];
|
|
- var writer = func(format);
|
|
- if (writer) {
|
|
- encodeWriter(data, writer);
|
|
- return writer.result();
|
|
- }
|
|
- }
|
|
- throw new Error('Unsupported output format: ' + format);
|
|
- },
|
|
- // DataItem: {getData: () => any}
|
|
- encodeDataItem: function (data, format) {
|
|
- for (var i = 0; i < writerFunctions.length; i++) {
|
|
- var func = writerFunctions[i];
|
|
- var writer = func(format);
|
|
- if (writer) {
|
|
- if (data.getTag() !== undefined) {
|
|
- encodeWriter(data, writer);
|
|
- return writer.result();
|
|
- } else {
|
|
- encodeWriter(data.getData(), writer);
|
|
- return writer.result();
|
|
- }
|
|
- }
|
|
- }
|
|
- throw new Error('Unsupported output format: ' + format);
|
|
- },
|
|
- decode: function (data, format) {
|
|
- for (var i = 0; i < readerFunctions.length; i++) {
|
|
- var func = readerFunctions[i];
|
|
- var reader = func(data, format);
|
|
- if (reader) {
|
|
- return decodeReader(reader);
|
|
- }
|
|
- }
|
|
- throw new Error('Unsupported input format: ' + format);
|
|
- },
|
|
- decodeToDataItem: function (data, format) {
|
|
- for (var i = 0; i < readerFunctions.length; i++) {
|
|
- var func = readerFunctions[i];
|
|
- var reader = func(data, format);
|
|
- if (reader) {
|
|
- const result = decodeReader(reader);
|
|
- if (result instanceof DataItem) {
|
|
- return result;
|
|
- } else {
|
|
- return new DataItem(result);
|
|
- }
|
|
- }
|
|
- }
|
|
- throw new Error('Unsupported input format: ' + format);
|
|
- },
|
|
- addSemanticEncode: function (tag, fn) {
|
|
- if (typeof tag !== 'number' || tag % 1 !== 0 || tag < 0) {
|
|
- throw new Error('Tag must be a positive integer');
|
|
- }
|
|
- semanticEncoders.push({ tag: tag, fn: fn });
|
|
- return this;
|
|
- },
|
|
- addSemanticDecode: function (tag, fn) {
|
|
- if (typeof tag !== 'number' || tag % 1 !== 0 || tag < 0) {
|
|
- throw new Error('Tag must be a positive integer');
|
|
- }
|
|
- semanticDecoders[tag] = fn;
|
|
- return this;
|
|
- },
|
|
- };
|
|
-
|
|
- /** Node.js Buffers **/
|
|
- function BufferReader(buffer) {
|
|
- this.buffer = buffer;
|
|
- this.pos = 0;
|
|
- }
|
|
- BufferReader.prototype = Object.create(Reader.prototype);
|
|
- BufferReader.prototype.peekByte = function () {
|
|
- return this.buffer[this.pos];
|
|
- };
|
|
- BufferReader.prototype.readByte = function () {
|
|
- return this.buffer[this.pos++];
|
|
- };
|
|
- BufferReader.prototype.readUint16 = function () {
|
|
- var result = this.buffer.readUInt16BE(this.pos);
|
|
- this.pos += 2;
|
|
- return result;
|
|
- };
|
|
- BufferReader.prototype.readUint32 = function () {
|
|
- var result = this.buffer.readUInt32BE(this.pos);
|
|
- this.pos += 4;
|
|
- return result;
|
|
- };
|
|
- BufferReader.prototype.readFloat32 = function () {
|
|
- var result = this.buffer.readFloatBE(this.pos);
|
|
- this.pos += 4;
|
|
- return result;
|
|
- };
|
|
- BufferReader.prototype.readFloat64 = function () {
|
|
- var result = this.buffer.readDoubleBE(this.pos);
|
|
- this.pos += 8;
|
|
- return result;
|
|
- };
|
|
- BufferReader.prototype.readChunk = function (length) {
|
|
- var result = Buffer.alloc(length);
|
|
- this.buffer.copy(result, 0, this.pos, (this.pos += length));
|
|
- return result;
|
|
- };
|
|
-
|
|
- function BufferWriter(stringFormat) {
|
|
- this.byteLength = 0;
|
|
- this.defaultBufferLength = 16384; // 16k
|
|
- this.latestBuffer = Buffer.alloc(this.defaultBufferLength);
|
|
- this.latestBufferOffset = 0;
|
|
- this.completeBuffers = [];
|
|
- this.stringFormat = stringFormat;
|
|
- }
|
|
- BufferWriter.prototype = Object.create(Writer.prototype);
|
|
- BufferWriter.prototype.writeByte = function (value) {
|
|
- this.latestBuffer[this.latestBufferOffset++] = value;
|
|
- if (this.latestBufferOffset >= this.latestBuffer.length) {
|
|
- this.completeBuffers.push(this.latestBuffer);
|
|
- this.latestBuffer = Buffer.alloc(this.defaultBufferLength);
|
|
- this.latestBufferOffset = 0;
|
|
- }
|
|
- this.byteLength++;
|
|
- };
|
|
- BufferWriter.prototype.writeFloat32 = function (value) {
|
|
- var buffer = Buffer.alloc(4);
|
|
- buffer.writeFloatBE(value, 0);
|
|
- this.writeBuffer(buffer);
|
|
- };
|
|
- BufferWriter.prototype.writeFloat64 = function (value) {
|
|
- var buffer = Buffer.alloc(8);
|
|
- buffer.writeDoubleBE(value, 0);
|
|
- this.writeBuffer(buffer);
|
|
- };
|
|
- BufferWriter.prototype.writeString = function (string, lengthFunc) {
|
|
- var buffer = Buffer.from(string, 'utf-8');
|
|
- lengthFunc(buffer.length);
|
|
- this.writeBuffer(buffer);
|
|
- };
|
|
- BufferWriter.prototype.canWriteBinary = function (data) {
|
|
- return data instanceof Buffer;
|
|
- };
|
|
- BufferWriter.prototype.writeBinary = function (buffer, lengthFunc) {
|
|
- lengthFunc(buffer.length);
|
|
- this.writeBuffer(buffer);
|
|
- };
|
|
- BufferWriter.prototype.writeBuffer = function (chunk) {
|
|
- if (!(chunk instanceof Buffer))
|
|
- throw new TypeError('BufferWriter only accepts Buffers');
|
|
- if (!this.latestBufferOffset) {
|
|
- this.completeBuffers.push(chunk);
|
|
- } else if (
|
|
- this.latestBuffer.length - this.latestBufferOffset >=
|
|
- chunk.length
|
|
- ) {
|
|
- chunk.copy(this.latestBuffer, this.latestBufferOffset);
|
|
- this.latestBufferOffset += chunk.length;
|
|
- if (this.latestBufferOffset >= this.latestBuffer.length) {
|
|
- this.completeBuffers.push(this.latestBuffer);
|
|
- this.latestBuffer = Buffer.alloc(this.defaultBufferLength);
|
|
- this.latestBufferOffset = 0;
|
|
- }
|
|
- } else {
|
|
- this.completeBuffers.push(
|
|
- this.latestBuffer.slice(0, this.latestBufferOffset),
|
|
- );
|
|
- this.completeBuffers.push(chunk);
|
|
- this.latestBuffer = Buffer.alloc(this.defaultBufferLength);
|
|
- this.latestBufferOffset = 0;
|
|
- }
|
|
- this.byteLength += chunk.length;
|
|
- };
|
|
- BufferWriter.prototype.result = function () {
|
|
- // Copies them all into a single Buffer
|
|
- var result = Buffer.alloc(this.byteLength);
|
|
- var offset = 0;
|
|
- for (var i = 0; i < this.completeBuffers.length; i++) {
|
|
- var buffer = this.completeBuffers[i];
|
|
- buffer.copy(result, offset, 0, buffer.length);
|
|
- offset += buffer.length;
|
|
- }
|
|
- if (this.latestBufferOffset) {
|
|
- this.latestBuffer.copy(result, offset, 0, this.latestBufferOffset);
|
|
- }
|
|
-
|
|
- if (this.stringFormat) return result.toString(this.stringFormat);
|
|
- return result;
|
|
- };
|
|
-
|
|
- if (typeof Buffer === 'function') {
|
|
- api.addReader(function (data, format) {
|
|
- if (data instanceof Buffer) {
|
|
- return new BufferReader(data);
|
|
- }
|
|
- if (format === 'hex' || format === 'base64') {
|
|
- var buffer = Buffer.from(data, format);
|
|
- return new BufferReader(buffer);
|
|
- }
|
|
- });
|
|
- api.addWriter(function (format) {
|
|
- if (!format || format === 'buffer') {
|
|
- return new BufferWriter();
|
|
- } else if (format === 'hex' || format === 'base64') {
|
|
- return new BufferWriter(format);
|
|
- }
|
|
- });
|
|
- }
|
|
-
|
|
- /** Hex-encoding (and Latin1) for browser **/
|
|
- function HexReader(hex) {
|
|
- this.hex = hex;
|
|
- this.pos = 0;
|
|
- }
|
|
- HexReader.prototype = Object.create(Reader.prototype);
|
|
- HexReader.prototype.peekByte = function () {
|
|
- var pair = this.hex.substring(this.pos, 2);
|
|
- return parseInt(pair, 16);
|
|
- };
|
|
- HexReader.prototype.readByte = function () {
|
|
- var pair = this.hex.substring(this.pos, this.pos + 2);
|
|
- this.pos += 2;
|
|
- return parseInt(pair, 16);
|
|
- };
|
|
- HexReader.prototype.readChunk = function (length) {
|
|
- var hex = this.hex.substring(this.pos, this.pos + length * 2);
|
|
- this.pos += length * 2;
|
|
- if (typeof Buffer === 'function') return Buffer.from(hex, 'hex');
|
|
- return new BinaryHex(hex);
|
|
- };
|
|
-
|
|
- function HexWriter(finalFormat) {
|
|
- this.$hex = '';
|
|
- this.finalFormat = finalFormat || 'hex';
|
|
- }
|
|
- HexWriter.prototype = Object.create(Writer.prototype);
|
|
- HexWriter.prototype.writeByte = function (value) {
|
|
- if (value < 0 || value > 255)
|
|
- throw new Error('Byte value out of range: ' + value);
|
|
- var hex = value.toString(16);
|
|
- if (hex.length == 1) {
|
|
- hex = '0' + hex;
|
|
- }
|
|
- this.$hex += hex;
|
|
- };
|
|
- HexWriter.prototype.canWriteBinary = function (chunk) {
|
|
- return (
|
|
- chunk instanceof BinaryHex ||
|
|
- (typeof Buffer === 'function' && chunk instanceof Buffer)
|
|
- );
|
|
- };
|
|
- HexWriter.prototype.writeBinary = function (chunk, lengthFunction) {
|
|
- if (chunk instanceof BinaryHex) {
|
|
- lengthFunction(chunk.length());
|
|
- this.$hex += chunk.$hex;
|
|
- } else if (typeof Buffer === 'function' && chunk instanceof Buffer) {
|
|
- lengthFunction(chunk.length);
|
|
- this.$hex += chunk.toString('hex');
|
|
- } else {
|
|
- throw new TypeError('HexWriter only accepts BinaryHex or Buffers');
|
|
- }
|
|
- };
|
|
- HexWriter.prototype.result = function () {
|
|
- if (this.finalFormat === 'buffer' && typeof Buffer === 'function') {
|
|
- return Buffer.from(this.$hex, 'hex');
|
|
- }
|
|
- return new BinaryHex(this.$hex).toString(this.finalFormat);
|
|
- };
|
|
- HexWriter.prototype.writeString = function (string, lengthFunction) {
|
|
- var buffer = BinaryHex.fromUtf8String(string);
|
|
- lengthFunction(buffer.length());
|
|
- this.$hex += buffer.$hex;
|
|
- };
|
|
-
|
|
- api.addReader(function (data, format) {
|
|
- if (data instanceof BinaryHex || data.$hex) {
|
|
- return new HexReader(data.$hex);
|
|
- }
|
|
- if (format === 'hex') {
|
|
- return new HexReader(data);
|
|
- }
|
|
- });
|
|
- api.addWriter(function (format) {
|
|
- if (format === 'hex') {
|
|
- return new HexWriter();
|
|
- }
|
|
- });
|
|
-
|
|
- return api;
|
|
- })();
|
|
-
|
|
- CBOR.addSemanticEncode(0, function (data) {
|
|
- if (data instanceof Date) {
|
|
- return data.toISOString();
|
|
- }
|
|
- })
|
|
- .addSemanticDecode(0, function (isoString) {
|
|
- return new Date(isoString);
|
|
- })
|
|
- .addSemanticDecode(1, function (isoString) {
|
|
- return new Date(isoString);
|
|
- });
|
|
-
|
|
- return CBOR;
|
|
-});
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/lib/index.ts b/node_modules/@keystonehq/bc-ur-registry/src/lib/index.ts
|
|
deleted file mode 100644
|
|
index deb0156..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/lib/index.ts
|
|
+++ /dev/null
|
|
@@ -1,9 +0,0 @@
|
|
-export {
|
|
- encodeDataItem,
|
|
- decodeToDataItem,
|
|
- addSemanticDecode,
|
|
- addSemanticEncode,
|
|
- addReader,
|
|
- addWriter,
|
|
-} from './cbor-sync';
|
|
-export { DataItem } from './DataItem';
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/patchCBOR.ts b/node_modules/@keystonehq/bc-ur-registry/src/patchCBOR.ts
|
|
deleted file mode 100644
|
|
index 218e912..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/patchCBOR.ts
|
|
+++ /dev/null
|
|
@@ -1,11 +0,0 @@
|
|
-import { patchTags } from './utils';
|
|
-import { RegistryTypes } from './RegistryType';
|
|
-import { ScriptExpressions } from './ScriptExpression';
|
|
-
|
|
-const registryTags = Object.values(RegistryTypes)
|
|
- .filter((r) => !!r.getTag())
|
|
- .map((r) => r.getTag());
|
|
-const scriptExpressionTags = Object.values(ScriptExpressions).map((se) =>
|
|
- se.getTag(),
|
|
-);
|
|
-patchTags(registryTags.concat(scriptExpressionTags) as number[]);
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/types.ts b/node_modules/@keystonehq/bc-ur-registry/src/types.ts
|
|
deleted file mode 100644
|
|
index 29aa370..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/types.ts
|
|
+++ /dev/null
|
|
@@ -1,6 +0,0 @@
|
|
-export interface ICryptoKey {
|
|
- isECKey: () => boolean;
|
|
- getOutputDescriptorContent: () => string;
|
|
-}
|
|
-
|
|
-export type DataItemMap = Record<string, any>;
|
|
diff --git a/node_modules/@keystonehq/bc-ur-registry/src/utils.ts b/node_modules/@keystonehq/bc-ur-registry/src/utils.ts
|
|
deleted file mode 100644
|
|
index e38112b..0000000
|
|
--- a/node_modules/@keystonehq/bc-ur-registry/src/utils.ts
|
|
+++ /dev/null
|
|
@@ -1,19 +0,0 @@
|
|
-import { addSemanticDecode, addSemanticEncode, DataItem } from './lib';
|
|
-
|
|
-const alreadyPatchedTag: number[] = [];
|
|
-export const patchTags = (tags: number[]): void => {
|
|
- tags.forEach((tag) => {
|
|
- if (alreadyPatchedTag.find((i) => i === tag)) return;
|
|
- addSemanticEncode(tag, (data: any) => {
|
|
- if (data instanceof DataItem) {
|
|
- if (data.getTag() === tag) {
|
|
- return data.getData();
|
|
- }
|
|
- }
|
|
- });
|
|
- addSemanticDecode(tag, (data: any) => {
|
|
- return new DataItem(data, tag);
|
|
- });
|
|
- alreadyPatchedTag.push(tag);
|
|
- });
|
|
-};
|