diff options
Diffstat (limited to 'js/binary')
-rw-r--r-- | js/binary/arith.js | 2 | ||||
-rw-r--r-- | js/binary/constants.js | 19 | ||||
-rw-r--r-- | js/binary/decoder.js | 12 | ||||
-rw-r--r-- | js/binary/encoder.js | 4 | ||||
-rw-r--r-- | js/binary/reader.js | 50 | ||||
-rw-r--r-- | js/binary/utils.js | 12 | ||||
-rw-r--r-- | js/binary/utils_test.js | 2 | ||||
-rw-r--r-- | js/binary/writer.js | 112 | ||||
-rw-r--r-- | js/binary/writer_test.js | 12 |
9 files changed, 128 insertions, 97 deletions
diff --git a/js/binary/arith.js b/js/binary/arith.js index 70257de7..62528a26 100644 --- a/js/binary/arith.js +++ b/js/binary/arith.js @@ -221,7 +221,7 @@ jspb.arith.UInt64.prototype.mul = function(a) { * Divide a 64-bit number by a 32-bit number to produce a * 64-bit quotient and a 32-bit remainder. * @param {number} _divisor - * @return {Array.<jspb.arith.UInt64>} array of [quotient, remainder], + * @return {Array<jspb.arith.UInt64>} array of [quotient, remainder], * unless divisor is 0, in which case an empty array is returned. */ jspb.arith.UInt64.prototype.div = function(_divisor) { diff --git a/js/binary/constants.js b/js/binary/constants.js index 75a8a52c..21c5889c 100644 --- a/js/binary/constants.js +++ b/js/binary/constants.js @@ -60,14 +60,25 @@ goog.forwardDeclare('jsproto.BinaryExtension'); /** - * Base interface class for all const messages. Does __not__ define any - * methods, as doing so on a widely-used interface defeats dead-code - * elimination. + * Base interface class for all const messages. * @interface */ jspb.ConstBinaryMessage = function() {}; +/** + * Generate a debug string for this proto that is in proto2 text format. + * @return {string} The debug string. + */ +jspb.ConstBinaryMessage.prototype.toDebugString; +/** + * Helper to generate a debug string for this proto at some indent level. The + * first line is not indented. + * @param {number} indentLevel The number of spaces by which to indent lines. + * @return {string} The debug string. + * @protected + */ +jspb.ConstBinaryMessage.prototype.toDebugStringInternal; /** * Base interface class for all messages. Does __not__ define any methods, as @@ -97,6 +108,7 @@ jspb.ScalarFieldType; * A repeated field in jspb is an array of scalars, blobs, or messages. * @typedef {!Array<jspb.ScalarFieldType>| !Array<!Uint8Array>| + !Array<!jspb.ConstBinaryMessage>| !Array<!jspb.BinaryMessage>} */ jspb.RepeatedFieldType; @@ -108,6 +120,7 @@ jspb.RepeatedFieldType; * @typedef {jspb.ScalarFieldType| jspb.RepeatedFieldType| !Uint8Array| + !jspb.ConstBinaryMessage| !jspb.BinaryMessage| !jsproto.BinaryExtension} */ diff --git a/js/binary/decoder.js b/js/binary/decoder.js index 4ec3cada..e33bf1be 100644 --- a/js/binary/decoder.js +++ b/js/binary/decoder.js @@ -58,7 +58,7 @@ goog.require('jspb.utils'); * @param {?jspb.BinaryDecoder=} opt_decoder * @param {?function(this:jspb.BinaryDecoder):(number|boolean|string)=} * opt_next The decoder method to use for next(). - * @param {?Array.<number|boolean|string>=} opt_elements + * @param {?Array<number|boolean|string>=} opt_elements * @constructor * @struct */ @@ -92,7 +92,7 @@ jspb.BinaryIterator = function(opt_decoder, opt_next, opt_elements) { * @param {?jspb.BinaryDecoder=} opt_decoder * @param {?function(this:jspb.BinaryDecoder):(number|boolean|string)=} * opt_next The decoder method to use for next(). - * @param {?Array.<number|boolean|string>=} opt_elements + * @param {?Array<number|boolean|string>=} opt_elements * @private */ jspb.BinaryIterator.prototype.init_ = @@ -112,7 +112,7 @@ jspb.BinaryIterator.prototype.init_ = /** * Global pool of BinaryIterator instances. - * @private {!Array.<!jspb.BinaryIterator>} + * @private {!Array<!jspb.BinaryIterator>} */ jspb.BinaryIterator.instanceCache_ = []; @@ -123,7 +123,7 @@ jspb.BinaryIterator.instanceCache_ = []; * @param {?jspb.BinaryDecoder=} opt_decoder * @param {?function(this:jspb.BinaryDecoder):(number|boolean|string)=} * opt_next The decoder method to use for next(). - * @param {?Array.<number|boolean|string>=} opt_elements + * @param {?Array<number|boolean|string>=} opt_elements * @return {!jspb.BinaryIterator} */ jspb.BinaryIterator.alloc = function(opt_decoder, opt_next, opt_elements) { @@ -274,7 +274,7 @@ jspb.BinaryDecoder = function(opt_bytes, opt_start, opt_length) { /** * Global pool of BinaryDecoder instances. - * @private {!Array.<!jspb.BinaryDecoder>} + * @private {!Array<!jspb.BinaryDecoder>} */ jspb.BinaryDecoder.instanceCache_ = []; @@ -986,7 +986,7 @@ jspb.BinaryDecoder.prototype.readString = function(length) { codeUnits.push(high, low); } - // Avoid exceeding the maximum stack size when calling {@code apply}. + // Avoid exceeding the maximum stack size when calling `apply`. if (codeUnits.length >= 8192) { result += String.fromCharCode.apply(null, codeUnits); codeUnits.length = 0; diff --git a/js/binary/encoder.js b/js/binary/encoder.js index 8e9f5bbc..b2013f63 100644 --- a/js/binary/encoder.js +++ b/js/binary/encoder.js @@ -51,7 +51,7 @@ goog.require('jspb.utils'); * @struct */ jspb.BinaryEncoder = function() { - /** @private {!Array.<number>} */ + /** @private {!Array<number>} */ this.buffer_ = []; }; @@ -65,7 +65,7 @@ jspb.BinaryEncoder.prototype.length = function() { /** - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryEncoder.prototype.end = function() { var buffer = this.buffer_; diff --git a/js/binary/reader.js b/js/binary/reader.js index d5d698f7..2dc3eb70 100644 --- a/js/binary/reader.js +++ b/js/binary/reader.js @@ -97,7 +97,7 @@ jspb.BinaryReader = function(opt_bytes, opt_start, opt_length) { /** * User-defined reader callbacks. - * @private {Object.<string, function(!jspb.BinaryReader):*>} + * @private {Object<string, function(!jspb.BinaryReader):*>} */ this.readCallbacks_ = null; }; @@ -105,7 +105,7 @@ jspb.BinaryReader = function(opt_bytes, opt_start, opt_length) { /** * Global pool of BinaryReader instances. - * @private {!Array.<!jspb.BinaryReader>} + * @private {!Array<!jspb.BinaryReader>} */ jspb.BinaryReader.instanceCache_ = []; @@ -992,7 +992,7 @@ jspb.BinaryReader.prototype.readPackedField_ = function(decodeMethod) { /** * Reads a packed int32 field, which consists of a length header and a list of * signed varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedInt32 = function() { return this.readPackedField_(this.decoder_.readSignedVarint32); @@ -1002,7 +1002,7 @@ jspb.BinaryReader.prototype.readPackedInt32 = function() { /** * Reads a packed int32 field, which consists of a length header and a list of * signed varints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedInt32String = function() { return this.readPackedField_(this.decoder_.readSignedVarint32String); @@ -1012,7 +1012,7 @@ jspb.BinaryReader.prototype.readPackedInt32String = function() { /** * Reads a packed int64 field, which consists of a length header and a list of * signed varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedInt64 = function() { return this.readPackedField_(this.decoder_.readSignedVarint64); @@ -1022,7 +1022,7 @@ jspb.BinaryReader.prototype.readPackedInt64 = function() { /** * Reads a packed int64 field, which consists of a length header and a list of * signed varints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedInt64String = function() { return this.readPackedField_(this.decoder_.readSignedVarint64String); @@ -1032,7 +1032,7 @@ jspb.BinaryReader.prototype.readPackedInt64String = function() { /** * Reads a packed uint32 field, which consists of a length header and a list of * unsigned varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedUint32 = function() { return this.readPackedField_(this.decoder_.readUnsignedVarint32); @@ -1042,7 +1042,7 @@ jspb.BinaryReader.prototype.readPackedUint32 = function() { /** * Reads a packed uint32 field, which consists of a length header and a list of * unsigned varints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedUint32String = function() { return this.readPackedField_(this.decoder_.readUnsignedVarint32String); @@ -1052,7 +1052,7 @@ jspb.BinaryReader.prototype.readPackedUint32String = function() { /** * Reads a packed uint64 field, which consists of a length header and a list of * unsigned varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedUint64 = function() { return this.readPackedField_(this.decoder_.readUnsignedVarint64); @@ -1062,7 +1062,7 @@ jspb.BinaryReader.prototype.readPackedUint64 = function() { /** * Reads a packed uint64 field, which consists of a length header and a list of * unsigned varints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedUint64String = function() { return this.readPackedField_(this.decoder_.readUnsignedVarint64String); @@ -1072,7 +1072,7 @@ jspb.BinaryReader.prototype.readPackedUint64String = function() { /** * Reads a packed sint32 field, which consists of a length header and a list of * zigzag varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedSint32 = function() { return this.readPackedField_(this.decoder_.readZigzagVarint32); @@ -1082,7 +1082,7 @@ jspb.BinaryReader.prototype.readPackedSint32 = function() { /** * Reads a packed sint64 field, which consists of a length header and a list of * zigzag varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedSint64 = function() { return this.readPackedField_(this.decoder_.readZigzagVarint64); @@ -1092,7 +1092,7 @@ jspb.BinaryReader.prototype.readPackedSint64 = function() { /** * Reads a packed sint64 field, which consists of a length header and a list of * zigzag varints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedSint64String = function() { return this.readPackedField_(this.decoder_.readZigzagVarint64String); @@ -1102,7 +1102,7 @@ jspb.BinaryReader.prototype.readPackedSint64String = function() { /** * Reads a packed fixed32 field, which consists of a length header and a list * of unsigned 32-bit ints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedFixed32 = function() { return this.readPackedField_(this.decoder_.readUint32); @@ -1112,7 +1112,7 @@ jspb.BinaryReader.prototype.readPackedFixed32 = function() { /** * Reads a packed fixed64 field, which consists of a length header and a list * of unsigned 64-bit ints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedFixed64 = function() { return this.readPackedField_(this.decoder_.readUint64); @@ -1122,7 +1122,7 @@ jspb.BinaryReader.prototype.readPackedFixed64 = function() { /** * Reads a packed fixed64 field, which consists of a length header and a list * of unsigned 64-bit ints. Returns a list of strings. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedFixed64String = function() { return this.readPackedField_(this.decoder_.readUint64String); @@ -1132,7 +1132,7 @@ jspb.BinaryReader.prototype.readPackedFixed64String = function() { /** * Reads a packed sfixed32 field, which consists of a length header and a list * of 32-bit ints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedSfixed32 = function() { return this.readPackedField_(this.decoder_.readInt32); @@ -1142,7 +1142,7 @@ jspb.BinaryReader.prototype.readPackedSfixed32 = function() { /** * Reads a packed sfixed64 field, which consists of a length header and a list * of 64-bit ints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedSfixed64 = function() { return this.readPackedField_(this.decoder_.readInt64); @@ -1152,7 +1152,7 @@ jspb.BinaryReader.prototype.readPackedSfixed64 = function() { /** * Reads a packed sfixed64 field, which consists of a length header and a list * of 64-bit ints. Returns a list of strings. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedSfixed64String = function() { return this.readPackedField_(this.decoder_.readInt64String); @@ -1162,7 +1162,7 @@ jspb.BinaryReader.prototype.readPackedSfixed64String = function() { /** * Reads a packed float field, which consists of a length header and a list of * floats. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedFloat = function() { return this.readPackedField_(this.decoder_.readFloat); @@ -1172,7 +1172,7 @@ jspb.BinaryReader.prototype.readPackedFloat = function() { /** * Reads a packed double field, which consists of a length header and a list of * doubles. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedDouble = function() { return this.readPackedField_(this.decoder_.readDouble); @@ -1182,7 +1182,7 @@ jspb.BinaryReader.prototype.readPackedDouble = function() { /** * Reads a packed bool field, which consists of a length header and a list of * unsigned varints. - * @return {!Array.<boolean>} + * @return {!Array<boolean>} */ jspb.BinaryReader.prototype.readPackedBool = function() { return this.readPackedField_(this.decoder_.readBool); @@ -1192,7 +1192,7 @@ jspb.BinaryReader.prototype.readPackedBool = function() { /** * Reads a packed enum field, which consists of a length header and a list of * unsigned varints. - * @return {!Array.<number>} + * @return {!Array<number>} */ jspb.BinaryReader.prototype.readPackedEnum = function() { return this.readPackedField_(this.decoder_.readEnum); @@ -1202,7 +1202,7 @@ jspb.BinaryReader.prototype.readPackedEnum = function() { /** * Reads a packed varint hash64 field, which consists of a length header and a * list of varint hash64s. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedVarintHash64 = function() { return this.readPackedField_(this.decoder_.readVarintHash64); @@ -1212,7 +1212,7 @@ jspb.BinaryReader.prototype.readPackedVarintHash64 = function() { /** * Reads a packed fixed hash64 field, which consists of a length header and a * list of fixed hash64s. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.BinaryReader.prototype.readPackedFixedHash64 = function() { return this.readPackedField_(this.decoder_.readFixedHash64); diff --git a/js/binary/utils.js b/js/binary/utils.js index c706bff4..55a9ccd4 100644 --- a/js/binary/utils.js +++ b/js/binary/utils.js @@ -431,7 +431,7 @@ jspb.utils.joinHash64 = function(bitsLow, bitsHigh) { /** * Individual digits for number->string conversion. - * @const {!Array.<string>} + * @const {!Array<string>} */ jspb.utils.DIGITS = [ '0', '1', '2', '3', '4', '5', '6', '7', @@ -554,10 +554,10 @@ jspb.utils.hash64ToDecimalString = function(hash, signed) { /** * Converts an array of 8-character hash strings into their decimal * representations. - * @param {!Array.<string>} hashes The array of hash strings to convert. + * @param {!Array<string>} hashes The array of hash strings to convert. * @param {boolean} signed True if we should treat the hash string as encoding * a signed integer. - * @return {!Array.<string>} + * @return {!Array<string>} */ jspb.utils.hash64ArrayToDecimalStrings = function(hashes, signed) { var result = new Array(hashes.length); @@ -971,8 +971,12 @@ jspb.utils.byteSourceToUint8Array = function(data) { return /** @type {!Uint8Array} */(new Uint8Array(data)); } + if (data.constructor === Buffer) { + return /** @type {!Uint8Array} */(new Uint8Array(data)); + } + if (data.constructor === Array) { - data = /** @type {!Array.<number>} */(data); + data = /** @type {!Array<number>} */(data); return /** @type {!Uint8Array} */(new Uint8Array(data)); } diff --git a/js/binary/utils_test.js b/js/binary/utils_test.js index 6b481dce..13450644 100644 --- a/js/binary/utils_test.js +++ b/js/binary/utils_test.js @@ -657,7 +657,7 @@ describe('binaryUtilsTest', function() { // Converting Uint8Arrays into Uint8Arrays should be a no-op. assertEquals(sourceBytes, convert(sourceBytes)); - // Converting Array.<numbers> into Uint8Arrays should work. + // Converting Array<numbers> into Uint8Arrays should work. check(convert(sourceData)); // Converting ArrayBuffers into Uint8Arrays should work. diff --git a/js/binary/writer.js b/js/binary/writer.js index 037e92b2..287d29c3 100644 --- a/js/binary/writer.js +++ b/js/binary/writer.js @@ -102,7 +102,7 @@ jspb.BinaryWriter = function() { * A stack of bookmarks containing the parent blocks for each message started * via beginSubMessage(), needed as bookkeeping for endSubMessage(). * TODO(aappleby): Deprecated, users should be calling writeMessage(). - * @private {!Array.<!Array.<number>>} + * @private {!Array<!Array<number>>} */ this.bookmarks_ = []; }; @@ -126,7 +126,7 @@ jspb.BinaryWriter.prototype.appendUint8Array_ = function(arr) { * Begins a new message by writing the field header and returning a bookmark * which we will use to patch in the message length to in endDelimited_ below. * @param {number} field - * @return {!Array.<number>} + * @return {!Array<number>} * @private */ jspb.BinaryWriter.prototype.beginDelimited_ = function(field) { @@ -143,7 +143,7 @@ jspb.BinaryWriter.prototype.beginDelimited_ = function(field) { * Ends a message by encoding the _change_ in length of the buffer to the * parent block and adds the number of bytes needed to encode that length to * the total byte length. - * @param {!Array.<number>} bookmark + * @param {!Array<number>} bookmark * @private */ jspb.BinaryWriter.prototype.endDelimited_ = function(bookmark) { @@ -236,10 +236,12 @@ jspb.BinaryWriter.prototype.getResultBuffer = function() { /** * Converts the encoded data into a base64-encoded string. + * @param {boolean=} opt_webSafe True indicates we should use a websafe + * alphabet, which does not require escaping for use in URLs. * @return {string} */ -jspb.BinaryWriter.prototype.getResultBase64String = function() { - return goog.crypt.base64.encodeByteArray(this.getResultBuffer()); +jspb.BinaryWriter.prototype.getResultBase64String = function(opt_webSafe) { + return goog.crypt.base64.encodeByteArray(this.getResultBuffer(), opt_webSafe); }; @@ -855,7 +857,7 @@ jspb.BinaryWriter.prototype.writeVarintHash64 = function(field, value) { /** * Writes an array of numbers to the buffer as a repeated 32-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedInt32 = function(field, value) { if (value == null) return; @@ -869,7 +871,7 @@ jspb.BinaryWriter.prototype.writeRepeatedInt32 = function(field, value) { * Writes an array of numbers formatted as strings to the buffer as a repeated * 32-bit int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of ints to write. + * @param {?Array<string>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedInt32String = function(field, value) { if (value == null) return; @@ -882,7 +884,7 @@ jspb.BinaryWriter.prototype.writeRepeatedInt32String = function(field, value) { /** * Writes an array of numbers to the buffer as a repeated 64-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedInt64 = function(field, value) { if (value == null) return; @@ -896,7 +898,7 @@ jspb.BinaryWriter.prototype.writeRepeatedInt64 = function(field, value) { * Writes an array of numbers formatted as strings to the buffer as a repeated * 64-bit int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of ints to write. + * @param {?Array<string>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedInt64String = function(field, value) { if (value == null) return; @@ -910,7 +912,7 @@ jspb.BinaryWriter.prototype.writeRepeatedInt64String = function(field, value) { * Writes an array numbers to the buffer as a repeated unsigned 32-bit int * field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedUint32 = function(field, value) { if (value == null) return; @@ -924,7 +926,7 @@ jspb.BinaryWriter.prototype.writeRepeatedUint32 = function(field, value) { * Writes an array of numbers formatted as strings to the buffer as a repeated * unsigned 32-bit int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of ints to write. + * @param {?Array<string>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedUint32String = function(field, value) { if (value == null) return; @@ -938,7 +940,7 @@ jspb.BinaryWriter.prototype.writeRepeatedUint32String = function(field, value) { * Writes an array numbers to the buffer as a repeated unsigned 64-bit int * field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedUint64 = function(field, value) { if (value == null) return; @@ -952,7 +954,7 @@ jspb.BinaryWriter.prototype.writeRepeatedUint64 = function(field, value) { * Writes an array of numbers formatted as strings to the buffer as a repeated * unsigned 64-bit int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of ints to write. + * @param {?Array<string>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedUint64String = function(field, value) { if (value == null) return; @@ -965,7 +967,7 @@ jspb.BinaryWriter.prototype.writeRepeatedUint64String = function(field, value) { /** * Writes an array numbers to the buffer as a repeated signed 32-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedSint32 = function(field, value) { if (value == null) return; @@ -978,7 +980,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSint32 = function(field, value) { /** * Writes an array numbers to the buffer as a repeated signed 64-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedSint64 = function(field, value) { if (value == null) return; @@ -991,7 +993,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSint64 = function(field, value) { /** * Writes an array numbers to the buffer as a repeated signed 64-bit int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of ints to write. + * @param {?Array<string>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedSint64String = function(field, value) { if (value == null) return; @@ -1005,7 +1007,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSint64String = function(field, value) { * Writes an array of numbers to the buffer as a repeated fixed32 field. This * works for both signed and unsigned fixed32s. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedFixed32 = function(field, value) { if (value == null) return; @@ -1019,7 +1021,7 @@ jspb.BinaryWriter.prototype.writeRepeatedFixed32 = function(field, value) { * Writes an array of numbers to the buffer as a repeated fixed64 field. This * works for both signed and unsigned fixed64s. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedFixed64 = function(field, value) { if (value == null) return; @@ -1033,7 +1035,7 @@ jspb.BinaryWriter.prototype.writeRepeatedFixed64 = function(field, value) { * Writes an array of numbers to the buffer as a repeated fixed64 field. This * works for both signed and unsigned fixed64s. * @param {number} field The field number. - * @param {?Array.<string>} value The array of decimal strings to write. + * @param {?Array<string>} value The array of decimal strings to write. */ jspb.BinaryWriter.prototype.writeRepeatedFixed64String = function( field, value) { @@ -1047,7 +1049,7 @@ jspb.BinaryWriter.prototype.writeRepeatedFixed64String = function( /** * Writes an array of numbers to the buffer as a repeated sfixed32 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedSfixed32 = function(field, value) { if (value == null) return; @@ -1060,7 +1062,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSfixed32 = function(field, value) { /** * Writes an array of numbers to the buffer as a repeated sfixed64 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedSfixed64 = function(field, value) { if (value == null) return; @@ -1074,7 +1076,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSfixed64 = function(field, value) { * Writes an array of decimal strings to the buffer as a repeated sfixed64 * field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of decimal strings to write. + * @param {?Array<string>} value The array of decimal strings to write. */ jspb.BinaryWriter.prototype.writeRepeatedSfixed64String = function(field, value) { if (value == null) return; @@ -1087,7 +1089,7 @@ jspb.BinaryWriter.prototype.writeRepeatedSfixed64String = function(field, value) /** * Writes an array of numbers to the buffer as a repeated float field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedFloat = function(field, value) { if (value == null) return; @@ -1100,7 +1102,7 @@ jspb.BinaryWriter.prototype.writeRepeatedFloat = function(field, value) { /** * Writes an array of numbers to the buffer as a repeated double field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedDouble = function(field, value) { if (value == null) return; @@ -1113,7 +1115,7 @@ jspb.BinaryWriter.prototype.writeRepeatedDouble = function(field, value) { /** * Writes an array of booleans to the buffer as a repeated bool field. * @param {number} field The field number. - * @param {?Array.<boolean>} value The array of ints to write. + * @param {?Array<boolean>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedBool = function(field, value) { if (value == null) return; @@ -1126,7 +1128,7 @@ jspb.BinaryWriter.prototype.writeRepeatedBool = function(field, value) { /** * Writes an array of enums to the buffer as a repeated enum field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writeRepeatedEnum = function(field, value) { if (value == null) return; @@ -1139,7 +1141,7 @@ jspb.BinaryWriter.prototype.writeRepeatedEnum = function(field, value) { /** * Writes an array of strings to the buffer as a repeated string field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of strings to write. + * @param {?Array<string>} value The array of strings to write. */ jspb.BinaryWriter.prototype.writeRepeatedString = function(field, value) { if (value == null) return; @@ -1152,7 +1154,7 @@ jspb.BinaryWriter.prototype.writeRepeatedString = function(field, value) { /** * Writes an array of arbitrary byte fields to the buffer. * @param {number} field The field number. - * @param {?Array.<!jspb.ByteSource>} value The arrays of arrays of bytes to + * @param {?Array<!jspb.ByteSource>} value The arrays of arrays of bytes to * write. */ jspb.BinaryWriter.prototype.writeRepeatedBytes = function(field, value) { @@ -1167,7 +1169,7 @@ jspb.BinaryWriter.prototype.writeRepeatedBytes = function(field, value) { * Writes an array of messages to the buffer. * @template MessageType * @param {number} field The field number. - * @param {?Array.<MessageType>} value The array of messages to + * @param {?Array<MessageType>} value The array of messages to * write. * @param {function(MessageType, !jspb.BinaryWriter)} writerCallback * Will be invoked with the value to write and the writer to write it with. @@ -1187,7 +1189,7 @@ jspb.BinaryWriter.prototype.writeRepeatedMessage = function( * Writes an array of group messages to the buffer. * @template MessageType * @param {number} field The field number. - * @param {?Array.<MessageType>} value The array of messages to + * @param {?Array<MessageType>} value The array of messages to * write. * @param {function(MessageType, !jspb.BinaryWriter)} writerCallback * Will be invoked with the value to write and the writer to write it with. @@ -1207,7 +1209,7 @@ jspb.BinaryWriter.prototype.writeRepeatedGroup = function( * Writes a 64-bit hash string field (8 characters @ 8 bits of data each) to * the buffer. * @param {number} field The field number. - * @param {?Array.<string>} value The array of hashes to write. + * @param {?Array<string>} value The array of hashes to write. */ jspb.BinaryWriter.prototype.writeRepeatedFixedHash64 = function(field, value) { @@ -1222,7 +1224,7 @@ jspb.BinaryWriter.prototype.writeRepeatedFixedHash64 = * Writes a repeated 64-bit hash string field (8 characters @ 8 bits of data * each) to the buffer. * @param {number} field The field number. - * @param {?Array.<string>} value The array of hashes to write. + * @param {?Array<string>} value The array of hashes to write. */ jspb.BinaryWriter.prototype.writeRepeatedVarintHash64 = function(field, value) { @@ -1236,7 +1238,7 @@ jspb.BinaryWriter.prototype.writeRepeatedVarintHash64 = /** * Writes an array of numbers to the buffer as a packed 32-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedInt32 = function(field, value) { if (value == null || !value.length) return; @@ -1252,7 +1254,7 @@ jspb.BinaryWriter.prototype.writePackedInt32 = function(field, value) { * Writes an array of numbers represented as strings to the buffer as a packed * 32-bit int field. * @param {number} field - * @param {?Array.<string>} value + * @param {?Array<string>} value */ jspb.BinaryWriter.prototype.writePackedInt32String = function(field, value) { if (value == null || !value.length) return; @@ -1267,7 +1269,7 @@ jspb.BinaryWriter.prototype.writePackedInt32String = function(field, value) { /** * Writes an array of numbers to the buffer as a packed 64-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedInt64 = function(field, value) { if (value == null || !value.length) return; @@ -1283,7 +1285,7 @@ jspb.BinaryWriter.prototype.writePackedInt64 = function(field, value) { * Writes an array of numbers represented as strings to the buffer as a packed * 64-bit int field. * @param {number} field - * @param {?Array.<string>} value + * @param {?Array<string>} value */ jspb.BinaryWriter.prototype.writePackedInt64String = function(field, value) { if (value == null || !value.length) return; @@ -1299,7 +1301,7 @@ jspb.BinaryWriter.prototype.writePackedInt64String = function(field, value) { /** * Writes an array numbers to the buffer as a packed unsigned 32-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedUint32 = function(field, value) { if (value == null || !value.length) return; @@ -1315,7 +1317,7 @@ jspb.BinaryWriter.prototype.writePackedUint32 = function(field, value) { * Writes an array of numbers represented as strings to the buffer as a packed * unsigned 32-bit int field. * @param {number} field - * @param {?Array.<string>} value + * @param {?Array<string>} value */ jspb.BinaryWriter.prototype.writePackedUint32String = function(field, value) { @@ -1331,7 +1333,7 @@ jspb.BinaryWriter.prototype.writePackedUint32String = /** * Writes an array numbers to the buffer as a packed unsigned 64-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedUint64 = function(field, value) { if (value == null || !value.length) return; @@ -1347,7 +1349,7 @@ jspb.BinaryWriter.prototype.writePackedUint64 = function(field, value) { * Writes an array of numbers represented as strings to the buffer as a packed * unsigned 64-bit int field. * @param {number} field - * @param {?Array.<string>} value + * @param {?Array<string>} value */ jspb.BinaryWriter.prototype.writePackedUint64String = function(field, value) { @@ -1364,7 +1366,7 @@ jspb.BinaryWriter.prototype.writePackedUint64String = /** * Writes an array numbers to the buffer as a packed signed 32-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedSint32 = function(field, value) { if (value == null || !value.length) return; @@ -1379,7 +1381,7 @@ jspb.BinaryWriter.prototype.writePackedSint32 = function(field, value) { /** * Writes an array of numbers to the buffer as a packed signed 64-bit int field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedSint64 = function(field, value) { if (value == null || !value.length) return; @@ -1395,7 +1397,7 @@ jspb.BinaryWriter.prototype.writePackedSint64 = function(field, value) { * Writes an array of decimal strings to the buffer as a packed signed 64-bit * int field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of decimal strings to write. + * @param {?Array<string>} value The array of decimal strings to write. */ jspb.BinaryWriter.prototype.writePackedSint64String = function(field, value) { if (value == null || !value.length) return; @@ -1411,7 +1413,7 @@ jspb.BinaryWriter.prototype.writePackedSint64String = function(field, value) { /** * Writes an array of numbers to the buffer as a packed fixed32 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedFixed32 = function(field, value) { if (value == null || !value.length) return; @@ -1426,7 +1428,7 @@ jspb.BinaryWriter.prototype.writePackedFixed32 = function(field, value) { /** * Writes an array of numbers to the buffer as a packed fixed64 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedFixed64 = function(field, value) { if (value == null || !value.length) return; @@ -1442,7 +1444,7 @@ jspb.BinaryWriter.prototype.writePackedFixed64 = function(field, value) { * Writes an array of numbers represented as strings to the buffer as a packed * fixed64 field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of strings to write. + * @param {?Array<string>} value The array of strings to write. */ jspb.BinaryWriter.prototype.writePackedFixed64String = function(field, value) { if (value == null || !value.length) return; @@ -1458,7 +1460,7 @@ jspb.BinaryWriter.prototype.writePackedFixed64String = function(field, value) { /** * Writes an array of numbers to the buffer as a packed sfixed32 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedSfixed32 = function(field, value) { if (value == null || !value.length) return; @@ -1473,7 +1475,7 @@ jspb.BinaryWriter.prototype.writePackedSfixed32 = function(field, value) { /** * Writes an array of numbers to the buffer as a packed sfixed64 field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedSfixed64 = function(field, value) { if (value == null || !value.length) return; @@ -1488,7 +1490,7 @@ jspb.BinaryWriter.prototype.writePackedSfixed64 = function(field, value) { /** * Writes an array of numbers to the buffer as a packed sfixed64 field. * @param {number} field The field number. - * @param {?Array.<string>} value The array of decimal strings to write. + * @param {?Array<string>} value The array of decimal strings to write. */ jspb.BinaryWriter.prototype.writePackedSfixed64String = function(field, value) { if (value == null || !value.length) return; @@ -1503,7 +1505,7 @@ jspb.BinaryWriter.prototype.writePackedSfixed64String = function(field, value) { /** * Writes an array of numbers to the buffer as a packed float field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedFloat = function(field, value) { if (value == null || !value.length) return; @@ -1518,7 +1520,7 @@ jspb.BinaryWriter.prototype.writePackedFloat = function(field, value) { /** * Writes an array of numbers to the buffer as a packed double field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedDouble = function(field, value) { if (value == null || !value.length) return; @@ -1533,7 +1535,7 @@ jspb.BinaryWriter.prototype.writePackedDouble = function(field, value) { /** * Writes an array of booleans to the buffer as a packed bool field. * @param {number} field The field number. - * @param {?Array.<boolean>} value The array of ints to write. + * @param {?Array<boolean>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedBool = function(field, value) { if (value == null || !value.length) return; @@ -1548,7 +1550,7 @@ jspb.BinaryWriter.prototype.writePackedBool = function(field, value) { /** * Writes an array of enums to the buffer as a packed enum field. * @param {number} field The field number. - * @param {?Array.<number>} value The array of ints to write. + * @param {?Array<number>} value The array of ints to write. */ jspb.BinaryWriter.prototype.writePackedEnum = function(field, value) { if (value == null || !value.length) return; @@ -1564,7 +1566,7 @@ jspb.BinaryWriter.prototype.writePackedEnum = function(field, value) { * Writes a 64-bit hash string field (8 characters @ 8 bits of data each) to * the buffer. * @param {number} field The field number. - * @param {?Array.<string>} value The array of hashes to write. + * @param {?Array<string>} value The array of hashes to write. */ jspb.BinaryWriter.prototype.writePackedFixedHash64 = function(field, value) { if (value == null || !value.length) return; @@ -1580,7 +1582,7 @@ jspb.BinaryWriter.prototype.writePackedFixedHash64 = function(field, value) { * Writes a 64-bit hash string field (8 characters @ 8 bits of data each) to * the buffer. * @param {number} field The field number. - * @param {?Array.<string>} value The array of hashes to write. + * @param {?Array<string>} value The array of hashes to write. */ jspb.BinaryWriter.prototype.writePackedVarintHash64 = function(field, value) { if (value == null || !value.length) return; diff --git a/js/binary/writer_test.js b/js/binary/writer_test.js index 118eecfc..8a9a1bb0 100644 --- a/js/binary/writer_test.js +++ b/js/binary/writer_test.js @@ -118,4 +118,16 @@ describe('binaryWriterTest', function() { var buffer = writer.getResultBuffer(); assertEquals(expected, goog.crypt.byteArrayToHex(buffer)); }); + + + /** + * Tests websafe encodings for base64 strings. + */ + it('testWebSafeOption', function() { + var writer = new jspb.BinaryWriter(); + writer.writeBytes(1, new Uint8Array([127])); + assertEquals('CgF/', writer.getResultBase64String()); + assertEquals('CgF/', writer.getResultBase64String(false)); + assertEquals('CgF_', writer.getResultBase64String(true)); + }); }); |