Bump versions, improve and simplify server
parent
bd1d8e7bd3
commit
5ee1a6ace7
|
@ -1,68 +0,0 @@
|
|||
// GENERATED CODE -- DO NOT EDIT!
|
||||
|
||||
'use strict';
|
||||
var grpc = require('grpc');
|
||||
var framebuffer_pb = require('./framebuffer_pb.js');
|
||||
|
||||
function serialize_DrawResponse(arg) {
|
||||
if (!(arg instanceof framebuffer_pb.DrawResponse)) {
|
||||
throw new Error('Expected argument of type DrawResponse');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_DrawResponse(buffer_arg) {
|
||||
return framebuffer_pb.DrawResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_FrameBuffer(arg) {
|
||||
if (!(arg instanceof framebuffer_pb.FrameBuffer)) {
|
||||
throw new Error('Expected argument of type FrameBuffer');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_FrameBuffer(buffer_arg) {
|
||||
return framebuffer_pb.FrameBuffer.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_FrameSequence(arg) {
|
||||
if (!(arg instanceof framebuffer_pb.FrameSequence)) {
|
||||
throw new Error('Expected argument of type FrameSequence');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_FrameSequence(buffer_arg) {
|
||||
return framebuffer_pb.FrameSequence.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
|
||||
var DrawerService = exports.DrawerService = {
|
||||
// DrawFrame draws one frame
|
||||
drawFrame: {
|
||||
path: '/Drawer/DrawFrame',
|
||||
requestStream: false,
|
||||
responseStream: false,
|
||||
requestType: framebuffer_pb.FrameBuffer,
|
||||
responseType: framebuffer_pb.DrawResponse,
|
||||
requestSerialize: serialize_FrameBuffer,
|
||||
requestDeserialize: deserialize_FrameBuffer,
|
||||
responseSerialize: serialize_DrawResponse,
|
||||
responseDeserialize: deserialize_DrawResponse,
|
||||
},
|
||||
// DrawFrames draws a series of frames
|
||||
drawFrames: {
|
||||
path: '/Drawer/DrawFrames',
|
||||
requestStream: false,
|
||||
responseStream: false,
|
||||
requestType: framebuffer_pb.FrameSequence,
|
||||
responseType: framebuffer_pb.DrawResponse,
|
||||
requestSerialize: serialize_FrameSequence,
|
||||
requestDeserialize: deserialize_FrameSequence,
|
||||
responseSerialize: serialize_DrawResponse,
|
||||
responseDeserialize: deserialize_DrawResponse,
|
||||
},
|
||||
};
|
||||
|
||||
exports.DrawerClient = grpc.makeGenericClientConstructor(DrawerService);
|
|
@ -1,778 +0,0 @@
|
|||
/**
|
||||
* @fileoverview
|
||||
* @enhanceable
|
||||
* @public
|
||||
*/
|
||||
// GENERATED CODE -- DO NOT EDIT!
|
||||
|
||||
var jspb = require('google-protobuf');
|
||||
var goog = jspb;
|
||||
var global = Function('return this')();
|
||||
|
||||
goog.exportSymbol('proto.DrawResponse', null, global);
|
||||
goog.exportSymbol('proto.FrameBuffer', null, global);
|
||||
goog.exportSymbol('proto.FrameData', null, global);
|
||||
goog.exportSymbol('proto.FrameSequence', null, global);
|
||||
goog.exportSymbol('proto.Layer', null, global);
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.FrameData = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, proto.FrameData.repeatedFields_, null);
|
||||
};
|
||||
goog.inherits(proto.FrameData, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.FrameData.displayName = 'proto.FrameData';
|
||||
}
|
||||
/**
|
||||
* List of repeated fields within this message type.
|
||||
* @private {!Array<number>}
|
||||
* @const
|
||||
*/
|
||||
proto.FrameData.repeatedFields_ = [1];
|
||||
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameData.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.FrameData.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.FrameData} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameData.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
dotsList: jspb.Message.getField(msg, 1),
|
||||
fill: msg.getFill()
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.FrameData}
|
||||
*/
|
||||
proto.FrameData.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.FrameData;
|
||||
return proto.FrameData.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.FrameData} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.FrameData}
|
||||
*/
|
||||
proto.FrameData.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
case 1:
|
||||
var value = /** @type {!Array.<number>} */ (reader.readPackedFixed32());
|
||||
msg.setDotsList(value);
|
||||
break;
|
||||
case 2:
|
||||
var value = /** @type {number} */ (reader.readFixed32());
|
||||
msg.setFill(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.FrameData} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameData.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.FrameData.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameData.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
f = this.getDotsList();
|
||||
if (f.length > 0) {
|
||||
writer.writePackedFixed32(
|
||||
1,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = this.getFill();
|
||||
if (f !== 0) {
|
||||
writer.writeFixed32(
|
||||
2,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.FrameData} The clone.
|
||||
*/
|
||||
proto.FrameData.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.FrameData} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* repeated fixed32 dots = 1;
|
||||
* If you change this array by adding, removing or replacing elements, or if you
|
||||
* replace the array itself, then you must call the setter to update it.
|
||||
* @return {!Array.<number>}
|
||||
*/
|
||||
proto.FrameData.prototype.getDotsList = function() {
|
||||
return /** @type {!Array.<number>} */ (jspb.Message.getField(this, 1));
|
||||
};
|
||||
|
||||
|
||||
/** @param {Array.<number>} value */
|
||||
proto.FrameData.prototype.setDotsList = function(value) {
|
||||
jspb.Message.setField(this, 1, value || []);
|
||||
};
|
||||
|
||||
|
||||
proto.FrameData.prototype.clearDotsList = function() {
|
||||
jspb.Message.setField(this, 1, []);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional fixed32 fill = 2;
|
||||
* @return {number}
|
||||
*/
|
||||
proto.FrameData.prototype.getFill = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
|
||||
};
|
||||
|
||||
|
||||
/** @param {number} value */
|
||||
proto.FrameData.prototype.setFill = function(value) {
|
||||
jspb.Message.setField(this, 2, value);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.FrameBuffer = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
};
|
||||
goog.inherits(proto.FrameBuffer, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.FrameBuffer.displayName = 'proto.FrameBuffer';
|
||||
}
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.FrameBuffer.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.FrameBuffer} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameBuffer.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
frame: (f = msg.getFrame()) && proto.FrameData.toObject(includeInstance, f),
|
||||
timestamp: msg.getTimestamp(),
|
||||
layer: msg.getLayer()
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.FrameBuffer}
|
||||
*/
|
||||
proto.FrameBuffer.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.FrameBuffer;
|
||||
return proto.FrameBuffer.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.FrameBuffer} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.FrameBuffer}
|
||||
*/
|
||||
proto.FrameBuffer.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
case 1:
|
||||
var value = new proto.FrameData;
|
||||
reader.readMessage(value,proto.FrameData.deserializeBinaryFromReader);
|
||||
msg.setFrame(value);
|
||||
break;
|
||||
case 3:
|
||||
var value = /** @type {number} */ (reader.readFixed32());
|
||||
msg.setTimestamp(value);
|
||||
break;
|
||||
case 4:
|
||||
var value = /** @type {!proto.Layer} */ (reader.readEnum());
|
||||
msg.setLayer(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.FrameBuffer} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameBuffer.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameBuffer.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
f = this.getFrame();
|
||||
if (f != null) {
|
||||
writer.writeMessage(
|
||||
1,
|
||||
f,
|
||||
proto.FrameData.serializeBinaryToWriter
|
||||
);
|
||||
}
|
||||
f = this.getTimestamp();
|
||||
if (f !== 0) {
|
||||
writer.writeFixed32(
|
||||
3,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = this.getLayer();
|
||||
if (f !== 0.0) {
|
||||
writer.writeEnum(
|
||||
4,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.FrameBuffer} The clone.
|
||||
*/
|
||||
proto.FrameBuffer.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.FrameBuffer} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional FrameData frame = 1;
|
||||
* @return {proto.FrameData}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.getFrame = function() {
|
||||
return /** @type{proto.FrameData} */ (
|
||||
jspb.Message.getWrapperField(this, proto.FrameData, 1));
|
||||
};
|
||||
|
||||
|
||||
/** @param {proto.FrameData|undefined} value */
|
||||
proto.FrameBuffer.prototype.setFrame = function(value) {
|
||||
jspb.Message.setWrapperField(this, 1, value);
|
||||
};
|
||||
|
||||
|
||||
proto.FrameBuffer.prototype.clearFrame = function() {
|
||||
this.setFrame(undefined);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns whether this field is set.
|
||||
* @return{!boolean}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.hasFrame = function() {
|
||||
return jspb.Message.getField(this, 1) != null;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional fixed32 timestamp = 3;
|
||||
* @return {number}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.getTimestamp = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldProto3(this, 3, 0));
|
||||
};
|
||||
|
||||
|
||||
/** @param {number} value */
|
||||
proto.FrameBuffer.prototype.setTimestamp = function(value) {
|
||||
jspb.Message.setField(this, 3, value);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional Layer layer = 4;
|
||||
* @return {!proto.Layer}
|
||||
*/
|
||||
proto.FrameBuffer.prototype.getLayer = function() {
|
||||
return /** @type {!proto.Layer} */ (jspb.Message.getFieldProto3(this, 4, 0));
|
||||
};
|
||||
|
||||
|
||||
/** @param {!proto.Layer} value */
|
||||
proto.FrameBuffer.prototype.setLayer = function(value) {
|
||||
jspb.Message.setField(this, 4, value);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.FrameSequence = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, proto.FrameSequence.repeatedFields_, null);
|
||||
};
|
||||
goog.inherits(proto.FrameSequence, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.FrameSequence.displayName = 'proto.FrameSequence';
|
||||
}
|
||||
/**
|
||||
* List of repeated fields within this message type.
|
||||
* @private {!Array<number>}
|
||||
* @const
|
||||
*/
|
||||
proto.FrameSequence.repeatedFields_ = [1];
|
||||
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameSequence.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.FrameSequence.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.FrameSequence} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.FrameSequence.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
framesList: jspb.Message.toObjectList(msg.getFramesList(),
|
||||
proto.FrameBuffer.toObject, includeInstance)
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.FrameSequence}
|
||||
*/
|
||||
proto.FrameSequence.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.FrameSequence;
|
||||
return proto.FrameSequence.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.FrameSequence} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.FrameSequence}
|
||||
*/
|
||||
proto.FrameSequence.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
case 1:
|
||||
var value = new proto.FrameBuffer;
|
||||
reader.readMessage(value,proto.FrameBuffer.deserializeBinaryFromReader);
|
||||
msg.getFramesList().push(value);
|
||||
msg.setFramesList(msg.getFramesList());
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.FrameSequence} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameSequence.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.FrameSequence.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.FrameSequence.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
f = this.getFramesList();
|
||||
if (f.length > 0) {
|
||||
writer.writeRepeatedMessage(
|
||||
1,
|
||||
f,
|
||||
proto.FrameBuffer.serializeBinaryToWriter
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.FrameSequence} The clone.
|
||||
*/
|
||||
proto.FrameSequence.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.FrameSequence} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* repeated FrameBuffer frames = 1;
|
||||
* If you change this array by adding, removing or replacing elements, or if you
|
||||
* replace the array itself, then you must call the setter to update it.
|
||||
* @return {!Array.<!proto.FrameBuffer>}
|
||||
*/
|
||||
proto.FrameSequence.prototype.getFramesList = function() {
|
||||
return /** @type{!Array.<!proto.FrameBuffer>} */ (
|
||||
jspb.Message.getRepeatedWrapperField(this, proto.FrameBuffer, 1));
|
||||
};
|
||||
|
||||
|
||||
/** @param {Array.<!proto.FrameBuffer>} value */
|
||||
proto.FrameSequence.prototype.setFramesList = function(value) {
|
||||
jspb.Message.setRepeatedWrapperField(this, 1, value);
|
||||
};
|
||||
|
||||
|
||||
proto.FrameSequence.prototype.clearFramesList = function() {
|
||||
this.setFramesList([]);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.DrawResponse = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
};
|
||||
goog.inherits(proto.DrawResponse, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.DrawResponse.displayName = 'proto.DrawResponse';
|
||||
}
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.DrawResponse.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.DrawResponse.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.DrawResponse} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.DrawResponse.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.DrawResponse}
|
||||
*/
|
||||
proto.DrawResponse.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.DrawResponse;
|
||||
return proto.DrawResponse.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.DrawResponse} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.DrawResponse}
|
||||
*/
|
||||
proto.DrawResponse.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.DrawResponse} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.DrawResponse.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.DrawResponse.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.DrawResponse.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.DrawResponse} The clone.
|
||||
*/
|
||||
proto.DrawResponse.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.DrawResponse} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
proto.Layer = {
|
||||
NONE: 0,
|
||||
LIGHT: 10,
|
||||
COLOR: 20,
|
||||
NOTIFICATIONS: 90,
|
||||
GENERAL_0: 40,
|
||||
GENERAL_1: 41,
|
||||
GENERAL_2: 42,
|
||||
GENERAL_3: 43,
|
||||
GENERAL_4: 44,
|
||||
GENERAL_5: 45,
|
||||
GENERAL_6: 46,
|
||||
GENERAL_7: 47,
|
||||
GENERAL_8: 48,
|
||||
GENERAL_9: 49
|
||||
};
|
||||
|
||||
goog.object.extend(exports, proto);
|
|
@ -6,9 +6,9 @@
|
|||
"author": "Ambrose Chua",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@grpc/grpc-js": "^0.3.6",
|
||||
"@grpc/proto-loader": "^0.5.0",
|
||||
"express": "^4.16.4",
|
||||
"grpc": "^1.19.0"
|
||||
"@grpc/grpc-js": "^1.0.1",
|
||||
"@grpc/proto-loader": "^0.5.4",
|
||||
"express": "^4.17.1",
|
||||
"grpc": "^1.24.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ const express = require('express');
|
|||
const app = express();
|
||||
const PORT = 5001;
|
||||
|
||||
const PIXEL_COUNT = 275;
|
||||
|
||||
// TODO: async
|
||||
app.post('/on', (req, res, next) => {
|
||||
|
@ -31,7 +32,7 @@ app.post('/on', (req, res, next) => {
|
|||
}
|
||||
client.drawFrame({
|
||||
frame: {
|
||||
fill,
|
||||
dots: Array(PIXEL_COUNT-1).fill(fill).concat([0xBBFF0000]),
|
||||
},
|
||||
layer: 'LIGHT',
|
||||
}, (err, resp) => {
|
||||
|
@ -45,7 +46,7 @@ app.post('/on', (req, res, next) => {
|
|||
app.post('/off', (req, res, next) => {
|
||||
client.drawFrame({
|
||||
frame: {
|
||||
fill: 0x00000000,
|
||||
dots: Array(PIXEL_COUNT).fill(0x00000000),
|
||||
},
|
||||
layer: 'LIGHT',
|
||||
}, (err, resp) => {
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@grpc/grpc-js@^0.3.6":
|
||||
version "0.3.6"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.3.6.tgz#d9b52043907170d38e06711d9477fde29ab46fa8"
|
||||
integrity sha512-SmLNuPGlUur64bNS9aHZguqWDVQ8+Df1CGn+xsh7l6T2wiP5ArOMlywZ3TZo6z/rwKtGQgUJY9ZrPYUmHEXd/Q==
|
||||
"@grpc/grpc-js@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.0.1.tgz#1c09a7a3e276cb1003ff3497f5707e5a74d6c6c5"
|
||||
integrity sha512-qgdvnNy8IY9LExVNne1vFZAgiVfbZAP+8j0Z8fSN23pjmxlIn5YKze8JV6QkSHIYPmqiufcIw7VNeo4Z+64WlA==
|
||||
dependencies:
|
||||
semver "^5.5.0"
|
||||
semver "^6.2.0"
|
||||
|
||||
"@grpc/proto-loader@^0.5.0":
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.0.tgz#6d21930530db6089ed68a90f10a22b76fdc3387d"
|
||||
integrity sha512-kF5toaC4A7PRjAuIxE0fYAv8WarJ6JELYlmHpkoo4EGTFvXUsQwVfyj2bgPV2023M77s2TtDn36wPMJB0sz8nA==
|
||||
"@grpc/proto-loader@^0.5.4":
|
||||
version "0.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.4.tgz#038a3820540f621eeb1b05d81fbedfb045e14de0"
|
||||
integrity sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA==
|
||||
dependencies:
|
||||
lodash.camelcase "^4.3.0"
|
||||
protobufjs "^6.8.6"
|
||||
|
@ -70,28 +70,36 @@
|
|||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||
|
||||
"@types/long@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef"
|
||||
integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==
|
||||
"@types/bytebuffer@^5.0.40":
|
||||
version "5.0.40"
|
||||
resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.40.tgz#d6faac40dcfb09cd856cdc4c01d3690ba536d3ee"
|
||||
integrity sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==
|
||||
dependencies:
|
||||
"@types/long" "*"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/node@^10.1.0":
|
||||
version "10.14.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5"
|
||||
integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==
|
||||
"@types/long@*", "@types/long@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
|
||||
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
|
||||
|
||||
"@types/node@*", "@types/node@^13.7.0":
|
||||
version "13.13.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54"
|
||||
integrity sha512-LB2R1Oyhpg8gu4SON/mfforE525+Hi/M1ineICEDftqNVTyFg1aRIeGuTvXAoWHc4nbrFncWtJgMmoyRvuGh7A==
|
||||
|
||||
abbrev@1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||
|
||||
accepts@~1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
|
||||
integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
|
||||
accepts@~1.3.7:
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
|
||||
dependencies:
|
||||
mime-types "~2.1.18"
|
||||
negotiator "0.6.1"
|
||||
mime-types "~2.1.24"
|
||||
negotiator "0.6.2"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
|
@ -134,21 +142,21 @@ balanced-match@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||
|
||||
body-parser@1.18.3:
|
||||
version "1.18.3"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
|
||||
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
|
||||
body-parser@1.19.0:
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
|
||||
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
|
||||
dependencies:
|
||||
bytes "3.0.0"
|
||||
bytes "3.1.0"
|
||||
content-type "~1.0.4"
|
||||
debug "2.6.9"
|
||||
depd "~1.1.2"
|
||||
http-errors "~1.6.3"
|
||||
iconv-lite "0.4.23"
|
||||
http-errors "1.7.2"
|
||||
iconv-lite "0.4.24"
|
||||
on-finished "~2.3.0"
|
||||
qs "6.5.2"
|
||||
raw-body "2.3.3"
|
||||
type-is "~1.6.16"
|
||||
qs "6.7.0"
|
||||
raw-body "2.4.0"
|
||||
type-is "~1.6.17"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
|
@ -165,10 +173,10 @@ bytebuffer@~5:
|
|||
dependencies:
|
||||
long "~3"
|
||||
|
||||
bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
|
||||
bytes@3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
|
||||
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
|
||||
|
||||
camelcase@^2.0.1:
|
||||
version "2.1.1"
|
||||
|
@ -176,9 +184,9 @@ camelcase@^2.0.1:
|
|||
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
|
||||
integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
cliui@^3.0.3:
|
||||
version "3.2.0"
|
||||
|
@ -209,10 +217,12 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
|
||||
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
|
||||
|
||||
content-disposition@0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
|
||||
integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
|
||||
content-disposition@0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
|
||||
integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
|
||||
dependencies:
|
||||
safe-buffer "5.1.2"
|
||||
|
||||
content-type@~1.0.4:
|
||||
version "1.0.4"
|
||||
|
@ -224,10 +234,10 @@ cookie-signature@1.0.6:
|
|||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
|
||||
|
||||
cookie@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
||||
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
|
||||
cookie@0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
|
||||
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
|
@ -241,10 +251,10 @@ debug@2.6.9:
|
|||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
|
||||
debug@^3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
|
@ -298,53 +308,53 @@ etag@~1.8.1:
|
|||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
|
||||
|
||||
express@^4.16.4:
|
||||
version "4.16.4"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
|
||||
integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
|
||||
express@^4.17.1:
|
||||
version "4.17.1"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
||||
integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
|
||||
dependencies:
|
||||
accepts "~1.3.5"
|
||||
accepts "~1.3.7"
|
||||
array-flatten "1.1.1"
|
||||
body-parser "1.18.3"
|
||||
content-disposition "0.5.2"
|
||||
body-parser "1.19.0"
|
||||
content-disposition "0.5.3"
|
||||
content-type "~1.0.4"
|
||||
cookie "0.3.1"
|
||||
cookie "0.4.0"
|
||||
cookie-signature "1.0.6"
|
||||
debug "2.6.9"
|
||||
depd "~1.1.2"
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
etag "~1.8.1"
|
||||
finalhandler "1.1.1"
|
||||
finalhandler "~1.1.2"
|
||||
fresh "0.5.2"
|
||||
merge-descriptors "1.0.1"
|
||||
methods "~1.1.2"
|
||||
on-finished "~2.3.0"
|
||||
parseurl "~1.3.2"
|
||||
parseurl "~1.3.3"
|
||||
path-to-regexp "0.1.7"
|
||||
proxy-addr "~2.0.4"
|
||||
qs "6.5.2"
|
||||
range-parser "~1.2.0"
|
||||
proxy-addr "~2.0.5"
|
||||
qs "6.7.0"
|
||||
range-parser "~1.2.1"
|
||||
safe-buffer "5.1.2"
|
||||
send "0.16.2"
|
||||
serve-static "1.13.2"
|
||||
setprototypeof "1.1.0"
|
||||
statuses "~1.4.0"
|
||||
type-is "~1.6.16"
|
||||
send "0.17.1"
|
||||
serve-static "1.14.1"
|
||||
setprototypeof "1.1.1"
|
||||
statuses "~1.5.0"
|
||||
type-is "~1.6.18"
|
||||
utils-merge "1.0.1"
|
||||
vary "~1.1.2"
|
||||
|
||||
finalhandler@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
|
||||
integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
|
||||
finalhandler@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
|
||||
integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
on-finished "~2.3.0"
|
||||
parseurl "~1.3.2"
|
||||
statuses "~1.4.0"
|
||||
parseurl "~1.3.3"
|
||||
statuses "~1.5.0"
|
||||
unpipe "~1.0.0"
|
||||
|
||||
forwarded@~0.1.2:
|
||||
|
@ -358,11 +368,11 @@ fresh@0.5.2:
|
|||
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
|
||||
|
||||
fs-minipass@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
|
||||
integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
|
||||
dependencies:
|
||||
minipass "^2.2.1"
|
||||
minipass "^2.6.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -384,9 +394,9 @@ gauge@~2.7.3:
|
|||
wide-align "^1.1.0"
|
||||
|
||||
glob@^7.0.5, glob@^7.1.3:
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
|
||||
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
|
@ -395,15 +405,16 @@ glob@^7.0.5, glob@^7.1.3:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
grpc@^1.19.0:
|
||||
version "1.19.0"
|
||||
resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.19.0.tgz#129fb30923ea2fa7a9b2623f9e7930eda91a242f"
|
||||
integrity sha512-xX+jZ1M3YXjngsRj/gTxB4EwM0WoWUr54DmyNq9xTeg1oSuVaTPD/PK9wnZKOJWTt1pkeFspXqwJPhddZNxHOA==
|
||||
grpc@^1.24.2:
|
||||
version "1.24.2"
|
||||
resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.24.2.tgz#76d047bfa7b05b607cbbe3abb99065dcefe0c099"
|
||||
integrity sha512-EG3WH6AWMVvAiV15d+lr+K77HJ/KV/3FvMpjKjulXHbTwgDZkhkcWbwhxFAoTdxTkQvy0WFcO3Nog50QBbHZWw==
|
||||
dependencies:
|
||||
"@types/bytebuffer" "^5.0.40"
|
||||
lodash.camelcase "^4.3.0"
|
||||
lodash.clone "^4.5.0"
|
||||
nan "^2.0.0"
|
||||
node-pre-gyp "^0.12.0"
|
||||
nan "^2.13.2"
|
||||
node-pre-gyp "^0.14.0"
|
||||
protobufjs "^5.0.3"
|
||||
|
||||
has-unicode@^2.0.0:
|
||||
|
@ -411,24 +422,29 @@ has-unicode@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
||||
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
|
||||
|
||||
http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
|
||||
version "1.6.3"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
|
||||
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
|
||||
http-errors@1.7.2:
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
|
||||
integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
|
||||
dependencies:
|
||||
depd "~1.1.2"
|
||||
inherits "2.0.3"
|
||||
setprototypeof "1.1.0"
|
||||
statuses ">= 1.4.0 < 2"
|
||||
setprototypeof "1.1.1"
|
||||
statuses ">= 1.5.0 < 2"
|
||||
toidentifier "1.0.0"
|
||||
|
||||
iconv-lite@0.4.23:
|
||||
version "0.4.23"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
|
||||
integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
|
||||
http-errors@~1.7.2:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
|
||||
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
depd "~1.1.2"
|
||||
inherits "2.0.4"
|
||||
setprototypeof "1.1.1"
|
||||
statuses ">= 1.5.0 < 2"
|
||||
toidentifier "1.0.0"
|
||||
|
||||
iconv-lite@^0.4.4:
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.4:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
|
@ -436,9 +452,9 @@ iconv-lite@^0.4.4:
|
|||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
ignore-walk@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
|
||||
integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
|
||||
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
|
||||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
|
@ -450,7 +466,12 @@ inflight@^1.0.4:
|
|||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@2.0.3, inherits@~2.0.3:
|
||||
inherits@2, inherits@2.0.4, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
inherits@2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
@ -465,10 +486,10 @@ invert-kv@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
|
||||
|
||||
ipaddr.js@1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
|
||||
integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4=
|
||||
ipaddr.js@1.9.1:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||
|
||||
is-fullwidth-code-point@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -529,22 +550,22 @@ methods@~1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
||||
|
||||
mime-db@~1.38.0:
|
||||
version "1.38.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"
|
||||
integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==
|
||||
mime-db@1.43.0:
|
||||
version "1.43.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
|
||||
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
|
||||
|
||||
mime-types@~2.1.18:
|
||||
version "2.1.22"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd"
|
||||
integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==
|
||||
mime-types@~2.1.24:
|
||||
version "2.1.26"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
|
||||
integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==
|
||||
dependencies:
|
||||
mime-db "~1.38.0"
|
||||
mime-db "1.43.0"
|
||||
|
||||
mime@1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
|
||||
integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
|
||||
mime@1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
|
@ -553,71 +574,71 @@ minimatch@^3.0.4:
|
|||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
||||
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
|
||||
minimist@^1.2.0, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||
|
||||
minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
|
||||
|
||||
minipass@^2.2.1, minipass@^2.3.4:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
|
||||
integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
|
||||
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||
dependencies:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.0"
|
||||
|
||||
minizlib@^1.1.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
|
||||
integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
|
||||
minizlib@^1.2.1:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
|
||||
dependencies:
|
||||
minipass "^2.2.1"
|
||||
minipass "^2.9.0"
|
||||
|
||||
mkdirp@^0.5.0, mkdirp@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
minimist "^1.2.5"
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||
|
||||
ms@^2.1.1:
|
||||
ms@2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
nan@^2.0.0:
|
||||
version "2.13.2"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
|
||||
integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==
|
||||
ms@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
nan@^2.13.2:
|
||||
version "2.14.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
|
||||
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
|
||||
|
||||
needle@^2.2.1:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.0.tgz#ce3fea21197267bacb310705a7bbe24f2a3a3492"
|
||||
integrity sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a"
|
||||
integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==
|
||||
dependencies:
|
||||
debug "^4.1.0"
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
negotiator@0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
|
||||
integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
|
||||
negotiator@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||
|
||||
node-pre-gyp@^0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
|
||||
integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
|
||||
node-pre-gyp@^0.14.0:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
||||
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
|
@ -628,28 +649,36 @@ node-pre-gyp@^0.12.0:
|
|||
rc "^1.2.7"
|
||||
rimraf "^2.6.1"
|
||||
semver "^5.3.0"
|
||||
tar "^4"
|
||||
tar "^4.4.2"
|
||||
|
||||
nopt@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
|
||||
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
osenv "^0.1.4"
|
||||
|
||||
npm-bundled@^1.0.1:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
|
||||
integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
|
||||
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
|
||||
dependencies:
|
||||
npm-normalize-package-bin "^1.0.1"
|
||||
|
||||
npm-normalize-package-bin@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
||||
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
||||
|
||||
npm-packlist@^1.1.6:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
|
||||
integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
|
||||
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
|
||||
dependencies:
|
||||
ignore-walk "^3.0.1"
|
||||
npm-bundled "^1.0.1"
|
||||
npm-normalize-package-bin "^1.0.1"
|
||||
|
||||
npmlog@^4.0.2:
|
||||
version "4.1.2"
|
||||
|
@ -715,10 +744,10 @@ osenv@^0.1.4:
|
|||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.0"
|
||||
|
||||
parseurl@~1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||
integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
|
||||
parseurl@~1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
|
@ -731,9 +760,9 @@ path-to-regexp@0.1.7:
|
|||
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
||||
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
protobufjs@^5.0.3:
|
||||
version "5.0.3"
|
||||
|
@ -746,9 +775,9 @@ protobufjs@^5.0.3:
|
|||
yargs "^3.10.0"
|
||||
|
||||
protobufjs@^6.8.6:
|
||||
version "6.8.8"
|
||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c"
|
||||
integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==
|
||||
version "6.9.0"
|
||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.9.0.tgz#c08b2bf636682598e6fabbf0edb0b1256ff090bd"
|
||||
integrity sha512-LlGVfEWDXoI/STstRDdZZKb/qusoAWUnmLg9R8OLSO473mBLWHowx8clbX5/+mKDEI+v7GzjoK9tRPZMMcoTrg==
|
||||
dependencies:
|
||||
"@protobufjs/aspromise" "^1.1.2"
|
||||
"@protobufjs/base64" "^1.1.2"
|
||||
|
@ -760,36 +789,36 @@ protobufjs@^6.8.6:
|
|||
"@protobufjs/path" "^1.1.2"
|
||||
"@protobufjs/pool" "^1.1.0"
|
||||
"@protobufjs/utf8" "^1.1.0"
|
||||
"@types/long" "^4.0.0"
|
||||
"@types/node" "^10.1.0"
|
||||
"@types/long" "^4.0.1"
|
||||
"@types/node" "^13.7.0"
|
||||
long "^4.0.0"
|
||||
|
||||
proxy-addr@~2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
|
||||
integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==
|
||||
proxy-addr@~2.0.5:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
|
||||
integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
|
||||
dependencies:
|
||||
forwarded "~0.1.2"
|
||||
ipaddr.js "1.8.0"
|
||||
ipaddr.js "1.9.1"
|
||||
|
||||
qs@6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
qs@6.7.0:
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
|
||||
|
||||
range-parser@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
|
||||
integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
|
||||
range-parser@~1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||
|
||||
raw-body@2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
|
||||
integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
|
||||
raw-body@2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
|
||||
integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
|
||||
dependencies:
|
||||
bytes "3.0.0"
|
||||
http-errors "1.6.3"
|
||||
iconv-lite "0.4.23"
|
||||
bytes "3.1.0"
|
||||
http-errors "1.7.2"
|
||||
iconv-lite "0.4.24"
|
||||
unpipe "1.0.0"
|
||||
|
||||
rc@^1.2.7:
|
||||
|
@ -803,9 +832,9 @@ rc@^1.2.7:
|
|||
strip-json-comments "~2.0.1"
|
||||
|
||||
readable-stream@^2.0.6:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
|
||||
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
|
||||
version "2.3.7"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||
dependencies:
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.3"
|
||||
|
@ -816,17 +845,22 @@ readable-stream@^2.0.6:
|
|||
util-deprecate "~1.0.1"
|
||||
|
||||
rimraf@^2.6.1:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
safe-buffer@5.1.2, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
safe-buffer@^5.1.2:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
|
@ -837,15 +871,20 @@ sax@^1.2.4:
|
|||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
semver@^5.3.0, semver@^5.5.0:
|
||||
version "5.7.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
|
||||
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
|
||||
semver@^5.3.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
send@0.16.2:
|
||||
version "0.16.2"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
|
||||
integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
|
||||
semver@^6.2.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
send@0.17.1:
|
||||
version "0.17.1"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
|
||||
integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
depd "~1.1.2"
|
||||
|
@ -854,48 +893,43 @@ send@0.16.2:
|
|||
escape-html "~1.0.3"
|
||||
etag "~1.8.1"
|
||||
fresh "0.5.2"
|
||||
http-errors "~1.6.2"
|
||||
mime "1.4.1"
|
||||
ms "2.0.0"
|
||||
http-errors "~1.7.2"
|
||||
mime "1.6.0"
|
||||
ms "2.1.1"
|
||||
on-finished "~2.3.0"
|
||||
range-parser "~1.2.0"
|
||||
statuses "~1.4.0"
|
||||
range-parser "~1.2.1"
|
||||
statuses "~1.5.0"
|
||||
|
||||
serve-static@1.13.2:
|
||||
version "1.13.2"
|
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
|
||||
integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
|
||||
serve-static@1.14.1:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
|
||||
integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
|
||||
dependencies:
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
parseurl "~1.3.2"
|
||||
send "0.16.2"
|
||||
parseurl "~1.3.3"
|
||||
send "0.17.1"
|
||||
|
||||
set-blocking@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
setprototypeof@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
||||
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
|
||||
setprototypeof@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
|
||||
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
|
||||
|
||||
signal-exit@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||
|
||||
"statuses@>= 1.4.0 < 2":
|
||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
||||
|
||||
statuses@~1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
|
||||
integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
|
||||
|
||||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
|
@ -939,26 +973,31 @@ strip-json-comments@~2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
tar@^4:
|
||||
version "4.4.8"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
|
||||
integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
|
||||
tar@^4.4.2:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
fs-minipass "^1.2.5"
|
||||
minipass "^2.3.4"
|
||||
minizlib "^1.1.1"
|
||||
minipass "^2.8.6"
|
||||
minizlib "^1.2.1"
|
||||
mkdirp "^0.5.0"
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
type-is@~1.6.16:
|
||||
version "1.6.16"
|
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
|
||||
integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==
|
||||
toidentifier@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||
|
||||
type-is@~1.6.17, type-is@~1.6.18:
|
||||
version "1.6.18"
|
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
||||
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
|
||||
dependencies:
|
||||
media-typer "0.3.0"
|
||||
mime-types "~2.1.18"
|
||||
mime-types "~2.1.24"
|
||||
|
||||
unpipe@1.0.0, unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -1010,10 +1049,10 @@ y18n@^3.2.0:
|
|||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
|
||||
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
|
||||
yallist@^3.0.0, yallist@^3.0.3:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||
|
||||
yargs@^3.10.0:
|
||||
version "3.32.0"
|
||||
|
|
47
draw.go
47
draw.go
|
@ -2,15 +2,20 @@ package main // import "github.com/serverwentdown/leet"
|
|||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
|
||||
ws2811 "github.com/rpi-ws281x/rpi-ws281x-go"
|
||||
)
|
||||
|
||||
// TODO: full-sized grid with multiple channels mapped onto the grid
|
||||
|
||||
const (
|
||||
MAX_LAYERS = 10
|
||||
)
|
||||
|
||||
type Drawer struct {
|
||||
Length int
|
||||
layers [][]uint32
|
||||
length int
|
||||
device *ws2811.WS2811
|
||||
}
|
||||
|
||||
|
@ -20,8 +25,14 @@ func NewDrawer(length int) (*Drawer, error) {
|
|||
opt.Channels[0].Brightness = 255
|
||||
|
||||
d := &Drawer{}
|
||||
d.length = length
|
||||
d.layers = make([][]uint32, 100)
|
||||
d.Length = length
|
||||
d.layers = make([][]uint32, MAX_LAYERS)
|
||||
for i := range d.layers {
|
||||
d.layers[i] = make([]uint32, length)
|
||||
}
|
||||
for i := range d.layers[0] {
|
||||
d.layers[0][i] = 0xff000000
|
||||
}
|
||||
dev, err := ws2811.MakeWS2811(&opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -36,40 +47,37 @@ func NewDrawer(length int) (*Drawer, error) {
|
|||
}
|
||||
|
||||
func (d *Drawer) SetLayer(layer int32, dots []uint32) {
|
||||
d.layers[layer] = dots
|
||||
}
|
||||
|
||||
func (d *Drawer) SetLayerOrFill(layer int32, dots []uint32, fill uint32) {
|
||||
if dots == nil {
|
||||
fillDots := make([]uint32, d.length)
|
||||
for i := 0; i < d.length; i++ {
|
||||
fillDots[i] = fill
|
||||
for i, dot := range dots {
|
||||
if i > d.Length {
|
||||
break
|
||||
}
|
||||
d.layers[layer] = fillDots
|
||||
} else {
|
||||
d.SetLayer(layer, dots)
|
||||
d.layers[layer][i] = dot
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Drawer) Draw() error {
|
||||
for i := 0; i < len(d.device.Leds(0)); i++ {
|
||||
timeMixStart := time.Now()
|
||||
for i := 0; i < d.Length; i++ {
|
||||
dot := mix(d.layers, i)
|
||||
d.device.Leds(0)[i] = dot
|
||||
}
|
||||
timeMixEnd := time.Now()
|
||||
|
||||
if err := d.device.Render(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("mix took %d milliseconds", timeMixEnd.Sub(timeMixStart)/1000/1000)
|
||||
return nil
|
||||
}
|
||||
|
||||
func mix(layers [][]uint32, j int) uint32 {
|
||||
func mix(layers [][]uint32, i int) uint32 {
|
||||
var base uint32
|
||||
for i := 0; i < len(layers); i++ {
|
||||
if j >= len(layers[i]) {
|
||||
for _, layer := range layers {
|
||||
if i >= len(layer) {
|
||||
continue
|
||||
}
|
||||
base = mixColors(base, layers[i][j])
|
||||
base = mixColors(layer[i], base)
|
||||
}
|
||||
return base
|
||||
}
|
||||
|
@ -81,7 +89,6 @@ func mixColors(a uint32, b uint32) uint32 {
|
|||
ag, bg := a&uint32(0x0000FF00)>>8, b&uint32(0x0000FF00)>>8
|
||||
ab, bb := a&uint32(0x000000FF), b&uint32(0x000000FF)
|
||||
// Apply alpha computation to each channel
|
||||
log.Println(aa, ar, ag, ab, ba, br, bg, bb)
|
||||
oa := uint32(ba*(255-aa)/255 + aa)
|
||||
or := uint32(br*ba*(255-aa)/(255*255) + ar*aa/255)
|
||||
og := uint32(bg*ba*(255-aa)/(255*255) + ag*aa/255)
|
||||
|
|
|
@ -1,204 +1,208 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.21.0
|
||||
// protoc (unknown)
|
||||
// source: framebuffer.proto
|
||||
|
||||
package framebuffer
|
||||
|
||||
import (
|
||||
context "context"
|
||||
fmt "fmt"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
grpc "google.golang.org/grpc"
|
||||
math "math"
|
||||
codes "google.golang.org/grpc/codes"
|
||||
status "google.golang.org/grpc/status"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the proto package it is being compiled against.
|
||||
// A compilation error at this line likely means your copy of the
|
||||
// proto package needs to be updated.
|
||||
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||
// This is a compile-time assertion that a sufficiently up-to-date version
|
||||
// of the legacy proto package is being used.
|
||||
const _ = proto.ProtoPackageIsVersion4
|
||||
|
||||
//
|
||||
//Layer defines some default layers for compositing animations onto for
|
||||
//various purposes, and also defines some generic layers. Each service
|
||||
//should be allocated a unique enum eventually.
|
||||
//
|
||||
//In the future, this system should be replaced by a configuration file
|
||||
//that assigns priorities to each service.
|
||||
//various purposes.
|
||||
type Layer int32
|
||||
|
||||
const (
|
||||
Layer_NONE Layer = 0
|
||||
// Well-known layers
|
||||
Layer_LIGHT Layer = 10
|
||||
Layer_COLOR Layer = 20
|
||||
Layer_NOTIFICATIONS Layer = 90
|
||||
// Public layers
|
||||
Layer_GENERAL_0 Layer = 40
|
||||
Layer_GENERAL_1 Layer = 41
|
||||
Layer_GENERAL_2 Layer = 42
|
||||
Layer_GENERAL_3 Layer = 43
|
||||
Layer_GENERAL_4 Layer = 44
|
||||
Layer_GENERAL_5 Layer = 45
|
||||
Layer_GENERAL_6 Layer = 46
|
||||
Layer_GENERAL_7 Layer = 47
|
||||
Layer_GENERAL_8 Layer = 48
|
||||
Layer_GENERAL_9 Layer = 49
|
||||
Layer_LIGHT Layer = 1
|
||||
Layer_COLOR Layer = 2
|
||||
Layer_NOTIFICATIONS Layer = 8
|
||||
Layer_PRIORITY Layer = 9
|
||||
)
|
||||
|
||||
var Layer_name = map[int32]string{
|
||||
0: "NONE",
|
||||
10: "LIGHT",
|
||||
20: "COLOR",
|
||||
90: "NOTIFICATIONS",
|
||||
40: "GENERAL_0",
|
||||
41: "GENERAL_1",
|
||||
42: "GENERAL_2",
|
||||
43: "GENERAL_3",
|
||||
44: "GENERAL_4",
|
||||
45: "GENERAL_5",
|
||||
46: "GENERAL_6",
|
||||
47: "GENERAL_7",
|
||||
48: "GENERAL_8",
|
||||
49: "GENERAL_9",
|
||||
}
|
||||
// Enum value maps for Layer.
|
||||
var (
|
||||
Layer_name = map[int32]string{
|
||||
0: "NONE",
|
||||
1: "LIGHT",
|
||||
2: "COLOR",
|
||||
8: "NOTIFICATIONS",
|
||||
9: "PRIORITY",
|
||||
}
|
||||
Layer_value = map[string]int32{
|
||||
"NONE": 0,
|
||||
"LIGHT": 1,
|
||||
"COLOR": 2,
|
||||
"NOTIFICATIONS": 8,
|
||||
"PRIORITY": 9,
|
||||
}
|
||||
)
|
||||
|
||||
var Layer_value = map[string]int32{
|
||||
"NONE": 0,
|
||||
"LIGHT": 10,
|
||||
"COLOR": 20,
|
||||
"NOTIFICATIONS": 90,
|
||||
"GENERAL_0": 40,
|
||||
"GENERAL_1": 41,
|
||||
"GENERAL_2": 42,
|
||||
"GENERAL_3": 43,
|
||||
"GENERAL_4": 44,
|
||||
"GENERAL_5": 45,
|
||||
"GENERAL_6": 46,
|
||||
"GENERAL_7": 47,
|
||||
"GENERAL_8": 48,
|
||||
"GENERAL_9": 49,
|
||||
func (x Layer) Enum() *Layer {
|
||||
p := new(Layer)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
|
||||
func (x Layer) String() string {
|
||||
return proto.EnumName(Layer_name, int32(x))
|
||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||
}
|
||||
|
||||
func (Layer) Descriptor() protoreflect.EnumDescriptor {
|
||||
return file_framebuffer_proto_enumTypes[0].Descriptor()
|
||||
}
|
||||
|
||||
func (Layer) Type() protoreflect.EnumType {
|
||||
return &file_framebuffer_proto_enumTypes[0]
|
||||
}
|
||||
|
||||
func (x Layer) Number() protoreflect.EnumNumber {
|
||||
return protoreflect.EnumNumber(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use Layer.Descriptor instead.
|
||||
func (Layer) EnumDescriptor() ([]byte, []int) {
|
||||
return fileDescriptor_4476fbda566a3634, []int{0}
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
//
|
||||
//FrameData represents either an array of dots or a fixed fill color to apply
|
||||
//to all dots. Having two use cases makes it easier for applications to
|
||||
//draw solid fill colors.
|
||||
//FrameData represents an ARGB array of dots.
|
||||
type FrameData struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// ARGB
|
||||
Dots []uint32 `protobuf:"fixed32,1,rep,packed,name=dots,proto3" json:"dots,omitempty"`
|
||||
Fill uint32 `protobuf:"fixed32,2,opt,name=fill,proto3" json:"fill,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Dots []uint32 `protobuf:"fixed32,1,rep,packed,name=dots,proto3" json:"dots,omitempty"`
|
||||
}
|
||||
|
||||
func (m *FrameData) Reset() { *m = FrameData{} }
|
||||
func (m *FrameData) String() string { return proto.CompactTextString(m) }
|
||||
func (*FrameData) ProtoMessage() {}
|
||||
func (x *FrameData) Reset() {
|
||||
*x = FrameData{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *FrameData) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*FrameData) ProtoMessage() {}
|
||||
|
||||
func (x *FrameData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use FrameData.ProtoReflect.Descriptor instead.
|
||||
func (*FrameData) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_4476fbda566a3634, []int{0}
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (m *FrameData) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_FrameData.Unmarshal(m, b)
|
||||
}
|
||||
func (m *FrameData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_FrameData.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *FrameData) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_FrameData.Merge(m, src)
|
||||
}
|
||||
func (m *FrameData) XXX_Size() int {
|
||||
return xxx_messageInfo_FrameData.Size(m)
|
||||
}
|
||||
func (m *FrameData) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_FrameData.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_FrameData proto.InternalMessageInfo
|
||||
|
||||
func (m *FrameData) GetDots() []uint32 {
|
||||
if m != nil {
|
||||
return m.Dots
|
||||
func (x *FrameData) GetDots() []uint32 {
|
||||
if x != nil {
|
||||
return x.Dots
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *FrameData) GetFill() uint32 {
|
||||
if m != nil {
|
||||
return m.Fill
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
//
|
||||
//FrameBuffer represents an entire frame together with a layer tag. It also
|
||||
//defines a timestamp that can be used within a FrameSequence to define the
|
||||
//duration a frame will be shown.
|
||||
type FrameBuffer struct {
|
||||
Frame *FrameData `protobuf:"bytes,1,opt,name=frame,proto3" json:"frame,omitempty"`
|
||||
Timestamp uint32 `protobuf:"fixed32,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
|
||||
Layer Layer `protobuf:"varint,4,opt,name=layer,proto3,enum=Layer" json:"layer,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Frame *FrameData `protobuf:"bytes,1,opt,name=frame,proto3" json:"frame,omitempty"`
|
||||
// Time offset from start of frame in milliseconds
|
||||
Timestamp uint32 `protobuf:"fixed32,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
|
||||
// Layer to apply the frame to
|
||||
Layer Layer `protobuf:"varint,3,opt,name=layer,proto3,enum=Layer" json:"layer,omitempty"`
|
||||
}
|
||||
|
||||
func (m *FrameBuffer) Reset() { *m = FrameBuffer{} }
|
||||
func (m *FrameBuffer) String() string { return proto.CompactTextString(m) }
|
||||
func (*FrameBuffer) ProtoMessage() {}
|
||||
func (x *FrameBuffer) Reset() {
|
||||
*x = FrameBuffer{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *FrameBuffer) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*FrameBuffer) ProtoMessage() {}
|
||||
|
||||
func (x *FrameBuffer) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use FrameBuffer.ProtoReflect.Descriptor instead.
|
||||
func (*FrameBuffer) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_4476fbda566a3634, []int{1}
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (m *FrameBuffer) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_FrameBuffer.Unmarshal(m, b)
|
||||
}
|
||||
func (m *FrameBuffer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_FrameBuffer.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *FrameBuffer) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_FrameBuffer.Merge(m, src)
|
||||
}
|
||||
func (m *FrameBuffer) XXX_Size() int {
|
||||
return xxx_messageInfo_FrameBuffer.Size(m)
|
||||
}
|
||||
func (m *FrameBuffer) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_FrameBuffer.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_FrameBuffer proto.InternalMessageInfo
|
||||
|
||||
func (m *FrameBuffer) GetFrame() *FrameData {
|
||||
if m != nil {
|
||||
return m.Frame
|
||||
func (x *FrameBuffer) GetFrame() *FrameData {
|
||||
if x != nil {
|
||||
return x.Frame
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *FrameBuffer) GetTimestamp() uint32 {
|
||||
if m != nil {
|
||||
return m.Timestamp
|
||||
func (x *FrameBuffer) GetTimestamp() uint32 {
|
||||
if x != nil {
|
||||
return x.Timestamp
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *FrameBuffer) GetLayer() Layer {
|
||||
if m != nil {
|
||||
return m.Layer
|
||||
func (x *FrameBuffer) GetLayer() Layer {
|
||||
if x != nil {
|
||||
return x.Layer
|
||||
}
|
||||
return Layer_NONE
|
||||
}
|
||||
|
@ -211,118 +215,370 @@ func (m *FrameBuffer) GetLayer() Layer {
|
|||
//In the future, this should have more metadata like looping counts and async
|
||||
//animations.
|
||||
type FrameSequence struct {
|
||||
Frames []*FrameBuffer `protobuf:"bytes,1,rep,name=frames,proto3" json:"frames,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Frames []*FrameBuffer `protobuf:"bytes,1,rep,name=frames,proto3" json:"frames,omitempty"`
|
||||
// Number of times to loop the sequence
|
||||
Loop int32 `protobuf:"varint,2,opt,name=loop,proto3" json:"loop,omitempty"`
|
||||
}
|
||||
|
||||
func (m *FrameSequence) Reset() { *m = FrameSequence{} }
|
||||
func (m *FrameSequence) String() string { return proto.CompactTextString(m) }
|
||||
func (*FrameSequence) ProtoMessage() {}
|
||||
func (x *FrameSequence) Reset() {
|
||||
*x = FrameSequence{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *FrameSequence) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*FrameSequence) ProtoMessage() {}
|
||||
|
||||
func (x *FrameSequence) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use FrameSequence.ProtoReflect.Descriptor instead.
|
||||
func (*FrameSequence) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_4476fbda566a3634, []int{2}
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (m *FrameSequence) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_FrameSequence.Unmarshal(m, b)
|
||||
}
|
||||
func (m *FrameSequence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_FrameSequence.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *FrameSequence) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_FrameSequence.Merge(m, src)
|
||||
}
|
||||
func (m *FrameSequence) XXX_Size() int {
|
||||
return xxx_messageInfo_FrameSequence.Size(m)
|
||||
}
|
||||
func (m *FrameSequence) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_FrameSequence.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_FrameSequence proto.InternalMessageInfo
|
||||
|
||||
func (m *FrameSequence) GetFrames() []*FrameBuffer {
|
||||
if m != nil {
|
||||
return m.Frames
|
||||
func (x *FrameSequence) GetFrames() []*FrameBuffer {
|
||||
if x != nil {
|
||||
return x.Frames
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *FrameSequence) GetLoop() int32 {
|
||||
if x != nil {
|
||||
return x.Loop
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type DrawResponse struct {
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
}
|
||||
|
||||
func (m *DrawResponse) Reset() { *m = DrawResponse{} }
|
||||
func (m *DrawResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*DrawResponse) ProtoMessage() {}
|
||||
func (x *DrawResponse) Reset() {
|
||||
*x = DrawResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *DrawResponse) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*DrawResponse) ProtoMessage() {}
|
||||
|
||||
func (x *DrawResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use DrawResponse.ProtoReflect.Descriptor instead.
|
||||
func (*DrawResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_4476fbda566a3634, []int{3}
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (m *DrawResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DrawResponse.Unmarshal(m, b)
|
||||
}
|
||||
func (m *DrawResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_DrawResponse.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *DrawResponse) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_DrawResponse.Merge(m, src)
|
||||
}
|
||||
func (m *DrawResponse) XXX_Size() int {
|
||||
return xxx_messageInfo_DrawResponse.Size(m)
|
||||
}
|
||||
func (m *DrawResponse) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_DrawResponse.DiscardUnknown(m)
|
||||
type LengthRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
}
|
||||
|
||||
var xxx_messageInfo_DrawResponse proto.InternalMessageInfo
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("Layer", Layer_name, Layer_value)
|
||||
proto.RegisterType((*FrameData)(nil), "FrameData")
|
||||
proto.RegisterType((*FrameBuffer)(nil), "FrameBuffer")
|
||||
proto.RegisterType((*FrameSequence)(nil), "FrameSequence")
|
||||
proto.RegisterType((*DrawResponse)(nil), "DrawResponse")
|
||||
func (x *LengthRequest) Reset() {
|
||||
*x = LengthRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("framebuffer.proto", fileDescriptor_4476fbda566a3634) }
|
||||
func (x *LengthRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
var fileDescriptor_4476fbda566a3634 = []byte{
|
||||
// 349 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0x4f, 0x6f, 0xaa, 0x40,
|
||||
0x14, 0xc5, 0xe5, 0x29, 0xbc, 0xc7, 0x55, 0xcc, 0x78, 0xf3, 0x16, 0xe4, 0xc5, 0x05, 0x21, 0x6f,
|
||||
0x41, 0x6d, 0xa5, 0x8a, 0xb5, 0x7f, 0x96, 0xd6, 0x7f, 0x25, 0x21, 0x90, 0x8c, 0xae, 0xba, 0x69,
|
||||
0xd0, 0x0e, 0x89, 0xa9, 0x8a, 0x05, 0x4c, 0xd3, 0x6f, 0xd9, 0x8f, 0xd4, 0xcc, 0xd8, 0xd8, 0x31,
|
||||
0xdd, 0x9d, 0xdf, 0xb9, 0x97, 0x93, 0xcb, 0xc9, 0x40, 0x23, 0xc9, 0xe2, 0x0d, 0x5b, 0xec, 0x93,
|
||||
0x84, 0x65, 0xee, 0x2e, 0x4b, 0x8b, 0xd4, 0xee, 0x81, 0x3e, 0xe1, 0xe6, 0x28, 0x2e, 0x62, 0x44,
|
||||
0xa8, 0x3c, 0xa7, 0x45, 0x6e, 0x2a, 0x56, 0xd9, 0xf9, 0x4d, 0x85, 0xe6, 0x5e, 0xb2, 0x5a, 0xaf,
|
||||
0xcd, 0x5f, 0x96, 0xc2, 0x3d, 0xae, 0xed, 0x17, 0xa8, 0x8a, 0x8f, 0xee, 0x45, 0x12, 0x5a, 0xa0,
|
||||
0x8a, 0x60, 0x53, 0xb1, 0x14, 0xa7, 0xea, 0x81, 0x7b, 0x4c, 0xa4, 0x87, 0x01, 0x36, 0x41, 0x2f,
|
||||
0x56, 0x1b, 0x96, 0x17, 0xf1, 0x66, 0x67, 0x96, 0x45, 0xd2, 0xb7, 0x81, 0x4d, 0x50, 0xd7, 0xf1,
|
||||
0x3b, 0xcb, 0xcc, 0x8a, 0xa5, 0x38, 0x75, 0x4f, 0x73, 0x03, 0x4e, 0xf4, 0x60, 0xda, 0x7d, 0x30,
|
||||
0x44, 0xde, 0x8c, 0xbd, 0xee, 0xd9, 0x76, 0xc9, 0xf0, 0x3f, 0x68, 0x22, 0xf5, 0x70, 0x67, 0xd5,
|
||||
0xab, 0xb9, 0xd2, 0x31, 0xf4, 0x6b, 0x66, 0xd7, 0xa1, 0x36, 0xca, 0xe2, 0x37, 0xca, 0xf2, 0x5d,
|
||||
0xba, 0xcd, 0x59, 0xeb, 0x43, 0x01, 0x55, 0xe4, 0xe2, 0x1f, 0xa8, 0x84, 0x51, 0x38, 0x26, 0x25,
|
||||
0xd4, 0x41, 0x0d, 0xfc, 0xe9, 0xc3, 0x9c, 0x00, 0x97, 0xc3, 0x28, 0x88, 0x28, 0xf9, 0x8b, 0x0d,
|
||||
0x30, 0xc2, 0x68, 0xee, 0x4f, 0xfc, 0xe1, 0x60, 0xee, 0x47, 0xe1, 0x8c, 0x3c, 0xa2, 0x01, 0xfa,
|
||||
0x74, 0x1c, 0x8e, 0xe9, 0x20, 0x78, 0xea, 0x10, 0x47, 0xc6, 0x2e, 0x39, 0x93, 0xd1, 0x23, 0x2d,
|
||||
0x19, 0x7b, 0xe4, 0x5c, 0xc6, 0x2b, 0x72, 0x21, 0x63, 0x9f, 0xb4, 0x65, 0xbc, 0x26, 0xae, 0x8c,
|
||||
0x37, 0xe4, 0x52, 0xc6, 0x5b, 0xd2, 0x91, 0xf1, 0x8e, 0x74, 0xbd, 0x25, 0x68, 0xfc, 0x17, 0x59,
|
||||
0x86, 0x2d, 0xd0, 0xb9, 0x12, 0x3d, 0xe0, 0x49, 0x1f, 0xff, 0x0c, 0x57, 0xae, 0xc1, 0x2e, 0x61,
|
||||
0x1b, 0xe0, 0xb8, 0x9b, 0x63, 0xdd, 0x3d, 0x29, 0xf7, 0xc7, 0xfa, 0x42, 0x13, 0xef, 0xa4, 0xf7,
|
||||
0x19, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x99, 0xbe, 0xf0, 0x3c, 0x02, 0x00, 0x00,
|
||||
func (*LengthRequest) ProtoMessage() {}
|
||||
|
||||
func (x *LengthRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[4]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use LengthRequest.ProtoReflect.Descriptor instead.
|
||||
func (*LengthRequest) Descriptor() ([]byte, []int) {
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
type LengthResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Length uint32 `protobuf:"fixed32,1,opt,name=length,proto3" json:"length,omitempty"`
|
||||
}
|
||||
|
||||
func (x *LengthResponse) Reset() {
|
||||
*x = LengthResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_framebuffer_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *LengthResponse) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*LengthResponse) ProtoMessage() {}
|
||||
|
||||
func (x *LengthResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_framebuffer_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use LengthResponse.ProtoReflect.Descriptor instead.
|
||||
func (*LengthResponse) Descriptor() ([]byte, []int) {
|
||||
return file_framebuffer_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *LengthResponse) GetLength() uint32 {
|
||||
if x != nil {
|
||||
return x.Length
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
var File_framebuffer_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_framebuffer_proto_rawDesc = []byte{
|
||||
0x0a, 0x11, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0x1f, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61,
|
||||
0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x07, 0x52, 0x04,
|
||||
0x64, 0x6f, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x0b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x75, 0x66,
|
||||
0x66, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x05, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05,
|
||||
0x66, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
|
||||
0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
|
||||
0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x0e, 0x32, 0x06, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x05, 0x6c, 0x61, 0x79, 0x65,
|
||||
0x72, 0x22, 0x49, 0x0a, 0x0d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
|
||||
0x63, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
|
||||
0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72,
|
||||
0x52, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x6f, 0x70,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x6f, 0x6f, 0x70, 0x22, 0x0e, 0x0a, 0x0c,
|
||||
0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x0a, 0x0d,
|
||||
0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x28, 0x0a,
|
||||
0x0e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
|
||||
0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52,
|
||||
0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2a, 0x48, 0x0a, 0x05, 0x4c, 0x61, 0x79, 0x65, 0x72,
|
||||
0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x49,
|
||||
0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x02,
|
||||
0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
|
||||
0x53, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10,
|
||||
0x09, 0x32, 0x93, 0x01, 0x0a, 0x06, 0x44, 0x72, 0x61, 0x77, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x09,
|
||||
0x44, 0x72, 0x61, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x2e, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x1a, 0x0d, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0a, 0x44, 0x72, 0x61, 0x77,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x0e, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x65,
|
||||
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x0d, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4c, 0x65,
|
||||
0x6e, 0x67, 0x74, 0x68, 0x12, 0x0e, 0x2e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_framebuffer_proto_rawDescOnce sync.Once
|
||||
file_framebuffer_proto_rawDescData = file_framebuffer_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_framebuffer_proto_rawDescGZIP() []byte {
|
||||
file_framebuffer_proto_rawDescOnce.Do(func() {
|
||||
file_framebuffer_proto_rawDescData = protoimpl.X.CompressGZIP(file_framebuffer_proto_rawDescData)
|
||||
})
|
||||
return file_framebuffer_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_framebuffer_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_framebuffer_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
|
||||
var file_framebuffer_proto_goTypes = []interface{}{
|
||||
(Layer)(0), // 0: Layer
|
||||
(*FrameData)(nil), // 1: FrameData
|
||||
(*FrameBuffer)(nil), // 2: FrameBuffer
|
||||
(*FrameSequence)(nil), // 3: FrameSequence
|
||||
(*DrawResponse)(nil), // 4: DrawResponse
|
||||
(*LengthRequest)(nil), // 5: LengthRequest
|
||||
(*LengthResponse)(nil), // 6: LengthResponse
|
||||
}
|
||||
var file_framebuffer_proto_depIdxs = []int32{
|
||||
1, // 0: FrameBuffer.frame:type_name -> FrameData
|
||||
0, // 1: FrameBuffer.layer:type_name -> Layer
|
||||
2, // 2: FrameSequence.frames:type_name -> FrameBuffer
|
||||
2, // 3: Drawer.DrawFrame:input_type -> FrameBuffer
|
||||
3, // 4: Drawer.DrawFrames:input_type -> FrameSequence
|
||||
5, // 5: Drawer.GetLength:input_type -> LengthRequest
|
||||
4, // 6: Drawer.DrawFrame:output_type -> DrawResponse
|
||||
4, // 7: Drawer.DrawFrames:output_type -> DrawResponse
|
||||
6, // 8: Drawer.GetLength:output_type -> LengthResponse
|
||||
6, // [6:9] is the sub-list for method output_type
|
||||
3, // [3:6] is the sub-list for method input_type
|
||||
3, // [3:3] is the sub-list for extension type_name
|
||||
3, // [3:3] is the sub-list for extension extendee
|
||||
0, // [0:3] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_framebuffer_proto_init() }
|
||||
func file_framebuffer_proto_init() {
|
||||
if File_framebuffer_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_framebuffer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*FrameData); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_framebuffer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*FrameBuffer); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_framebuffer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*FrameSequence); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_framebuffer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*DrawResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_framebuffer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*LengthRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_framebuffer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*LengthResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_framebuffer_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 6,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
GoTypes: file_framebuffer_proto_goTypes,
|
||||
DependencyIndexes: file_framebuffer_proto_depIdxs,
|
||||
EnumInfos: file_framebuffer_proto_enumTypes,
|
||||
MessageInfos: file_framebuffer_proto_msgTypes,
|
||||
}.Build()
|
||||
File_framebuffer_proto = out.File
|
||||
file_framebuffer_proto_rawDesc = nil
|
||||
file_framebuffer_proto_goTypes = nil
|
||||
file_framebuffer_proto_depIdxs = nil
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ context.Context
|
||||
var _ grpc.ClientConn
|
||||
var _ grpc.ClientConnInterface
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
const _ = grpc.SupportPackageIsVersion4
|
||||
const _ = grpc.SupportPackageIsVersion6
|
||||
|
||||
// DrawerClient is the client API for Drawer service.
|
||||
//
|
||||
|
@ -332,13 +588,15 @@ type DrawerClient interface {
|
|||
DrawFrame(ctx context.Context, in *FrameBuffer, opts ...grpc.CallOption) (*DrawResponse, error)
|
||||
// DrawFrames draws a series of frames
|
||||
DrawFrames(ctx context.Context, in *FrameSequence, opts ...grpc.CallOption) (*DrawResponse, error)
|
||||
// GetLength returns the length of the strip
|
||||
GetLength(ctx context.Context, in *LengthRequest, opts ...grpc.CallOption) (*LengthResponse, error)
|
||||
}
|
||||
|
||||
type drawerClient struct {
|
||||
cc *grpc.ClientConn
|
||||
cc grpc.ClientConnInterface
|
||||
}
|
||||
|
||||
func NewDrawerClient(cc *grpc.ClientConn) DrawerClient {
|
||||
func NewDrawerClient(cc grpc.ClientConnInterface) DrawerClient {
|
||||
return &drawerClient{cc}
|
||||
}
|
||||
|
||||
|
@ -360,12 +618,37 @@ func (c *drawerClient) DrawFrames(ctx context.Context, in *FrameSequence, opts .
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *drawerClient) GetLength(ctx context.Context, in *LengthRequest, opts ...grpc.CallOption) (*LengthResponse, error) {
|
||||
out := new(LengthResponse)
|
||||
err := c.cc.Invoke(ctx, "/Drawer/GetLength", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// DrawerServer is the server API for Drawer service.
|
||||
type DrawerServer interface {
|
||||
// DrawFrame draws one frame
|
||||
DrawFrame(context.Context, *FrameBuffer) (*DrawResponse, error)
|
||||
// DrawFrames draws a series of frames
|
||||
DrawFrames(context.Context, *FrameSequence) (*DrawResponse, error)
|
||||
// GetLength returns the length of the strip
|
||||
GetLength(context.Context, *LengthRequest) (*LengthResponse, error)
|
||||
}
|
||||
|
||||
// UnimplementedDrawerServer can be embedded to have forward compatible implementations.
|
||||
type UnimplementedDrawerServer struct {
|
||||
}
|
||||
|
||||
func (*UnimplementedDrawerServer) DrawFrame(context.Context, *FrameBuffer) (*DrawResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DrawFrame not implemented")
|
||||
}
|
||||
func (*UnimplementedDrawerServer) DrawFrames(context.Context, *FrameSequence) (*DrawResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DrawFrames not implemented")
|
||||
}
|
||||
func (*UnimplementedDrawerServer) GetLength(context.Context, *LengthRequest) (*LengthResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetLength not implemented")
|
||||
}
|
||||
|
||||
func RegisterDrawerServer(s *grpc.Server, srv DrawerServer) {
|
||||
|
@ -408,6 +691,24 @@ func _Drawer_DrawFrames_Handler(srv interface{}, ctx context.Context, dec func(i
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Drawer_GetLength_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(LengthRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DrawerServer).GetLength(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/Drawer/GetLength",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DrawerServer).GetLength(ctx, req.(*LengthRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
var _Drawer_serviceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "Drawer",
|
||||
HandlerType: (*DrawerServer)(nil),
|
||||
|
@ -420,6 +721,10 @@ var _Drawer_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "DrawFrames",
|
||||
Handler: _Drawer_DrawFrames_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetLength",
|
||||
Handler: _Drawer_GetLength_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "framebuffer.proto",
|
||||
|
|
|
@ -2,40 +2,23 @@ syntax = "proto3";
|
|||
|
||||
/*
|
||||
Layer defines some default layers for compositing animations onto for
|
||||
various purposes, and also defines some generic layers. Each service
|
||||
should be allocated a unique enum eventually.
|
||||
|
||||
In the future, this system should be replaced by a configuration file
|
||||
that assigns priorities to each service.
|
||||
various purposes.
|
||||
*/
|
||||
enum Layer {
|
||||
NONE = 0;
|
||||
// Well-known layers
|
||||
LIGHT = 10;
|
||||
COLOR = 20;
|
||||
NOTIFICATIONS = 90;
|
||||
// Public layers
|
||||
GENERAL_0 = 40;
|
||||
GENERAL_1 = 41;
|
||||
GENERAL_2 = 42;
|
||||
GENERAL_3 = 43;
|
||||
GENERAL_4 = 44;
|
||||
GENERAL_5 = 45;
|
||||
GENERAL_6 = 46;
|
||||
GENERAL_7 = 47;
|
||||
GENERAL_8 = 48;
|
||||
GENERAL_9 = 49;
|
||||
LIGHT = 1;
|
||||
COLOR = 2;
|
||||
NOTIFICATIONS = 8;
|
||||
PRIORITY = 9;
|
||||
}
|
||||
|
||||
/*
|
||||
FrameData represents either an array of dots or a fixed fill color to apply
|
||||
to all dots. Having two use cases makes it easier for applications to
|
||||
draw solid fill colors.
|
||||
FrameData represents an ARGB array of dots.
|
||||
*/
|
||||
message FrameData {
|
||||
// ARGB
|
||||
repeated fixed32 dots = 1;
|
||||
fixed32 fill = 2;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -45,8 +28,10 @@ message FrameData {
|
|||
*/
|
||||
message FrameBuffer {
|
||||
FrameData frame = 1;
|
||||
fixed32 timestamp = 3;
|
||||
Layer layer = 4;
|
||||
// Time offset from start of frame in milliseconds
|
||||
fixed32 timestamp = 2;
|
||||
// Layer to apply the frame to
|
||||
Layer layer = 3;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -59,15 +44,26 @@ message FrameBuffer {
|
|||
*/
|
||||
message FrameSequence {
|
||||
repeated FrameBuffer frames = 1;
|
||||
// Number of times to loop the sequence
|
||||
int32 loop = 2;
|
||||
}
|
||||
|
||||
message DrawResponse {
|
||||
}
|
||||
|
||||
message LengthRequest {
|
||||
}
|
||||
|
||||
message LengthResponse {
|
||||
fixed32 length = 1;
|
||||
}
|
||||
|
||||
service Drawer {
|
||||
// DrawFrame draws one frame
|
||||
rpc DrawFrame (FrameBuffer) returns (DrawResponse) {}
|
||||
// DrawFrames draws a series of frames
|
||||
rpc DrawFrames (FrameSequence) returns (DrawResponse) {}
|
||||
// GetLength returns the length of the strip
|
||||
rpc GetLength (LengthRequest) returns (LengthResponse) {}
|
||||
}
|
||||
|
||||
|
|
9
go.mod
9
go.mod
|
@ -2,10 +2,9 @@ module github.com/serverwentdown/leet
|
|||
|
||||
go 1.12
|
||||
|
||||
replace github.com/rpi-ws281x/rpi-ws281x-go => github.com/serverwentdown/rpi-ws281x-go v1.0.4
|
||||
|
||||
require (
|
||||
github.com/golang/protobuf v1.3.1
|
||||
github.com/rpi-ws281x/rpi-ws281x-go v0.0.0-00010101000000-000000000000
|
||||
google.golang.org/grpc v1.19.1
|
||||
github.com/golang/protobuf v1.4.0
|
||||
github.com/rpi-ws281x/rpi-ws281x-go v1.0.5
|
||||
google.golang.org/grpc v1.29.0
|
||||
google.golang.org/protobuf v1.21.0
|
||||
)
|
||||
|
|
61
go.sum
61
go.sum
|
@ -1,6 +1,13 @@
|
|||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
|
@ -8,23 +15,77 @@ github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM
|
|||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0 h1:aRz0NBceriICVtjhCgKkDvl+RudKu1CT6h0ZvUTrNfE=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/rpi-ws281x/rpi-ws281x-go v1.0.5 h1:XZ4S5je+Sj3PKbTKGcsg92AhThZHQ0jnYG5YFqRU3YQ=
|
||||
github.com/rpi-ws281x/rpi-ws281x-go v1.0.5/go.mod h1:Swt7ePLxEtCqQvFZZPHsnfstkaVRVICwC8Di6SdeO30=
|
||||
github.com/serverwentdown/rpi-ws281x-go v1.0.4 h1:Ti+oxrYcU/lp0NjBl/y0EMcJp9gqvKJka2zFSCM2r2c=
|
||||
github.com/serverwentdown/rpi-ws281x-go v1.0.4/go.mod h1:NJ9ZCa/NPRHHb841qr+G9IEJe1J4aOgBMwkf9xyDnmk=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.19.1 h1:TrBcJ1yqAl1G++wO39nD/qtgpsW9/1+QGrluyMGEYgM=
|
||||
google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo=
|
||||
google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
|
|
4
main.go
4
main.go
|
@ -9,7 +9,7 @@ import (
|
|||
)
|
||||
|
||||
const listen = ":5000"
|
||||
const length = 287
|
||||
const length = 275
|
||||
|
||||
func main() {
|
||||
log.Print("starting server")
|
||||
|
@ -20,7 +20,7 @@ func main() {
|
|||
}
|
||||
s := grpc.NewServer()
|
||||
|
||||
drawer, err := NewDrawer(287)
|
||||
drawer, err := NewDrawer(length)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to setup WS281x library: %v", err)
|
||||
}
|
||||
|
|
14
server.go
14
server.go
|
@ -5,6 +5,7 @@ package main // import "github.com/serverwentdown/leet"
|
|||
import (
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/serverwentdown/leet/framebuffer"
|
||||
)
|
||||
|
@ -21,12 +22,14 @@ func NewServer(drawer *Drawer) *Server {
|
|||
}
|
||||
|
||||
func (s *Server) DrawFrame(ctx context.Context, in *framebuffer.FrameBuffer) (*framebuffer.DrawResponse, error) {
|
||||
log.Print("DrawFrame")
|
||||
s.drawer.SetLayerOrFill(int32(in.Layer), in.Frame.Dots, in.Frame.Fill)
|
||||
s.drawer.SetLayer(int32(in.Layer), in.Frame.Dots)
|
||||
timeDrawStart := time.Now()
|
||||
err := s.drawer.Draw()
|
||||
timeDrawEnd := time.Now()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Printf("Draw took %d milliseconds", timeDrawEnd.Sub(timeDrawStart)/1000/1000)
|
||||
return &framebuffer.DrawResponse{}, nil
|
||||
}
|
||||
|
||||
|
@ -34,3 +37,10 @@ func (s *Server) DrawFrames(ctx context.Context, in *framebuffer.FrameSequence)
|
|||
log.Print("Received FrameSequence, but not implemented")
|
||||
return &framebuffer.DrawResponse{}, nil
|
||||
}
|
||||
|
||||
func (s *Server) GetLength(ctx context.Context, in *framebuffer.LengthRequest) (*framebuffer.LengthResponse, error) {
|
||||
length := uint32(s.drawer.Length)
|
||||
return &framebuffer.LengthResponse{
|
||||
Length: length,
|
||||
}, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue