1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 'use strict';
- Object.defineProperty(exports, "__esModule", { value: true });
- // **Github:** https://github.com/fidm/x509
- //
- // **License:** MIT
- /**
- * BufferVisitor is a visit tool to manipulate buffer.
- */
- class BufferVisitor {
- constructor(buf, start = 0, end = 0) {
- this.start = start;
- this.end = end > start ? end : start;
- this.buf = buf;
- }
- /**
- * return the underlying buffer length
- */
- get length() {
- return this.buf.length;
- }
- /**
- * Reset visitor' start and end value.
- * @param start
- * @param end
- */
- reset(start = 0, end = 0) {
- this.start = start;
- if (end >= this.start) {
- this.end = end;
- }
- else if (this.end < this.start) {
- this.end = this.start;
- }
- return this;
- }
- /**
- * consume some bytes.
- * @param steps steps to walk
- */
- walk(steps) {
- this.start = this.end;
- this.end += steps;
- return this;
- }
- /**
- * The buffer should have remaining the "steps" of bytes to consume,
- * otherwise it will throw an error with given message.
- * @param steps steps to consume.
- * @param message message to throw.
- */
- mustHas(steps, message = 'Too few bytes to parse.') {
- const requested = this.end + steps;
- if (requested > this.buf.length) {
- const error = new Error(message);
- error.available = this.buf.length;
- error.requested = requested;
- throw error;
- }
- this.walk(0);
- return this;
- }
- /**
- * Check the remaining bytes with bufferVisitor.mustHas method and then walk.
- * @param steps steps to consume.
- * @param message message to throw.
- */
- mustWalk(steps, message) {
- this.mustHas(steps, message);
- this.walk(steps);
- return this;
- }
- }
- exports.BufferVisitor = BufferVisitor;
- //# sourceMappingURL=common.js.map
|