chore: use es6 for cloudevents.js (#73)

Signed-off-by: Grant Timmerman <timmerman+devrel@google.com>
This commit is contained in:
Grant Timmerman 2020-04-29 13:17:51 -07:00 committed by GitHub
parent d042ef1dbb
commit 12ac181300
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 111 additions and 116 deletions

View File

@ -6,122 +6,117 @@ const Formatter = require("./formats/json/formatter.js");
*
* https://en.wikipedia.org/wiki/Builder_pattern
*/
function Cloudevent(_spec, _formatter) {
this.spec = (_spec) ? new _spec(Cloudevent) : new Spec(Cloudevent);
this.formatter = (_formatter) ? new _formatter() : new Formatter();
class CloudEvent {
constructor(_spec, _formatter) {
this.spec = (_spec) ? new _spec(CloudEvent) : new Spec(CloudEvent);
this.formatter = (_formatter) ? new _formatter() : new Formatter();
// The map of extensions
this.extensions = {};
// The map of extensions
this.extensions = {};
}
getFormats() {
return { json: Formatter };
}
format() {
// Check the constraints
this.spec.check();
// To run asData()
this.getData();
// Then, format
return this.formatter.format(this.spec.payload);
}
toString() {
return this.formatter.toString(this.spec.payload);
}
type(type) {
this.spec.type(type);
return this;
}
getType() {
return this.spec.getType();
}
specversion(version) {
return this.spec.specversion(version);
}
getSpecversion() {
return this.spec.getSpecversion();
}
source(_source) {
this.spec.source(_source);
return this;
}
getSource() {
return this.spec.getSource();
}
id(_id) {
this.spec.id(_id);
return this;
}
getId() {
return this.spec.getId();
}
time(_time) {
this.spec.time(_time);
return this;
}
getTime() {
return this.spec.getTime();
}
schemaurl(_schemaurl) {
this.spec.schemaurl(_schemaurl);
return this;
}
getSchemaurl() {
return this.spec.getSchemaurl();
}
dataContenttype(_contenttype) {
this.spec.dataContenttype(_contenttype);
return this;
}
getDataContenttype() {
return this.spec.getDataContenttype();
}
data(_data) {
this.spec.data(_data);
return this;
}
getData() {
return this.spec.getData();
}
addExtension(key, value) {
this.spec.addExtension(key, value);
// Stores locally
this.extensions[key] = value;
return this;
}
getExtensions() {
return this.extensions;
}
}
/*
* To format the payload using the formatter
*/
Cloudevent.prototype.format = function() {
// Check the constraints
this.spec.check();
// To run asData()
this.getData();
// Then, format
return this.formatter.format(this.spec.payload);
};
Cloudevent.prototype.toString = function() {
return this.formatter.toString(this.spec.payload);
};
Cloudevent.prototype.type = function(type) {
this.spec.type(type);
return this;
};
Cloudevent.prototype.getType = function() {
return this.spec.getType();
};
Cloudevent.prototype.specversion = function(version) {
return this.spec.specversion(version);
};
Cloudevent.prototype.getSpecversion = function() {
return this.spec.getSpecversion();
};
Cloudevent.prototype.source = function(_source) {
this.spec.source(_source);
return this;
};
Cloudevent.prototype.getSource = function() {
return this.spec.getSource();
};
Cloudevent.prototype.id = function(_id) {
this.spec.id(_id);
return this;
};
Cloudevent.prototype.getId = function() {
return this.spec.getId();
};
Cloudevent.prototype.time = function(_time) {
this.spec.time(_time);
return this;
};
Cloudevent.prototype.getTime = function() {
return this.spec.getTime();
};
Cloudevent.prototype.schemaurl = function(_schemaurl) {
this.spec.schemaurl(_schemaurl);
return this;
};
Cloudevent.prototype.getSchemaurl = function() {
return this.spec.getSchemaurl();
};
Cloudevent.prototype.dataContenttype = function(_contenttype) {
this.spec.dataContenttype(_contenttype);
return this;
};
Cloudevent.prototype.getDataContenttype = function() {
return this.spec.getDataContenttype();
};
Cloudevent.prototype.data = function(_data) {
this.spec.data(_data);
return this;
};
Cloudevent.prototype.getData = function() {
return this.spec.getData();
};
Cloudevent.prototype.addExtension = function(key, value) {
this.spec.addExtension(key, value);
// Stores localy
this.extensions[key] = value;
return this;
};
Cloudevent.prototype.getExtensions = function() {
return this.extensions;
};
/*
* Export the formats
*/
Cloudevent.formats = {
json: Formatter,
"json0.1": Formatter
};
module.exports = Cloudevent;
module.exports = CloudEvent;