Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 1x 6x 6x 6x 6x 6x 7x 1x 1x 1x | import {ABISerializableObject} from '../serializer/serializable'
import {ABIEncoder} from '../serializer/encoder'
import {arrayEquals, isInstanceOf} from '../utils'
export type BlobType = Blob | string
export class Blob implements ABISerializableObject {
static abiName = 'blob'
/**
* Create a new Blob instance.
*/
static from(value: BlobType): Blob {
Iif (isInstanceOf(value, this)) {
return value
}
Eif (typeof value === 'string') {
return this.fromString(value)
}
throw new Error('Invalid blob')
}
static fromString(value: string) {
// If buffer is available, use it (maintains support for nodejs 14)
Eif (typeof Buffer === 'function') {
return new this(new Uint8Array(Buffer.from(value, 'base64')))
}
// fix up base64 padding from nodeos
switch (value.length % 4) {
case 2:
value += '=='
break
case 3:
value += '='
break
case 1:
value = value.substring(0, value.length - 1)
break
}
const string = atob(value)
const array = new Uint8Array(string.length)
for (let i = 0; i < string.length; i++) {
array[i] = string.charCodeAt(i)
}
return new this(array)
}
readonly array: Uint8Array
constructor(array: Uint8Array) {
this.array = array
}
equals(other: BlobType): boolean {
const self = this.constructor as typeof Blob
try {
return arrayEquals(this.array, self.from(other).array)
} catch {
return false
}
}
get base64String(): string {
// If buffer is available, use it (maintains support for nodejs 14)
Eif (typeof Buffer === 'function') {
return Buffer.from(this.array).toString('base64')
}
return btoa(this.utf8String)
}
/** UTF-8 string representation of this instance. */
get utf8String(): string {
return new TextDecoder().decode(this.array)
}
toABI(encoder: ABIEncoder) {
encoder.writeArray(this.array)
}
toString() {
return this.base64String
}
toJSON() {
return this.toString()
}
}
|