- Add GETTING_STARTED.md with quick start guide and development modes - Add INSTALL.sh automated installation script - Add INSTALLATION_CHECKLIST.md, INSTALLATION_SUCCESS.md, and INSTALLATION_SUMMARY.md - Add QUICK_REFERENCE.md for common commands - Add SETUP_GUIDE.md with detailed setup instructions - Update README.md with improved project overview - Add did-wallet app dependencies and node_modules
68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
class Type {
|
|
/**
|
|
* @param {number} major
|
|
* @param {string} name
|
|
* @param {boolean} terminal
|
|
*/
|
|
constructor (major, name, terminal) {
|
|
this.major = major
|
|
this.majorEncoded = major << 5
|
|
this.name = name
|
|
this.terminal = terminal
|
|
}
|
|
|
|
/* c8 ignore next 3 */
|
|
toString () {
|
|
return `Type[${this.major}].${this.name}`
|
|
}
|
|
|
|
/**
|
|
* @param {Type} typ
|
|
* @returns {number}
|
|
*/
|
|
compare (typ) {
|
|
/* c8 ignore next 1 */
|
|
return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0
|
|
}
|
|
}
|
|
|
|
// convert to static fields when better supported
|
|
Type.uint = new Type(0, 'uint', true)
|
|
Type.negint = new Type(1, 'negint', true)
|
|
Type.bytes = new Type(2, 'bytes', true)
|
|
Type.string = new Type(3, 'string', true)
|
|
Type.array = new Type(4, 'array', false)
|
|
Type.map = new Type(5, 'map', false)
|
|
Type.tag = new Type(6, 'tag', false) // terminal?
|
|
Type.float = new Type(7, 'float', true)
|
|
Type.false = new Type(7, 'false', true)
|
|
Type.true = new Type(7, 'true', true)
|
|
Type.null = new Type(7, 'null', true)
|
|
Type.undefined = new Type(7, 'undefined', true)
|
|
Type.break = new Type(7, 'break', true)
|
|
// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)
|
|
|
|
class Token {
|
|
/**
|
|
* @param {Type} type
|
|
* @param {any} [value]
|
|
* @param {number} [encodedLength]
|
|
*/
|
|
constructor (type, value, encodedLength) {
|
|
this.type = type
|
|
this.value = value
|
|
this.encodedLength = encodedLength
|
|
/** @type {Uint8Array|undefined} */
|
|
this.encodedBytes = undefined
|
|
/** @type {Uint8Array|undefined} */
|
|
this.byteValue = undefined
|
|
}
|
|
|
|
/* c8 ignore next 3 */
|
|
toString () {
|
|
return `Token[${this.type}].${this.value}`
|
|
}
|
|
}
|
|
|
|
export { Type, Token }
|